From 7ca7fa14f51ef7a3550a764fe3a577f92fdd2308 Mon Sep 17 00:00:00 2001
From: "real3t@gmail.com" <>
Date: Sun, 2 Apr 2017 17:05:29 +0000
Subject: [PATCH] =?UTF-8?q?refs=20#3692=20:=20Int=C3=A9gration=20de=20la?=
 =?UTF-8?q?=20library=20MediaElement=20en=204.0.2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Testé sous Windows 10 avec Edge, FireFox et Chrome en utilisant les .mp4, .ogg et .mp3 utilisés par http://www.mediaelementjs.com/

Pas testé les skins.
---
 .gitattributes                                |    16 -
 ...T CHANGE THESE FILES. USE -src- FOLDER.txt |     0
 lib/mejs/background.png                       |   Bin 166 -> 0 bytes
 lib/mejs/bigplay.fw.png                       |   Bin 79426 -> 0 bytes
 lib/mejs/bigplay.png                          |   Bin 3001 -> 0 bytes
 lib/mejs/bigplay.svg                          |    14 -
 lib/mejs/controls-ted.png                     |   Bin 1559 -> 0 bytes
 lib/mejs/controls-wmp-bg.png                  |   Bin 1960 -> 0 bytes
 lib/mejs/controls-wmp.png                     |   Bin 5511 -> 0 bytes
 lib/mejs/controls.fw.png                      |   Bin 80753 -> 0 bytes
 lib/mejs/controls.png                         |   Bin 1892 -> 0 bytes
 lib/mejs/controls.svg                         |     1 -
 lib/mejs/flashmediaelement-cdn.swf            |   Bin 57058 -> 0 bytes
 lib/mejs/flashmediaelement.swf                |   Bin 57052 -> 0 bytes
 lib/mejs/loading.gif                          |   Bin 6224 -> 0 bytes
 lib/mejs/mediaelement-and-player.js           | 13124 ++++++++++------
 lib/mejs/mediaelement-and-player.min.js       |   209 +-
 lib/mejs/mediaelement.js                      |  5978 ++++---
 lib/mejs/mediaelement.min.js                  |   104 +-
 lib/mejs/mediaelementplayer.css               |  1395 +-
 lib/mejs/mediaelementplayer.js                |  9806 ++++++++----
 lib/mejs/mediaelementplayer.min.css           |     2 +-
 lib/mejs/mediaelementplayer.min.js            |   134 +-
 lib/mejs/mejs-skins.css                       |   289 -
 lib/mejs/silverlightmediaelement.xap          |   Bin 12461 -> 0 bytes
 modeles/video.html                            |     8 +-
 paquet.xml                                    |     2 +-
 27 files changed, 20342 insertions(+), 10740 deletions(-)
 delete mode 100644 lib/mejs/DO NOT CHANGE THESE FILES. USE -src- FOLDER.txt
 delete mode 100644 lib/mejs/background.png
 delete mode 100644 lib/mejs/bigplay.fw.png
 delete mode 100644 lib/mejs/bigplay.png
 delete mode 100644 lib/mejs/bigplay.svg
 delete mode 100644 lib/mejs/controls-ted.png
 delete mode 100644 lib/mejs/controls-wmp-bg.png
 delete mode 100644 lib/mejs/controls-wmp.png
 delete mode 100644 lib/mejs/controls.fw.png
 delete mode 100644 lib/mejs/controls.png
 delete mode 100644 lib/mejs/controls.svg
 delete mode 100644 lib/mejs/flashmediaelement-cdn.swf
 delete mode 100644 lib/mejs/flashmediaelement.swf
 delete mode 100644 lib/mejs/loading.gif
 delete mode 100644 lib/mejs/mejs-skins.css
 delete mode 100644 lib/mejs/silverlightmediaelement.xap

diff --git a/.gitattributes b/.gitattributes
index dc8a3146..44b23e97 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -200,20 +200,6 @@ lib/getid3/write.metaflac.php -text
 lib/getid3/write.php -text
 lib/getid3/write.real.php -text
 lib/getid3/write.vorbiscomment.php -text
-lib/mejs/DO[!!-~]NOT[!!-~]CHANGE[!!-~]THESE[!!-~]FILES.[!!-~]USE[!!-~]-src-[!!-~]FOLDER.txt -text
-lib/mejs/background.png -text
-lib/mejs/bigplay.fw.png -text
-lib/mejs/bigplay.png -text
-lib/mejs/bigplay.svg -text
-lib/mejs/controls-ted.png -text
-lib/mejs/controls-wmp-bg.png -text
-lib/mejs/controls-wmp.png -text
-lib/mejs/controls.fw.png -text
-lib/mejs/controls.png -text
-lib/mejs/controls.svg -text
-lib/mejs/flashmediaelement-cdn.swf -text
-lib/mejs/flashmediaelement.swf -text
-lib/mejs/loading.gif -text
 lib/mejs/mediaelement-and-player.js -text
 lib/mejs/mediaelement-and-player.min.js -text
 lib/mejs/mediaelement.js -text
@@ -222,8 +208,6 @@ lib/mejs/mediaelementplayer.css -text
 lib/mejs/mediaelementplayer.js -text
 lib/mejs/mediaelementplayer.min.css -text
 lib/mejs/mediaelementplayer.min.js -text
-lib/mejs/mejs-skins.css -text
-lib/mejs/silverlightmediaelement.xap -text
 /medias_administrations.php -text
 /medias_autoriser.php -text
 /medias_fonctions.php -text
diff --git a/lib/mejs/DO NOT CHANGE THESE FILES. USE -src- FOLDER.txt b/lib/mejs/DO NOT CHANGE THESE FILES. USE -src- FOLDER.txt
deleted file mode 100644
index e69de29b..00000000
diff --git a/lib/mejs/background.png b/lib/mejs/background.png
deleted file mode 100644
index fd428412ae26af13dab448ec833b1cb603e37ee9..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 166
zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-$r9IylHmNblJdl&R0hYC{G?O`
z&)mfH)S%SFl*+=BsWw1G9-c0aAr-gYoHrC?P~c(M$o@YsOF*1w?-55oQ{94SCl?~X
dlYaFB3@*Kl;yd0~_5jUf@O1TaS?83{1OV-(FBAX(

diff --git a/lib/mejs/bigplay.fw.png b/lib/mejs/bigplay.fw.png
deleted file mode 100644
index 66d0e3cb73ceec0b1ffc7cdd4c1bc5edaf960556..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 79426
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

diff --git a/lib/mejs/bigplay.png b/lib/mejs/bigplay.png
deleted file mode 100644
index 694553e31c387188b6bde397a5200c212aff2dc5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 3001
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
J;~KO(@jp;uhBg2I

diff --git a/lib/mejs/bigplay.svg b/lib/mejs/bigplay.svg
deleted file mode 100644
index 2b781700..00000000
--- a/lib/mejs/bigplay.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<svg id="bigplay" viewBox="0 0 100 200" style="background-color:#ffffff00" version="1.1"
-	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
-	x="0px" y="0px" width="100px" height="200px"
->
-	<g id="dark">
-		<path id="Polygon"  d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff" opacity="0.75" />
-		<path id="Ellipse" d="M 13 50.5 C 13 29.7891 29.7891 13 50.5 13 C 71.2109 13 88 29.7891 88 50.5 C 88 71.2109 71.2109 88 50.5 88 C 29.7891 88 13 71.2109 13 50.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="0.75"/>
-	</g>
-	<g id="light">
-		<path id="Polygon2"  d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff" opacity="1.0" />
-		<path id="Ellipse2" d="M 13 150.5 C 13 129.7891 29.7891 113 50.5 113 C 71.2109 113 88 129.7891 88 150.5 C 88 171.211 71.2109 188 50.5 188 C 29.7891 188 13 171.211 13 150.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="1.0"/>
-	</g>
-</svg>
\ No newline at end of file
diff --git a/lib/mejs/controls-ted.png b/lib/mejs/controls-ted.png
deleted file mode 100644
index 3aac05aa83cb7fed54831a19d85a8c267e939720..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1559
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
JPDHLkV1l~`FgySN

diff --git a/lib/mejs/controls-wmp-bg.png b/lib/mejs/controls-wmp-bg.png
deleted file mode 100644
index 89bb9b95602ecfca6290f6006f817da365da7b90..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1960
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
A)c^nh

diff --git a/lib/mejs/controls-wmp.png b/lib/mejs/controls-wmp.png
deleted file mode 100644
index 4775ef5b02faf2b826d35dfc72511b6b27fea87b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5511
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
JPDHLkV1kZU;|2f#

diff --git a/lib/mejs/controls.fw.png b/lib/mejs/controls.fw.png
deleted file mode 100644
index e27682ae107408748ac91805eee0e1554d618cd5..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 80753
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
MQc9BL;$H&(KQ_Ao-2eap

diff --git a/lib/mejs/controls.png b/lib/mejs/controls.png
deleted file mode 100644
index f6a857d800b64264443af4609e0ebf7175593d8f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 1892
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
C_uXs&

diff --git a/lib/mejs/controls.svg b/lib/mejs/controls.svg
deleted file mode 100644
index af3bd416..00000000
--- a/lib/mejs/controls.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?>
<!-- Generator: Adobe Fireworks CS6, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg id="controls.fw-Page%201" viewBox="0 0 144 32" style="background-color:#ffffff00" version="1.1"
	xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
	x="0px" y="0px" width="144px" height="32px"
>
	<defs>
		<radialGradient id="gradient1" cx="50%" cy="50%" r="50%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#f2f2f2" stop-opacity="0.2" offset="100%"/>
		</radialGradient>
		<linearGradient id="gradient2" x1="50%" y1="-7.8652%" x2="50%" y2="249.6629%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient3" x1="50%" y1="0%" x2="50%" y2="238.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient4" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient5" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient6" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient7" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient8" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient9" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient10" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient11" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient12" x1="50%" y1="0%" x2="50%" y2="238.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient13" x1="40%" y1="-140%" x2="40%" y2="98.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient14" x1="50%" y1="0%" x2="50%" y2="238.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient15" x1="60%" y1="-140%" x2="60%" y2="98.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient16" x1="50%" y1="0%" x2="50%" y2="298.4375%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient17" x1="50%" y1="0%" x2="50%" y2="238.75%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient18" x1="50%" y1="-200%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient19" x1="50%" y1="-200%" x2="50%" y2="110.9375%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient20" x1="55%" y1="0%" x2="55%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/>
		</linearGradient>
		<linearGradient id="gradient21" x1="50%" y1="0%" x2="50%" y2="100%">
			<stop stop-color="#ffffff" stop-opacity="1" offset="0%"/>
			<stop stop-color="#c8c8c8" stop-opacity="1" offset="99.4444%"/>
		</linearGradient>
	</defs>
	<g id="BG">
	</g>
	<g id="controls">
		<path id="Line" d="M 98.5 7.5 L 109.5 7.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path id="Line2" d="M 98.5 3.5 L 109.5 3.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path id="Line3" d="M 98.5 11.5 L 109.5 11.5 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path id="Ellipse" d="M 108 11.5 C 108 10.6716 108.4477 10 109 10 C 109.5523 10 110 10.6716 110 11.5 C 110 12.3284 109.5523 13 109 13 C 108.4477 13 108 12.3284 108 11.5 Z" fill="#ffffff"/>
		<path id="Ellipse2" d="M 104 7.5 C 104 6.6716 104.4477 6 105 6 C 105.5523 6 106 6.6716 106 7.5 C 106 8.3284 105.5523 9 105 9 C 104.4477 9 104 8.3284 104 7.5 Z" fill="#ffffff"/>
		<path id="Ellipse3" d="M 108 3.5 C 108 2.6716 108.4477 2 109 2 C 109.5523 2 110 2.6716 110 3.5 C 110 4.3284 109.5523 5 109 5 C 108.4477 5 108 4.3284 108 3.5 Z" fill="#ffffff"/>
	</g>
	<g id="backlight">
		<g id="off">
			<rect x="83" y="21" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/>
		</g>
		<g id="on">
			<path id="Ellipse4" d="M 81 8 C 81 5.2385 84.134 3 88 3 C 91.866 3 95 5.2385 95 8 C 95 10.7615 91.866 13 88 13 C 84.134 13 81 10.7615 81 8 Z" fill="url(#gradient1)"/>
			<rect x="83" y="5" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/>
		</g>
	</g>
	<g id="loop">
		<g id="on2">
			<path d="M 73.795 4.205 C 75.2155 4.8785 76.2 6.3234 76.2 8 C 76.2 10.3196 74.3196 12.2 72 12.2 C 69.6804 12.2 67.8 10.3196 67.8 8 C 67.8 6.3234 68.7845 4.8785 70.205 4.205 L 68.875 2.875 C 67.1501 3.9289 66 5.8306 66 8 C 66 11.3138 68.6862 14 72 14 C 75.3138 14 78 11.3138 78 8 C 78 5.8306 76.8499 3.9289 75.125 2.875 L 73.795 4.205 Z" fill="url(#gradient2)"/>
			<path d="M 71 2 L 66 2 L 71 7 L 71 2 Z" fill="url(#gradient3)"/>
		</g>
		<g id="off2">
			<path d="M 73.795 20.205 C 75.2155 20.8785 76.2 22.3234 76.2 24 C 76.2 26.3196 74.3196 28.2 72 28.2 C 69.6804 28.2 67.8 26.3196 67.8 24 C 67.8 22.3234 68.7845 20.8785 70.205 20.205 L 68.875 18.875 C 67.1501 19.9289 66 21.8306 66 24 C 66 27.3138 68.6862 30 72 30 C 75.3138 30 78 27.3138 78 24 C 78 21.8306 76.8499 19.9289 75.125 18.875 L 73.795 20.205 Z" fill="#a8a8b7"/>
			<path d="M 71 18 L 66 18 L 71 23 L 71 18 Z" fill="#a8a8b7"/>
		</g>
	</g>
	<g id="cc">
		<rect visibility="hidden" x="49" y="2" width="14" height="12" stroke="#b0b0b0" stroke-width="1" fill="none"/>
		<text visibility="hidden" x="49" y="17" width="14" fill="#ffffff" style="font-size: 10px; color: #ffffff; font-family: Arial; text-align: center; "><tspan><![CDATA[cc]]></tspan></text>
		<path d="M 55 7 C 50.2813 3.7813 50.063 12.9405 55 10 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path d="M 60 7 C 55.2813 3.7813 55.063 12.9405 60 10 " stroke="#ffffff" stroke-width="1" fill="none"/>
		<path d="M 50 3 L 62 3 L 62 13 L 50 13 L 50 3 ZM 49 2 L 49 14 L 63 14 L 63 2 L 49 2 Z" fill="url(#gradient4)"/>
		<rect x="49" y="2" width="14" height="12" fill="none"/>
	</g>
	<g id="volume">
		<g id="no%20sound">
			<rect x="17" y="5" width="5" height="6" fill="url(#gradient5)"/>
			<path d="M 21 5 L 25 2 L 25 14 L 21 11.0625 L 21 5 Z" fill="url(#gradient6)"/>
		</g>
		<g id="sound%20bars">
			<rect x="17" y="21" width="5" height="6" fill="url(#gradient7)"/>
			<path d="M 21 21 L 25 18 L 25 30 L 21 27.0625 L 21 21 Z" fill="url(#gradient8)"/>
			<path d="M 27 18 C 27 18 30.0625 17.375 30 24 C 29.9375 30.625 27 30 27 30 " stroke="#ffffff" stroke-width="1" fill="none"/>
			<path d="M 26 21.0079 C 26 21.0079 28.041 20.6962 27.9994 24 C 27.9577 27.3038 26 26.9921 26 26.9921 " stroke="#ffffff" stroke-width="1" fill="none"/>
		</g>
	</g>
	<g id="play/pause">
		<g id="play">
			<path id="Polygon" d="M 14 8.5 L 3 14 L 3 3 L 14 8.5 Z" fill="url(#gradient9)"/>
		</g>
		<g id="pause">
			<rect x="3" y="18" width="3" height="12" fill="url(#gradient10)"/>
			<rect x="10" y="18" width="3" height="12" fill="url(#gradient11)"/>
		</g>
	</g>
	<g id="fullscreen">
		<g id="enter%201">
			<path d="M 34 2 L 39 2 L 34 7 L 34 2 Z" fill="url(#gradient12)"/>
			<path d="M 34 14 L 39 14 L 34 9 L 34 14 Z" fill="url(#gradient13)"/>
			<path d="M 46 2 L 41 2 L 46 7 L 46 2 Z" fill="url(#gradient14)"/>
			<path d="M 46 14 L 41 14 L 46 9 L 46 14 Z" fill="url(#gradient15)"/>
		</g>
		<g id="exit">
			<path d="M 42 22 L 46 22 L 42 18 L 42 22 Z" fill="url(#gradient16)"/>
			<path d="M 38 22 L 38 18 L 34 22 L 38 22 Z" fill="url(#gradient17)"/>
			<path d="M 38 26 L 34 26 L 38 30 L 38 26 Z" fill="url(#gradient18)"/>
			<path d="M 42 26 L 42 30 L 46 26 L 42 26 Z" fill="url(#gradient19)"/>
		</g>
	</g>
	<g id="stop">
		<rect x="115" y="3" width="10" height="10" fill="url(#gradient20)"/>
	</g>
	<g id="chooser">
		<path d="M 135.2346 6.1522 C 136.2551 5.7295 137.4251 6.2141 137.8478 7.2346 C 138.2704 8.2551 137.7859 9.425 136.7654 9.8478 C 135.7449 10.2705 134.5749 9.7859 134.1522 8.7654 C 133.7295 7.7449 134.2141 6.5749 135.2346 6.1522 ZM 133.2735 1.4176 L 136 4.0054 L 138.7265 1.4176 L 138.8246 5.1754 L 142.5824 5.2735 L 139.9946 8 L 142.5824 10.7265 L 138.8246 10.8246 L 138.7265 14.5824 L 136 11.9946 L 133.2735 14.5824 L 133.1754 10.8246 L 129.4176 10.7265 L 132.0054 8 L 129.4176 5.2735 L 133.1754 5.1754 L 133.2735 1.4176 Z" fill="url(#gradient21)"/>
	</g>
</svg>
\ No newline at end of file
diff --git a/lib/mejs/flashmediaelement-cdn.swf b/lib/mejs/flashmediaelement-cdn.swf
deleted file mode 100644
index 9b222e9cf6799975243bf9621ebe76bdcecbf6b3..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 57058
zcmb5UV{j!*7d0A9>||owwrxx>6Ki7I$%$>-n%GWGY}>ZY6Wr&$x9*?s-&eJ2SMSwb
z)f?TtySiFjLk&4T1su#{eX`qAH+ks=1`wu|jvMN$CgBUk9Z$HTk_-+lx|SU>wCHF^
zWayIKr-eEhInKzrpv%@Q@k9KVnml_N#ft8|afxYXW=cj1V`}Ea&E~@-V!n@1&&|cl
z%8Y(j`^%>Djo^P`M({;wM!Z?VAp|vVD%j;90rC4fINlsW`2iN!lrwqaH*SW4ZOWKU
zk~ov8NXeEyV_aMwud~_a<RMQ~GntU%U^v<xoa~*fY<(}9btU`8Q**tU&Y}O@stB|-
zeIs7wl~hzlfv0czkdZPjOYd4m!Q_@j^MF-96_V*)RYdjQDK{OTzq(``CNxQDI#s{D
zKo-8P&10ISWm7{d!|Qa6rVHlh)~l;dN!x#T>3}&2%k}tIRBlcEhP0*`3K%*Qh-R2q
zPYGGZ1(Ts}qSEd-rMb(o^o{C68aj;7(zv7Q$cjcsvA-=amSR<t=KhRnOY=`IOr>V%
zVqd9`tC^WTxyhR&W5=XsJs!h{0RsuECkNQviA)zaj09rgsaRP<W#wcDCL=`4i}s1<
zT9P0zcrs01^$z05&WKQmg|cam1`wlmrAgLV5_WqAxH(6L`=k9Bri!g5O_8L!6SKhk
z!##`l|2Ulr1Caz0lapOSS^D^%nuUQ|LbcDJ#ahVE(E)!0bhtYbXAiQFrGMNBHVuJQ
zWMQK>#nEXe2?NS#m~i?SKGZTlQxP;^xe<2Ia<Nh)Qlq@Q^`9=80D8JiYYbXUrrpP$
zgir6=6KY()o`F@X=Bdho_ObTmH|)R*U-x&S7s3<w?HiaLmv7^*dH)IU@!qh2FVV6f
z^q{1m-+hdIFo84BJ1DVm88{96gUpLK9UPA?|JpXf?Q}Zx&H>e+{<;SvM5C_O@YLe(
zSJy^Izc*`a><nSXa?r{B%Leume3}BK;EtyQ`BRRiiQk8(VV5p0$Y#9z8l%Ne>(_wC
zRqUCk{j=LcVQYv6x2?C^@zhoZs1g(V;$ZqF{jGDP6SQx+fMC-7kOufVF1D_mwBE0o
z;xcIOIQ;piv)1W*T5G2`jri4lU{b{$dIo_JL4f6Epu=zes|qwg6P4xuS~lj000975
zh*(UK=p^}m`|tP(tl>}+w|xYi)!NjKfgXe>8r7fS6gI=-vL0fkClQ+=5kOa^l#a6p
zV?Cc{->&=V%Z{H9xMdt=b_|uPb)blUo;$JWv(EFc%N92PMqjebteuA=Sr1TLkC(6a
z#hLAn;&#K|rw5~hnj2d}^_x3s4zv~PZYnOnm*vJVWU5-#H4q{Whvh`zNu*!AEdEMK
z@pks}#q|2<E_F!HpELut6?@{Y$Fh|oa!y8~sR0k=n3>3l@zj6E40>31!Deflt+K1*
z>h}v}_O%O2A0AS}Q<|V{;*=h*kGsW*YQ`Hy+t>Z}<Eih68tRo6RO0UZ@A9|S6=>u<
zm)<5#4=LS;!g0{pjyzpvGKPNb$#3iPAxeb58cLB{giTkg$)~MnE)vbrL}E}qt{a~r
zrH_r{pHBiyO#S?G7t5M=RbKZOKl*nxTP|atC1>IyFFe=b$;Rhl(mZBlk0M3`-U1mJ
z7d}U2WqY6JeAUJlFP^%}ABH9hL(M-qVr81kO+5C9@t*-}Qp<T2FCMn9J?t&nua9v#
z!3voM@n7$L+Vk87-ef&oXHS}-;B$|sLp4jJ!{*2M&lPOt4@wu#2&Ulo9p43?wO0Sf
zkHUae=PKhucdpGCpj2V2J{h$sTD7m60_9}$?3SMo2XAY-%MC_>prZ?T!V?2Y&^i;$
zBR)w)xZF|9hNM8rjz#FxKgs}i`0)3b?PJn`8-Us<D$b|!6U;ISE5%o-d|PFX@1dBa
zp#6Q=Q<p7sWOE}tf=s+S_?%Fu`+fB!inYFvYx5sspUwIc&Zic}lhKwG35&nSPqT{#
z3__XXYM*i*Y5j3AoNKUa`PC<I&5n-7gb6{^c04|bo4)2_&#tn4?60;*B~()j2Uhq3
z-hlVHiiql)9AbkFHrMfFW*|Z0mi@$DP*~uf*dE!xP0=F=B|6QXlXLmj5;=Oze-BTX
z(`+gG<o4$TSOJo^uW2YgHteqquv>NS($859C55R++twG@S31-lX&ydvGNGJ|KwLt#
zWiHYbj%tcRl)Si1pf=fP5hSpxpmOFPFX)J+<2{jTN8WZyXHm@dD?&&|c*8^7xE;Xo
z+IlepYiXM)=f>S++oR^gYnE)R;tmqIO3HwrSvlFF`<TfG$JhtvExxMZx2wpER=~w3
zsa;9(=cg3)ysW)z%w4zVDOOSUPhp3P80)E&cGr=Csu9RtYHzw9md}Xub0YV<&L;v!
zA~#YaA`G2L(af{~c(@-MAo79GiH-aec_he{vS>vw#*Qiu($v<{r_IvO7xy&V^yPb!
z`z+xTKv&4i^ij4ud6r+e5ke4jZN-xT?kRJ`>eA)vlt#05qRtUxSZfIONN&``hO^UA
z2ymPfXdi4@=5t_s)((LuOj(ur`2rg2?4qXD1A2`3IEMR<`k(FG+z^89Mg-H8Ku6`=
zY%P#0iF<>s=X(I*J?y8sr>;8pjqPYYdchQYuNJN|+@-|s2qEd9)a~%Q%||%{aEG4S
z?9JPih>V$TPTrawQ&))Uo?boS>ql`CmfXC}bY~&+vCU9FWZ?H3+!2Yk?Zhf?9{L$l
zy&`ble(1&by^>=l&BRy4qe7sc|CBzu``LM?J`oO0aGDco@q7e{V$eWUA+QkmRulHT
zn~}ISBE0y8=k_E|mffBfF67mzJk(ZO0ef?n<v1r>RJbvEgroz3Y(I`?-X>E#QHFlw
zcmfk*noHfaJ<p{-)0k9IYP$vO<P4W-<%;iPm#EeN%upXXL5{jUON)KsdH>aMdc2OZ
zKG3L*5%O4dd0#6KW+Z+YU+*%l{z#py77|oEs4?wUPZp^@@AwXQqOEuKtI%!ydKh~M
z<KPBnE$^IS=QMG;p1<bX&S6Ilu=PX{b)E8(VQ?h9-dP5%*!bSgol%h4Ziyz&5Jr3{
zcU+QMzqW61J4YSt2;_nGm-;ucdrUKB9R_U4csATkpF7gj#v~QHPw$WGQk*_hv%x7t
zlDzOjspyx6823_WGbhu6r&_JTM*JDFsHRZ596Z$5Lkl`$dZd_jn;v6Iyk%X!)Y%kT
zn%*At%1vf#pc}03%FIjb1zAn386&LZpVG;78jLc0-nimC(}J~L!p--ucW)0)B5o;v
zo?+;AeD?o$EU7V}U0rhNKWzT%j}f)6io(<J0foBQJ&vZ0MCmjbcVw)Ors9ZQGlqK{
zowLjLWGzwPE{j}Cq2)1q!j)A(n$CDrasK#0AjIvoUbvVCSIdy;vCKU~_;d_qG%p$|
zF_S0f)+Dqtk9G1SYeI>*KUo|6;p;SObdji$_Mz8)+X!yCGi?Rm^L)7Wd)eCgUg&dP
zsD-hn-|M#IIttlm>E)7sreyYaqinOk-`;-T37!y>!V8Xz)m%xnJadAD1H^#y-%Mue
zOOj8c!;2XX0E_L)qYxuvgm&(EeSN2kcAlp>rGcGqrCo1BL-=oQ^N-CYUv>5GooQgb
z{KDeZ=CyimM~p{Rxb_%ww6@$w(+`u!c*y#7EoBsIubf+st#F4u6C<O#?v=`|f2hKr
zYlX_J;p9brFYo8)=%t*X>Q28U@2*Tq=&P<pzSEG_V_?^DyhiUj2;mPm?E-W%LwIVQ
zscKmwV;CH>=}@^Irznzy0FD`;{p^TyBePL?hk)g3s%1sHEK&64nk2|i+xN3J?@w7`
zbc`(puxq36Z9(Y@AX(?{VI!mf6;h;~O8Ig35xs0~o*dFuNhbK2rnFGSWWU)?;qj}r
z7Jc1=j(4w`R?Q60fI@(m$HDO}SNAG&29#WO-&BjCq7v6mnPf=jzO07*ID+4;nwZ<s
z^4Dh}S@h)R^A@jl=@uSv_@lp9?dB5=aF|v_xq_u^Ew2U8(rU0TYcRPv*C1;FsxC6V
zFK88!eFwf%Lttt!uMP+c)D8FC#*M499f8!h9qv9eu*vLw`JG_qHYpB|s$PDtq4CQk
z#_tKH-+$hO_yzL;Q}l3JJ<=WSs#5yWYJ)mgQ1fyq%RJP!wMQ#+<RW*?-$%>)LSm^S
zNPde4P7AAiTn5X1)~pZ$?zS#C(2ykd?z|S;LYfr;hL7-Kg@AHPJdM?1gjKN*EIY>N
z++&)W+82v%`L3v<VMYF~z*hw%r1#G;1jL)QSpa?mJ+)T}Am2+TRUi`zg@ME<!z-p9
zM1bB;Pa=6lx2(cuaugCp(bndl4C1yjKx3p#jAB_GF0X`Oz66^9(NRxfvMTDW_b@FP
zFWI2CnJX>Kjz0>OFm82Ud;-4mc|R3H2L&}4BR_`hABe?;cvytrHMM)c<cm$A?s&NV
zJ?{3OsmY$sS5vs?svj?(!mYRqz+FUEpGY!>{-Y)BS7*CAo!jR^&uI!me1EGxc+jTT
z|2*h=$y}Z+7_OFBhl=^epKbV-IwxK$3RxMp^;H&!=<#!XdI@=NNP!8js|#>Ro6@$F
z=~8-SLrU1rPWAK@GmfLcKr<tzB)f95byvYc+bjSbu5mA@S#09T9V~n6@2!l=O!(rZ
z-&?t~(hfwtP9rYaK_j6V@X%LHR5Gdm2AX^Oy>0!BeZgL2iFtTZQ|sR`wUF`VA$=J(
zC_Cx#y`2cVr~VR5Vq-3?Y1s|-Tnh4|8xhtM5j<~rJ)Nt>nph(z9-1P~J94DAzG8+k
z?p#xz+2L6;Us4^f|EQ*x{wBM_e_xn?^)QmWMd?;tIfAZbF4ZNi9hw(XLT2WFnCr13
z^J?~2Xm6_6|5N;wrC)91c2wS_cT{1W_1Q@%)MMj_81Z8w`}3``)^cK^k~)`s{ak(f
z-54J}4=$sJ<g0Q2z%SbSdzoEB;kYx#{N?+VJ|UN1T;LpXm@~m9R6Sens5OUYp~2Th
zbt0uIB=p2|henx^&+_xx^{j8B+1TxU6ts;Tf;8W_p!Djz7Z3;SHw+Nm3{zwRX7i_{
zvByE_wwL*qjNF8YrTzS3r%b^N*uYJ&Bq+G5X<xiqu$rQ$w3R>iJeY{6dWBi4rv!Hb
znUq*P1Bt%Bs7E@(o})sz;h4EnCQ&BTBQYD(67rD{-x!YnEGu6G(+<%GWl~}6p(4Sx
zHQ#@<h^3rgwIX7lQ|Wczq84_$!`cHZzY9IXK$>Q#SN2*caAVipDTfRXUUz|XhUxEd
zbtyj$f=h7EJuwW(2D=31A6(&#kt6urC3OgQ^%9q*Cn8Uz=sndqoB^!;5U$0E^9$b0
zH0(X}0&cn>iGL22W(`bCj+l2|t??c)_gk+IAxGdF4NAUbRW_jD8PshF3{qv_x5&fG
zYNfpXy5JtD0ALbrOqbENHsE)Zj0U8>fK{oykW2y!3)d8zNkzVIbPvP=m!7ZjgJLBx
z_67s+?YU_WP8cawGJ?5X-Z@;~mh0E`=pU6mOkX*GIho@Jk{D;P%Epjf_BkxG5`}K4
zan_=Y$AgPOWeY8zcoz$)e73@I8p=XJmYxZuK%KI0>VuEN)%G+&11+9Q*BdKP?ksOi
z_g}%wGgM1&1AM_(O}Y7oo0GvE;e16~t;Wj(-b8<_o>4|yiFbT)6M1u+O?0Qr;mb4~
zyB*K=00r3%(NczLec!IPte75ds;|30%h5ZZMuI(>Gx9p9a}r(#Z+{2-B~yf9{aVMB
zu{IY0?-~2IX<c3MgkNO~P4ZM*PR08HMPZj>{X;0Zr`RbQRoV}4WLH9#kO{wk#$$$1
z$(0i<Q6SO567i67w)k7<S5jB@|E$<Q&k>)>`)!FbC>^w@cx;~dUA69Z=e9W>XHS5$
z>^0}ZF$DblDSqQM3<}cSHuwfS7#SXhTEe6;RcG9(AS0Ozr7wUccOw0`nb&XJFU-eg
zI_&_09`{2Vcl7$D^>cH}j$2>j1TCBEbtmhC+@NnRuOn%}p7M+~$M3ZVeVzP|ZnYT-
zKeo3g$*dR4MPlZ{g59N%sSUNj7T<^J<(uJGvWrqtm%J`4wl1=xh+{Oyo{v>O_acJ{
z&z?Hn{rYdgem}CwFS9Z1h44DEOqm8Uoi986`FGD9L82H0A!BOvGi}y8<yShs0~t@l
zx3)Y`$rFPYV7$UO6(BD7g|jidfHferTxt3Itp8*1ru^@IE4S8Ncd5@;Bo!<jB*|?$
zQ0Hy``6Z7|u7pj2xIixBlDqKeyo<Jzd&=_7MONf*_Xq%g4?9%RTkT;;ovg~1vS0OV
zOc6mjXOn|E%%h7?Qs$vPwfa_EAe9rN{N|*b`=po?r()b}tjM6t&2|We;(Uy28*{5a
z#7~GZ^O?{-^gKzi*>SzFDCDzN5rt_Cz{e8?l~#=Y{Q0z=GLrXxv8X{Z)~~YoJUxxQ
z(*V3xvFC$9z{c3IP4Rr-5LV1^YuK5H!3ZCre<}tA(<;gbEo2O-$nLiU2A`Uz2}ybk
zpd<^pUzMbF+(c99+kf9pEOF~+Y`#Cm{)4mzYAP0Q3{hxxl^s1g8=%f?^eAsOIda5w
za)xkRE1dyp?M)v;^l0T}_X6c9JZ?7n=wGg_$lv<ZWUVZQ5Xj+`pY-08;#+Qm;MRc@
zuNMInHV@S6S{FjJBy%ra`fUwJ40jnP<}tia`_10;oe37O$)UDCZJHI(QTM8`$fiNP
zhYRccq`TE#ajCu%T=oi&HFhuOo+zich&6k-+WM<cpMiH-MVLnK2@-tenLPTin*giZ
zcvAb4-r=0iC>LvhPPfCJ@W2DpqD`BGz+rPWI}f34mDbBiNDw(USCw361AT+3(LmzS
zfUJw1;90B0GA4V<-cPB7c&%@RsBP|hi{zEkR9?>pXZb(&fYSTn>T(tHAm+pm$8s@V
zs3vA%oq8L6*MpJL(yg*q1w?}uqG<$#@R^|qmDqNqG*Dh9v;OBM);2Jy_>XUiu=mI7
zcm?r*3!KD6Kkd<I{H8&YnrDE+sStotrQSW`W3{@;VXZ%KbvJ>ZD71yM{F(XCc1ExM
z_*@bl5WPpZJf(K{rR`<cr?Jj^mNc>Mk#w{CfXtv`X%5K!9GWoyr}bP#O*=-c$a{1k
ze1Wb4gV9%(2bJ^2a`(gyisAW?k2w^Zla=Sp!0dQEv=;i(c!n-ZBrG>5vB2VD1Q^|g
z1XK#kSnbBZsGTNMt+!t|P2y|Ij#`m1)O;QeIj4CypB{c%4&DQ10)yi=kk4wrr5`#j
z=X))}#Og~JdGzHuU_2|oR6;nKw`><4?-5=tGOhN1{qB#+*Z5-pVBg10xK*>v)^NE{
z+;8N3Tm%v(oqIaOKX_Ow?1;|6V03R!X=AynqN5TMbu;uGdtRsg*$MowigH)yz8L!s
z6f>$?iYM(nISS-uatURZ${h^bk4BJgk-PsZL;iMA%{m4x^cdjg=Qw?HZZUTU<#~EP
zClzupVi#GbH;Seyri~C(jK0BA2sbp(EPER)u40HQ|LjS)!xv;2ML_>rccp)8X-eLq
zW~L}VX{21o?}tMXdSrTczpW$w{1Xdsok0BhR9Mq%Hfi-auNV`M+$Ok*OGCdf$<yd*
zPu_rV{OhotXjZ)$hp62agt_yWsk<(~Qq%4>T61)RU7OQdd^FF$fPMXO@ar}jMdmcq
zY~Fk>4+OEyANdk~-F+8qx(m-HU<Rt((Var%OP8AzGvZ(kGkrDZrW2ru;s6%n=;!(c
zICxlz-j0Wxb9Qq*jRBJ>Fyzk|x=J!WUs~PqLDyJUl&Zh+RRmw|hJVfv7fp&?HH3@a
zC}-)g)c@132snLMx}aZMNdxp;q;VYm(pONioY7UwQ$`QR`#4-O(8v_tc#-(_Yg)*A
zeQ#DLV(_0`96HBExb)U?aGsrUPkL9BV@<Qc#r<Ab5$Xf1SozlE&}HV4I$X}=N*Mco
z9}kkwTmlJazmu)TmK7Ui9Cp>`%|qj?-VoktDJ)3#EOma*flAGY&S_)l-UXc=h`+Ey
zalK<}Pks`S_k)hx#j%dk@jS-=_UEQ=bk9&0d|d3h&R(~2Qz3m{9Jq7kzPg%D7}(Ex
z2XX}_4?N`_FikR*TEBLNAEzfDpISdm)iPO91%1GW+Ue#B3Urlzz&PK&4A9x8lGh$@
z;n#TYG16~G>k{!98jkbl=~r$6$JZ4Czc!x&ee@2>6(^QIUY!<00$S2O?JOF9NRKge
z|CSZ}K;RFzU#j-)hUTocChb?@<~r_1OIh@3{@AKSAUx==oyNtjQl&`zuW~XLiJqkB
zL4MCPD0uE4ohT_JU0*yL9XDW+3E~}YZN56@n$KwL=<&BQy+qwI+kfQ?9b$M5Juabp
zF}s{SaDUA>DdRFWPk;Bw>osS780h4BWRY_22-WY60~6JdBz&LMcP^HX=H%JRdUBsa
z%?8%09&^@#0f4T&<6OjHu#T|T>-J;(8SEq73f#{@BJj2>=IcDcyAa>BGE$Zj3;OJS
z+KpAB{hm1Lo5ZeEUDvyv4?E!-bNx?~(-r3K&x!t-`IE&<oz926TH`+erf?Lb^&L=o
zoU)RB=5y3lO!V3#&aC-m^8>}><RP<^Lfs#IGz_C<L$VL6`SDqyKl^(~FcG9##{j)o
zF^eAIh`LjBIQ)7`)1wOP@LOfC1AUoS1EGft6@A5^m6|YHm_5V2ha+*XN@=Q|dy!Wi
zgn;_5&ZHOZ#*r9t4yQHko0qMa&y%C$_U^B>e{J^}^M{V?N?G9eDFSmGoo_PxV@+Oh
zRAR4_w--?tJ(VZE#EJr0Gi3(WIlKJUymuCq5^iU!Py9E;of0ms;wKY2u|MNq-%&pP
zJl`<kuJ+=mNe6#yXObFV^_ExqV@}>!&yVlG=W5PO=!y0-edP-}K0+sicz3%!KRP2F
zzA2JYD={h|8;HudfRoB*rE>V~vS&Z4a>i>hn-%NsT)oVsLZNpD#WyyLbFYLbllF(r
zOye0bp->U|jpsh8oTUM~;-NV8$$mt%&Qtd+4dX*fdwoUsD3|MCG<V9(o|Jdl%CE{c
z_7M`0!t9{LBrSWtG5`wQUHWmYMIqM`<wjwI?iD9*<%{if1#jNt_r9C5mA^|9NEvN|
zg#{cByqDOmWN9p%mOCps2QL&74JDqtnj9e`tULvop9X*2WPYReLGpxn=Ut+uv_9bw
zFfTEnUE$U{4d00G1;fz^Kb!5n@v96wJoL8-8|Zlcl~dZ@ZpOca0ZeN-A<M<>(CYf0
zEO2T(90NYWrpXJ^a>l#>2ZfOIZW;!G^Ta!6JKm$OUTm^Gs(PpNAN>T6&E_-2ojrG5
z$IaBr$8qQGR-Z9(vL9Gv7zmVDb3AXtmbEKN={h!#JyyGV^Ia~Jw^D-2pU~+Ez`uCH
zUMDHhNJu6tFHa_e<;Ip98`IsGZiZuGb5EnY*wccw8Py$w598z)0+~Q$AvYoCU%R2<
zq5+|CfveoZ-F*L;2NUO>)e{Y{J|DF5u$yX?n|DYT-E(|cTW_wCsD=Id&25jT#(PWK
zK7*um+h2<sRu5_yYPpEg@qDjncYuY(wYAe+T-O)PXRE#sg#kUa(E{ElL$c3_8v3A$
zyYm~WjbV%@#4~X+8HzLc_k=GKFkG2J84g^DT^qT5839?62#N@bq&^c^T)EJMJrk&e
zqy!U8S<<30oJ2XcG0l6Z3<;_vS_$dWM7Dl(3|0(;dUSlpc<M2mdrZ$vj`#y215YS6
zQ3dW&evIK@cEJpN#DPa6vh*(n2=>4PcAboHq0*|Jk5V}{F*dP^0qjAB@CaOfOPK(B
zV@+dCg_~|iT+$e$rs!0GcjA(pn4)jSaM>IOMp9#r5|iMn(^isF)@VdsROjiud&jeG
zBVwp4qyudmL>*Ld`02NWZ;RMt?7`7~I0j0M^7N1Is~+q(_|?DI-&v3}K$Nfa$pA{x
zdMHQSywn;I-Ke$z<+GS@#qjFzE!=f6s!6X_KX@?r&3VHP)Ven}wB3C_`FOh_7o_~1
zt&H@Vfk!6*V#J#{<nEkKOuAh^hXJa%)F)y1D42d1E@?iaG=x%jO7tT~aWUlA(+uWd
ziOh;W64O^JYCUXxEIrnt<^D(_WGj20P<fLhjV*y3e%SnQ!T)_z{w$(S_2b&g(Dj$>
zVg3x62wfw=yY1mbJ$9xUloQ*lD8;_2L@14aZiFV7%tnD`xF!@0&|ts#L_7;|4vY@$
z^ZJ;iB0E{E7?Z37l~(c>H%z>0WSt${ynK8k)ET7(uUE2eoZxxAwBWNQv<p&|mG=0)
zZXFL3R+FC6czq4pD+2h501X7iELn*~FT$)gR+VX=HrBu2Vig5P=xmVlc()i$H9tAc
zhL&x9Rq`7TG(pM}YM%FE5zJ-=E*f?~FR&*#Q<Ywj<Uq=J*NTJ62Rd9SPDl-A<(9XQ
zB%;BxeVNf6X$?0Bfri4VswQC8-!Wjt0wCF=ZkOIHlmB%fd1fk)JaOc;d~oE+-E(}O
zZb^MD`0!0AKb$cLPn9()IMR}dAA|eC`O)^MG!fLPF2ZVFt_80~x`Z-_=bHLhl}x-&
zwQ4|4d)5&-LeAr(WubDb<$|iy%|_v?Iw3A<dOPUruHgY#i+TaB8isn2)!`4Xl?5(v
zhF3ikEZq=}NQR%E&FOYf#Y92(O=N5)jL*$jAnhpM>LK8AVYYRBZS(4i_NDcIG!aNU
z&bN95xNK~2QD6JCy5e<dE%-m$3Tj*cK;Be`==j4B{IyAnz!f8vOVo=s|LjZNAJL<S
z>ae&C@64LDn`j{mt(D|N;LB`w4_$=rr(!L5v9%k!Tmvp;L0fQ72(fc5TKv3a$Ik@P
zY8r9+rf+nTtL~rP_Cwn`^)G)e|Gy^f3EtPAFF~BAKXut=y*<}g;JWVa#PctZErK2>
zx0|0_y$>j{WVs@8<bL>z+WkARUfZ!=rEM?{$fs|Lbu(0he+H$#kb#%e=wC`-0UOp}
zmOcD)e`!l_Z<%q>6mP(b*)An;-3k%;RYG%U29%NmRFCg=_7}QC|B~llDq$ERM(;BM
z4!Su%S_?wVMEGi2MMHgM)=*?NeDJk-;AM2Y@ui#a548q%AO%3EJCMbn*L{E&66z9$
zy`CVhXXGB{=ubid5I@heyGSDENB8QDKHw=x(4Y0?nbZ{STQA;-cULui#9c-BrVv1L
z4PNZE5%#_rW_vxr^#cBB`vtJDW!@(pd_jvN&y^4e^1yP0`v#Nq0HYM}uO{sM?SRVZ
z_CGM#qL3^tdGnmV{1Uz?0BjE=5cR+D1wXjLo?M_#uaIWfit`wRIRKH3w!}4GP|vUa
zU&N?#-ED~A=lkYgg4=Yt!!F#A6G;n1ctGDV><fJv*}So6UV8gC9SyAB|4$kBggO!k
zbRrVvjmyuL{xwZbbAp!q0NdjBKf0Q*Z#mY``aime=0qj=fo9wj^GG1liAa(+t}t6#
zMJY1o!`SC|8X$su`pq-$OmM^-dru(k8CxVUqLO<+Gvk<i!ZSJQ?XUj-E9-A?+07U{
z*3^c}+t32;->CbJgGu4$s54|-_rm^b1_Qzo%O2<&eX^H#6wk1kfLUl65MP9Ej)Y?F
ze%=W)OcgY-JN!$y+DB2~pJMKN<pVmQpd$YN6TUfp!0G&!84(aQD*hX>7(a-%--|a2
zJy#NL=5KYQ<^_YC2NtEke?&+}Hx7#EMvi_oc79K<GRvzdnBm>0NUy8AH)%+p3$cQ<
zp(TatI~gT3EAkm2kVLdm8f<qLCcwWbgv5pvRtL5pE3htvMD(Z|m>w(Y#ZY<xX1;@f
z8Vpu~O$K@T!UAzi6#>owBu4N+@hUC>1pcCVl12n8P7H$(#9@UxGYUskeK+KTU`40>
zL^X~_k2<A3CFL1F0DJVtfz<@r)0BFXvdNr5YWfI6#1BJrY+<uPvp`Z@1{j}#8zW){
zBjDgj@+@8j;Xukz-uyU4`A>!<z67R<#}h?9vPeMF`l6D9(UT??e0-vU$OZp%;_VZv
z8x3R#@~!(6S_KgQ!w*dUHTd7idgA**!)l)5S2(g+I<ovfV7ncir2gEpG$c9LayO7N
zBShedBVb=o$^@m}tW7m}B<N-f#PQ&rkx<hly;&4cw}{M`@#7-2-C&kk2|V*MHtgu@
zFBp#@O~NFEk_I*f%;#my%U1~N*8yh^640y=yyR#gUY*mhmMxUSvmctCaiW+1`A~MI
z*^8Lo3|PGZBLIOB@DGvnMuQ6cgNTD6RlRZi=aEG$VRjj2wH;;7h7fxJMc|NNXOmI`
z|3F}7B9<IAX`0zZnoTj9O=JJVZiHxL4++r-Q5?GrE9QTel@IUF(e2M6(?0*0Y$J}z
zX7zW`y|b`~%Rdnjp@UNlBWLp;dI9~Hj=Fn&zh3q(nqmqFHk3rLPa-NvWB|#?{C}mC
zoDR(!7Ck^1-GSwn8p0HI|5q`}Koh|&qCIBmLPBnUCFS3I5?K-BCkpVGB}+cl_~>`y
z=#rqhJj7uY6lg(dvOu6iH4^l+#303?^6(?-A#o@V9_!C|&-l>hc{KL;+^F<092%U!
zWg(~!1s;;6dDM71h<G_kc?|IX%pj$LoYxQC#i8}XD_uZK3C{>$3vVA?kY>SbLW7g>
zUH`TC{L99f#wu>#LgGhiDL9vRu`wUYnP{MqNCZ^XCpY-)jS(5i(l<-86;2B~qA7l8
z15!{&5sTn|Ca6TDN2EvnH+QTvE5XTMp7(6D)4M~N1jr!+7Ia?e`KQ=3SdnpFboa0X
zo|*(6esV`Qsr}1ns88zug2MtOA7-S-yQ|2CcUJC?`?A226Pq58{y%3(a6-D{#CW9(
z)Qe`<X$6s4(c-O)F{ghF37A)7W{+S#&J>BRlZc$BNflA!#;^<Fnfq{P;~kxamB@yV
z`KwnJsW^=bqpJj@hd#RWdZQ$#PfJWnO-km%_TeOZB96yL7RgAKtNwUQ&V<kIgZMFC
zBm(%6N;mtANfQA<sgh3tpDYp3O<(8!W4a2$TO(gsS-iU>U>buZCzuC{)=8w|n`6-r
z?>xH@{lC~C8*b$279Wzn!_Cj}ml$WA{abQbG~v^9g;n(eQx#5%y)O&;_>32Z_e77U
zMx&Jt7msJdd<!$ujy+QeFG@&^Ob<;)R4_MQSB?*$r-9@Ycf|S2SBTCkk}ok+E}`?g
z@GHe4LvFSgRpgv9c{K{%TrPsENMa^C0%*bD5DKXpr^pKKa2q61ObxD@C%zzF?}Ae*
zO*UgOsQzC%%?!08(jnWf?TAXre`w7r1(V=YPD;Uz7=bWh{+9yG{}v%mDddlXIlwTa
zUp@)U0&n~?#vz0<4@vWhZZbReJ7F{?Zy^LL;aNbSKvh=Q=kcD$LqaZdzB}#PDfs<=
z8-o(-zjbzocwEGJT=aae^6<tp?6XKA2_y;c8;$Sdi7y~W`ujn|G~~iviZ5>8)WQBJ
zRmtD@y5rQlCP2Sy8)xbxmj>IxZtGs`e{uZ|zWjwBbB0swZr&k|FazatB`W+T^F&hP
zM|6W!(gTz|@YYo%JLG&@iT8rA1dsRPng7ja$3Yq<4LD%B%7%9=Q{Ch|9@nF-NdY&0
zCCU>}ZMEXqIRG)OZy+^n5?-CZ%*{V9(qGSy8Gm6LXp~#0!v`+5UN08;d?+=gT-SGJ
zUdnN{$>%vOc)84Fsc&bvZRJEJcdDiZv`~#v%9rrF3a_Q$!TKl`Sz7TVKjVw5H59}>
z{AhopxCZ<f&@Imk6J$eRVZXw<^IO{aW>zy6`$y=3dYx1{pmTciCnCBu(bS32EULRE
z({!G3*(&O14`q}wCKW~z+aL9H+vv#V`enRjRB1cU+c9;c%A@Tr29$kTy?s$4A)i;S
zH-8WF!=Y!32h6yw$-HJ`bH_XIAUfLVo4}VR&(_>p$|%U!;@;{J=z9OJ{X1BcL$ud>
za7a9<6$GDbOmteTL@Tn&u#)BBqOM2sYWAl<!qx|mva*<SB_Of#s5ClS-3)ewhlETT
zQ(X)iJ(yrYZI;AxFL`@=J5li6^a)DW+a8~va_zsCtfJ3+bl6W+?dUfOr=9AkFkr5C
zkY|l$-QI;3w@VMv*9Nm|gr)-j(^IfnInUT%IIc5!UB!2U3PPbF>5mTqGp>bgeWkIC
zotKE2=hY?_(j*2n`Fga7#)O!`D3iNTbeP*bUh$naqu>Si$sNI`yv$WWr0?Xfffn$%
zXcO0)3;T)@t^n$a@3YT=9tKXkJJY<p+lx10wXq`-d$t0Pkjv9~IA{G^-!F6;w#3B+
z<~<^>$Eb)8J84K>lE;Fn*Jf_=n$7L>hH>vpz*E=&omaY(cT_|pji#>W^GCOBo*4l5
z%XK*^=!m(*F2oTlN9)_f89a`Hnp*tove1{C8X6PB(sh8Tp&r=b*DHdq`dOVavYaHo
z&w*1ytn?3?+t&wocZ}%xE-wP0Nq755<r4UVh>hmQdD}#Wa1$JqP`36UaGF+F!eusC
zIOA8_;o1SWUjGo9PEyX4?k2g<+ZdYi&E|{hb#KyANm^DZcL~F-e(Uw&n7NQ}3r#Bx
z2tPuG?=Hl4jP^6vd#>y6?0mKDP06q?E`Qg*R?GW1wY91>BJxoW@lR4mEY}?x8)`>^
zPhLk67eMD}TsXslglm+5lrA{ZkHkV4o%0eTCi>fHZHK3m>}K+!=Z&6qje1KNwddzM
zWlogr*P}7y()}&JAppsWP30<wP5=52b32=DVdqi)i5G!3=SCu=T$mu@*3!39x2<^i
zIL0s?8D_`$&Z3%ejff!HE%x{YE(d2ZA#yF~L)5~~e^-J}Z|??Vf`-kiq#m1p31mk9
zSxMQm{Yh6Nt8(d<jwbqT$GVZ><cphy9&k+-SdVKiO2tYVNZXjsu$&w|>hyu#m#*2F
z(_B&cWGdw>DJLPO3-J|YSlal9JrSK;ike~+16^up!A&|YvX%&mh_pCJdR0VBmhwzR
zVU(^_&u)W`7Sv^+kMcCVbx~N_Z*_C5eN`~M1fc)NKNosaIjJy9b;&i|eYnUJhfMe-
z7>&~pTl?WNc+u|8)bnIFO0W9-nRrIL2_4ggSYpH!)0M8kDfTAVF)M>>9Xj_({Cgko
z?OP)y*!9<#t1QZjN9TZt0ov0GSVmCUmsk0`>VP)qFx?;X+U6oMA~{5seTQ9P#_DB$
zo2r^cBkrXC4toKzz;V;ru%*8ZXL9r|zfDcr{|V=X%l3W%o|Nni0a}X&62%mTjs~i>
z^DCsb&Hs9!QlDiVszB3LFXPj{c`vI1xay@Ackq|zWStmOUM=uVP6*80*Deabz9`ZO
z_?;f_Q_$FFB$v|o6{vJFQcS1TNZ<(NSa3{UV;AGSf`T^e9B67I-@`;iWrFGoCXJc{
zkGG0~3xCbW$f0jJnHBCV%w`v<8!x3PmKD1ARnd$Ta@Rqx|Bgd8b=6EQZB2A7Y|H&M
zdu6Mio=_b4(x2$_iy=Cv3iatm(JQ_V28kKHwMAvYokCD_qW0Gie7KE<6=?RCQNAPi
zr1)!i1hCw$BuLI;DYvfki6YK7F59R{#WzV@lpev;qV4F9@6Rk)uQ+lzi&>xm3Q&aR
z9#g)!dzfgK5oh=NMjX&>qW)>{;nlN4e19WwxC0pde!BR~oe|=e{;=uJCjt<5pQ?Pv
zNpI-KwQPO7@BDb`fxqy>S~7U3>LDxt9<TgTyLop8K1oA<3%+fS0G(gDh(ViaX<}HH
znEGC)@`Kj;CEozN0j)xYl!-ioflmPTX_`pY4yKY?34SkSW)B%<;m5qCO@>}^i%#F{
z4^FHi(a^kxk$TQYkh^8g4+bUKg<MOlsEDPkkn|)~LLFAxacA|EhCerVHhSff_M9Yh
z+!*TBQooIJ?Kw8O+foVLipHp9D;pc(D}NiDlq}FLj`8W~BI!`kK^ZapA^z`odQBw2
z!!Ej#W9?Oo*NXMSP+T-;V!wg`dYNLn>74%b5td*!j%UG$smSacDFqWbXfCi6`&~wn
zFOI5c>bja`ZKK_%ks}kLS<l{mwNCg3qOzoaeBDOx+0L+%pg9*8Q>#+lvRRuaN2cIJ
z7b{uY48fyVuDx6;IYaH=oW`rLncfFPiFP_<1-C4ZUWQhuJCU_=Yx)!eGVN=^vW**k
zW$nFV3^8^hCv3&P`h2kA^til(jbff*1*>Y+nmhPqRZ11n&e`mUls0-#=OO6n#gP1H
z_&@2$99d1X7KZIyT{-jt>?9|Pf9C386UJb&oGV#HrUH{#)-Tpw4=d}IGA7m^5_RQc
z5)`>{D=GPGWUM)5UA)4!#6V~l71dR6q15xZtE$o=n&wSL(qwu_pOi~$<&qVTZp-rK
zMP%5xNY8S(Y14nt{+yK=Pra*RRMs?TUZxn{it=@jnPiON!7IeV7x50LmT+fw7aX}=
z3_({ti$#rr2QBk%1+VMF;EC@w<hw`2X2C4u?Ozu54)Y;mDdo+o*z38P2WE2d_4R3A
zz(3|I`Q_jeSR+M|i}gYBsq)+f@ie<UOKg2*McprI5j<OkZSk(TwJbBuftlcGCG{Ds
zT*EIAxOEOOsNq*uC^DqoT`wk8&Fh;weM%zUT*mr(s)X<;E^v>imU1^|RoI6$2+S&y
z(0G>ur%P*^CKcShbePk``X;>HWy*g0%jInE$gco>JudjX02ws{*Q87BzCFs`iLtBl
z(ocH?rN}S8n8@eaxj6po#5%6L==w44!pQ?_cbRx}G;1=Oe0N1<${GGCWY^Amv7;hU
z?C+WJWa?sNX+Sn@6LP9V$yd}j=tR!4KKn!$uLiBfXQmsu&2^$W-m*qeHEGxs82i)I
zbhpUI_LTk~I{T`XcZsqVr4AP%WAQKhW>0+EH7X1p@J99W)_09|e*a;^yL#{(8r~{k
zXi6JJgPa3Nvf_R&Bx@Q3`2bYaR>K)vX9>h6T&v*+zu7+~Tfh=lRzk(5DFmBtzGe!i
z1MaFU8w2~)_O2VL#l(D;D0C%rs9VN$#+{LM%=0sYMTt05-DbDHW$kK*J*euh5ERJD
z;4B}*`G<A<FJn>sv|sK)v`h*E#jx)xIujIJ4)QX$1$_40L~thUdy%9eTx3NQ9nniH
znRYdI=0Xi%L39B}DuuNvu6M==vmF^5hQ0(#k2f`KO{XYQMy&WYcnCkq2)QI_Kh-#0
zEu4%9vFo}PAh7bIM)u%N9e%jz=DI|aR2KIOVy%eXowq4vTdp9lbyiNPYy(Zh>9jid
z;pPe=6{_0%^=b3DaYH&t#pPg7hzf{V+csHTR$&Kj=LhHe-h&4R(FQ^hS5Oq^(=IT^
z(V<ZkiTH|L!i6Ff35;l#F2X2MC~?OT#bKyX77CIUcv~5AI`EcZ==T9{1#u@n-Yr@s
z(`TW<HtaRzE#d(pD(Sh~-4iOa=+UC5Zcj24r0#PeyM2gNA}4j3P#ttSA^v7>@w<?c
zHmwdS%SEhE!{Q$V@{+AJ@Q1%<8!OYLuh$<+{wY6_qcdsQw*F{SBT@U!$thm9iEAdE
zlI*2bv<6PE`$y4S$)Kbt_0ZICqRMs2jjnq!g=;xDSuEeIgg$5k);0Csi6t)IjZL#S
ziKZ&RIK9sRyz_5nQCD{J@%dEUU=?HsqV{3j9h?it`a;U|<9vp^E0^F_ybX}=6bo_A
zGyuT2D%@_xYay2FvdqY}{DS5cj@-eK+Q`L3$Hwz16JFD0Tz5$3&ROP?1E<JAfI+(M
z^GGNznH68sc&#<`!wY?r{fuLj<=xrrU;Bm;XGdj-D{mIg6I{YX<Dx}aeFFqL175+L
zjiGf2yQKmcLijK^`U=>rdw((yb*d6n+T&Rjn}NgOuMpdr1-ookgiGFn-byob5rVwo
zRGliDfQ2I$=LPoa)C!1cO*WAR5qD9d|8C~?%(MSK{X>I9GW<~yq0(Yf#eHkUz<xEJ
z#jnc>(iF{ES(lY{DspW89<Fy|D*oyGsFxPPJJDgWkmj7jv}R)zcgT;ZUU4vP$Rm`~
z{<?-cw$<VC^H(p-3039d#=kTuSM}fWmo=DB<aHR0r>JjQHnuBKMDXu!-4=Y(?_W59
zh3h%iqsn)%q^sSCE(-);R83w6gggqJHJH)Fiu8dKoeT(pwg^Zxy?X7&#n&}BaM97m
zPAS0-Da4d8E>sKM0*`2k6S7YpRab6h!!9)o*Fci9d{$9S^UzqOsUByvwwBzu(Q_A<
zg*86y_38^%V?`2;-Zg*GuxpXRAdeMwc=`2(_G<~<0Pf%I;`aMaxtq*c!d7WnQrS?I
z5|!h7N>BiG|5(Y~<X<JV&wX;&15RLOQKv1(+QoY^^R8E=14N8A?#uc$bF|4;LLV*%
znwBpv%NtKO3=U_7-C+GU8B*R_l*ls%Fwe-+ambwr|3-9&GwWm{YB>0bxn=Eh)-nna
zs_^YpYLsHk?4En?KkD*>hQ?jYusCK2A<nc4gQ%wijJp^$SFVk1U4{<oyEcjzbx*9~
zT^Vk#<HxvOTWcZ9OtuUI*UtDf7@$=r9YpY}3VgZeQq;JQFuCIGRCTj>kjJ4oe6J2T
zb_XCY$$jGH_?lr7DzE0AvzwHznjc(CBaEPqIHZ*q@+tky`I{6pkSE|>dY3H9pj;1)
ztSk2x`ylEev!ZAQt56<|T9*sTdsWnrC-)1V?76wDe!0O+g5~~p;_*fJ*U`<V@QX$d
zrHN%rtO%m>LcNzUTyBzQDzedYd;^ejaCm*p<TO+j_fudVfWk1kYxA8TCswzl+JZ4c
z-dw_mr*yy)qzfs6n{(86ZO5-_s>B_nF92p;WZTZ52t8L5B-Ob&Ip@Sq;H)>at&3z{
zqkNL`w@7}-bKcPnd-SbLX)fMxWGG=mjAaf+lF`2#p%i9AZ6E>y<t0b`=+Hyrcg{GG
zN@B2`5ltWmh7Us<8PE6AwUdqw^9z*iJb7f9mZa?hRi>Sqmf3n24KCu?E=#?Tl=IZ<
za}`cxB*UK|MF=x^LGc9oNks*`>uPq*c}u=2lYk;pq}|769`G}VScn2=Qn`y4kLcAO
zY1r{ghCmL&XAdNe1jLk6fl${Q7qJV?`H{C)k&SQUe_}ZVdCBoC9Kb~*j)2;qXEy3T
z#5g4lm>@CCTjqKs&Wo;-pN=ET!PB*p6t+k)Mt?dw{y<9YErwW(OAyF;Ar^WRiY2no
zfsybs5>>`Um%*GpC=N(WM)f779XT5~Q#zdVaKw!nstF@(#3XlL77?fNGml+|H?PpI
zc@;r`q0LcK*<L(q2zBYs(06|S<IcrfJ{N!4VAct0SeJ#{Uz}Y-?dIVQWCI=KBoq=n
zE0)RMbK)R*SWEK<b&VR8UNCe`;LLiGGeA`O6RwQd)Z<TFjAw5}wE3!pS85ij@Mrj{
zh<JIIg(;>qKc6?4a`U^^?h5MZB%;K)Kk{i1tLnL?<kWBzz*qfUwsVGlX~#ojoa733
zdCzRHNvGDmSj#tIGE$?N4_Vc%<L}>#v}rqpTrX$JaVKe~=%wduI)o^}WB0%S%K*#S
zHf%M5QeaLP-(%VSZy##BiniAipg)G&NoEy_hd7AdOi9i}BF5n1IUPG8BpcVG)Ksw$
zvgvD<fWa^w&%?*CCsf{@-!_euJ%|_Fj%e6)zF_X>T|BY$Ypw6srPiYtF$OWN@GH3G
zZN{1_T7Q4vSBY+CD9Ra6KWoO5&)3aIr&76I<*eb>l`Q`jf1L~w=F{-zx_+M>Ar#^_
zW_2IEi8dIl0SLO9Ql(1;wZ>l69lSaiMJ;uc=Tptq|K#z$cRXKTQ{t}b+fs7dcfO{w
zibl-2ifB{ncC2*2iNTR^3gFnfVjcSEIa4eic&O7fcixRDi;mno*9qSmWiXrW`xSKd
zu2k`<5?)JhHphEYblR7dyR)S%PSzn5=4t}htEO32iFm76ipOFUi?d0aw#OIh4veUK
zS9vJz{Mn`n8M6pU9L4uUWe_WM067VAenU=h#?gjp#mf1!XGJ<`%fpv7W^wA#VZ2GC
zsSybX<iBkSdk9d1UZ;`DKoxW=6-|cY$apY`_#tGcwdjEm*#CF_=)m<^4z*+cFB?=7
z!pfd@E_6ut`e2QUhr5;9zTNza<<OauhD0s1gS)JA>|}|@HKJyEUc%av;xF!20ww^X
z`*~4?)XmNHMwaSg%~wd1ej;orBz|F4)4=cKRZq#1i|-x#e!ko_%ITz(qV<UkHchk4
zA-<ELc;cnzWt(7jSoZ_6<qUaN${^CTezv}$#i#~HL`f-cN)1xTkC3%c6e!1Gg&Hf4
z;6a5rrb2?3sZ_Y-&Ivb(P1KV1A7j&k<rhoK`b@tExcUU=&-r?-nNP4S7WH;wL;{$F
zI2tL-wfHs7L#pjpqH{7j+&P)L+LKy#f?j!0I;S&EARc2|Nj;{{&0ekt2^W8|V<S6}
zx!@u@NrJ~=zqtW>q4FSpTq#>xPWuLke0C%VMW5uld*NprLA?a$va_R&kVznS>^PVx
zpHnygF~0de_Rcx_iwH-u_ahaevmj?4(q&p9b9)$>P(k*K37z3*QHE*<kUB_DTSVuv
zDimPo@8dw^1B=*|?RlOM(st&-KVYV7+HzZCY*kZdofN<x<e%H~I-CjhDjS?f@hY3z
zmQy-N*!p^IHh=N6b>`7+%V$@OC4*ji<OnDxt1OSrH@V~$R0eJ~VO5TCc%~RzlSeU|
z2>4c9%F&lZ)zD;&waS?z$@dF3kbA*l0(;<c5Dkm1@a#~I7%Ff~ZkUD?k5iJ4m^M`<
z1Xc%nXD@uyRaRWN>Tl9+zYTVkekL?>zl$+Jhx!VPcybS+`R4RA+SX9lx$4@ZYCBQt
z6J{p1xRY{b#<<1O706P|k6fRn{E`1TYS$RzcFCR9;5@yy5!feW{achm<79g8j(0Xi
zTy0kgd2brVoT*i?uYkMHZ20Fmi-%KAM;}aT+abzzdf$ZoxjY1M$@~IrdLFbGyAC!A
zYCKbj#k*g}$g@)(LptB}83E7>Lh)Docja0u_P9g59uXCP>MufU2U3bx0_777uySNK
zgKM0V5PTOQeN-=qM!6&%5n>_!yz|Cs#g2c8obDvQ&uwvP8=z0tM&qEPX7eITKuiQ~
zV#L1Rq7nA8yG1J8YG7OX{EZ>PO8e7>E_}fjDgd*UD5~p5y%7yXU1^bSkSPZC&|m16
z+OmsPQ=RFTpKUc1r(XXcy688RJ&gK0g};R2vc2=dwpn)H17(I}m`iPQMM?-^EB1=9
zM;(XGY<*!Sa(;*jb}v1-+SX57!ryQN#9=zwv-c`p=fjZ4gE5N4=Oh#*x8<Y?3&y&8
zy&s*pIZV&Jx4UD%<e&)k7TQhAq7}i55JId{RSy2B_?WyTC|SpN6wM3sI<js^rpr++
z8P||Jq`PlmPqB(&qBclK$l?Bz_TLj+CHuYe&oxg1`IiyRhKKe<RCn0`v650s-K-3{
zp;cYe?QaYAL)KL3(Hy)>UVW|mosIh&&2^=-MX`J-)<0!5G{26Uon@VqL&gd8-1N<W
z@qwFB<R&x=O~#VpPSnZ?Vky+cyZe3665&n(bGmkD`xA;}gA{!V-AfF6`Uk99bX`tA
zhxnSwTEUKcZ&XY}11a-YPI;~#*9(*EQgBJ*?j6&hfH~_IfiaC__DVM9d7@0E1S>zt
zTxhJ#Rm`A-hQY0KjelXATF*D~u{)GW^+;1M3AV)E@e%4!4<n1Y$6l1c+d`*n1N4<5
zplVs~r%F5Q2vmwxi{msdoEnS{&$J@D>c<UzHPTAJ30HHX0aww}-BJlfbDyndowQ#Q
zoK@KA$?LrSU@Ks~f;`+ycD(QwkkkJUTkja0Nz_G+#!qZ#;)!kBwrz9biJo|3+Y{Ti
zZQFUGi8FETyzl#cx9*QywR=}r*ZI?{*I8@VIo-QyJEUL;PFB8UTkxW2N5C9knF`lZ
zO>0=1)463{>KFI^bTqiwE+vstNt6sPS)pc^6*307%_LN$$XaDY`+WOLI%B{jke693
zxjwzjS)CWgB;jIM%4Z?rXKt+lui)XItEd+bj&vYQ?KyKu#i-N?P5e^^6igrw=YHPw
zZVFe`A}aslOyiKr$knNxHpi2-#*?+glSRK&zHonE#ETzf4f6OtKE^bmR!Y~Gv~Zsq
zLnO)H3@v@@rfz0fqUqWwtZ{HQ<rVxp@N8UzOyhFGn{Hw8%s9tfOR<V^TuzB@p1K%1
zpSM^tM?i%}es=Z5MjRSGhLKOKXePh6D5K(C-<iC9!_-N>L!H_qBZym7rwTle9LIvD
zpHe-SJuj;Y>i``gzkTgMyIHbW{b)p0P{~=p37Xg{f$ahzwNm|9MP}Z=lP7B4@+dPA
z!UBH5Ox*T3gx|qYdh|{^-zLTTOtw8vvH-twsf}`NcsYai@64EH@Q#S1Lrcl`vGJu}
zpj{fkM%G*<UCUFhpNSJb0&OXbgu)gF7!^<If|(6C@yW=f4y;Uj$V_k~qjCV%vO@f1
z6}^44b800FYWW(xg@b!wlx5NN)Qq$CWmS}U9k*=G_gS5)Wr$I5op3D@`<)pxG*2=V
zj}zWbXqpgJ*|nc0G|!8h2);3c&D34`06OlD0wk>CO4g92!X;71j3Ns=xAecBju;&f
zYx(oo6xq}oRnuudt7|@njo3bfQZqnrhV1r>TF2*=#dwmwO}|@LZb_l;85XsEui+!~
z1mS8wKAWK!<-7ZSjI5extg|q+@DTe#xpzHIEU#98%=(E8&^WfPN`(xQPjT(EalLrE
zNfFMym_4}WvF6u9Pz*U2;t7YJN*daJ<kq!X4(`x}?c%u|rnI5UG?l?}n&=J*bi>H0
zg8Hi1U(Q~5M1A~IewNTI$!^c}7pn3@F3Oqw$-k6I6Sy=Yd)3PzRhV5k0TL8X3ZRrg
zL6-AN#Bw%K^NE!!YSE;4^M-Z^XT&z9=P>2i41Em~OlFEvS!40IF<9TtBlR_jQYfV2
z@LCX7nOTH!rIifNl}}};S(~h;xn{Ukvx>zh8I&CjhLO2v#50x)WJLEHNP3juv`&IR
zUd3Bt4!qhdHPpqr3?4bz#cnz-HTtr%YFmwRXv@rYsLCe%Iq2S+KT07<CyoZ)<13e_
zt%(Koi8W9Y7yU!H$w=k$hR5LVe>AnrIufV2#N|ymUt^YWyg;LGphhbd_v3K7ln5+h
zd9S%=?8yI2am|^J<u5mXh)yh@9^X&?vo*U(4CP$?GblKp55jLn`Y$9}sa(LRvzyJv
zlzcI~s=vMnA29dDO)*VAiB=*3lgyGzMn1`HN8krSqD=-$3~hPZahKE27Sv0!yqYa~
z-yf=Bj0HiH5rmd?NPZj_@5Y0gR*j7s1vxw0X`M#pDChF0JJFY$8Ea=T{;zFHPV9pP
z&1`C%0&C9KOh2LpKBdU_3419LgzkJN%@#-uq2q4dI+P3pNSD|*ylH}HlI-Upp3f%n
za#I);X*wuVb1Q~woZ!6X4GDLylIKQ~o_i{rK0X3!k!!!?D!x&6&O-&G&o*fzNoe{t
zmtmqiV^4s2R@W>I(p%vx%!S`$M7U0^@#pk@fFwc^I%Mne+S<6w13hR~2oTRwB$N6Z
zN37Wfu;Zo4ed{224$+fY7POl2AS0BNrd$v`mHOveAuC9krd{IHjGMJDyI69c)5&}F
z&3_~h&};*qLf<n^AW)N<H!h$^Q0ZL2<anY-NId+$gP*bkE^M0i`?a-exYo6O@26y)
zeA^bkP35gUKFFE=@PpkCtqjxCRs93aq1?T__%a>ZXV22es>Sho1?eHPtNk?0)q6_@
z-&=`6wM2O+<U~)stY=`(eKHu}FMWdD*(u5!B01>SP6v^7k$=6*^3P2g4_=o<t(%U|
z?u*(;X+Wm|rp_=O-z-WbBa9$ljp25v7agRs(`pY*`Ld#p#895xP8QBV0C?r<4pk=k
z*>OeUYe3S3#A+Q@V;!Pbb63Y0@WG_ZVamSZvrOhr<~Hfzuy9m9vQpLqk(k>?Uf*pA
zHy2Hx7_noa68VV`@OR2E`m9ZLrS!hlZ{aBpFjO-OV@}xXd~^N`6r<@uSA_oSv33)k
z`=@S$UNdhdk1oO>?@4B}_YR{|5Iwm~h&0*#J$?3X0@L&NKPc2)e15&u)6)Q@(#dHi
zb>5_SRhev=>X9h9V`{8WS<-D>_1reFV?-s|W1_G{CRTBEpsVD0gB}mLi!Odq_6eO;
z*VYM~O)K6c9&u@HKY2uUg8S5y`pSST$Ato@6a>h3dByLZ7a#n|bNHoQ9=9mQbB50K
z<M|LtXRg%3Y7DQQj)pn-T*6v;SOgwYAeps>YM=9*w5#lgGy1D~{i3~#7wDjeOSTao
z3CsSQK!7t8c=bi`36aCXxe0v9Vz^p#F`^ax!x3CTcFc$=Jlnl>2CRp51Zx)vyY%ph
z+lP97etW7@Em%|>jaQ4Hcf%B8CZCw%)?^Zas85_3GK2a==7fea6K_b~RFdU)HyLxB
z4Vpib>eL4<nkakUh6Lp+mU4Z>Pe`4iZAhQaDTH5!9#Pox{h7%7iQE_-mPj!P%D*TE
zSYK_zpgKx-na2QLylP$G;BmfREX=aB!8d9~@I>2=<_@3VbcQ$jqEtE={i9XUmp*kO
z@QL>pN!Exz#3cdb=*P#Eu2?)hIf66^Y$nfR+4U|;_UU)X5)JTjKRNRS#`jhLsXIIM
zo};ysN6%Brv_&OMSo<5vk?l<KN73<)D5}v#eMj7<@~1g9HrmjHy|lnbEb<Z*B89n(
z)(h<Tado~<5BL+>{DVU>GZ<<OTArk7+&(5GW7<a!db3({yg!?4BYQsD)JSf_Hqo*f
zH6gI*n&8(mJ8G)&19)aq?>P4*OlSFYgxrBbB$k1rfw+d4aVhzhWt)!!>IFMT#tzx=
zi0|jDog`XLwV1lM%O$Q!!=}d+H%I85Z^M*Z{2RMJWUrI4Ov}H_`emh8Sz=LpQ{XNS
zI#J^a#JU?3!;mdO_YC;FUWf#gBBG4RcNiGxZTi?yxahvl;=9W!9crA6<uy&(R|PfK
z;xG%>q6dVUYQ8DeWVE3;O1o0v<Q9i}>7+$JX)f|gzad-{D$87BHQtllp*RzM&j4;s
zjxf)&$iHp2-5G1u97++p*5ZyFgN}ikE%065rGC@BBt|*g<>Z3)J>YQwM_<2k1<BpK
zd0SQ&bN_Vk`?5gP5Y^{#y!9Xm4G$B<2O=qriIH~Cd+zLZTV+Vk?mzw<JFRAH?7SI?
z%6vZ)9a^@27s?77p*>X<lq4Aa39gNz(MQ%5y>OuoGb@PvN!l7dAHAE;yvKPH6~JR=
zF{zy%0Esa)#8%TPkUms^$VoLs8hKWYm4gQ^5T=?J9QU{3@II$TgYjTT^;m3Ze|evf
zQzqkrMw&}&)-AlW@#x%Bxnsw^Weu-ms9f8%WXiUF9nsn_n#e#vJj{|@UUSW?Yh4lU
z2#zpHKm7P>IW@ZHW5U^VGL*&G##Qj!yx&7z>GC{SD$QIO9`UIL?chfe&u+mm9!}?<
zQ@^DNx9Z4TL6!>%y^&4fYTe6@=X>xUCzjZ~nApPlrhn%>eZ=_YUOwxvj1=|_FAoWj
zn*Dfsb*H-t&x!OA&03iEGVy%hv`>7Gp@_#Ov#&F`*=EpR7wS7hEWiKJA~h#8icD+i
z^#o<)B*_1EL?y=?=v9?UfqfR%RAM%v4XF#_(9@}(Hm&JHMGM7Q5(yavl>05cY;+<1
zJuV%4u{A%{Vy5`>cuKfPI+gfy#5q_0+aQks$({=itfCQ9WPQINYJXJxa8nfh-x!zf
z^57MwzrW6&{}kz8>f(@d?0qaUASVF}!h%%<2B8ffbZ|F>QuF;Y)Wa4PyWm<FzG9=$
zb5=<<bQuMN`x`9bT{#e=2jSlsA^G?@&3>pa9wUw7DaG&-#dafpAW7+mp=1OqGA*#+
zO0eL+@)CylBDN9?S`KsXmL{>W5F!b3>F~V=;Qj17oH~Gav}$;A5f}(m!-cP~YD<xQ
zQ6_C*#gH%iL2#(lfOMD6-e;x?#k7p!(OvZ(jR~$D058<ZEFoL#VdI=H1LsUd3ZZFr
zdRne#Y9QG6$WN@W2KFY2bqTI%Ntw-|ot866n%|!W07)VNHf5uLa92fAmd1p3R+1x<
z5~1z*{#}tIOhQU$<;oRi7)fDrXHI|4XUPjRhh$~}`vMIJ6pr2>#7SF=<#dKc-xU(l
zfLwB_5v2cWqK661<lMXhc`bwo4vSx+U4^J~Z*-Ki2Snx5HWJKijP7D(iKU?!!X6zF
zyurSWURAV4dZ<}Bq%$f<G0U_gw8ik%lt$H4DkXOOcXtA8$r<ntu_KEw6OFh^dhw{h
z#yZ+dqT5?T%2g_ZFBH3LaBYo*kGS0oy%R<BJqjp95vWJF2$UiBd4ts|0qP5UEzMP|
zBqWjCSp$U1e7&u0Wih9M)sUT^*WGDpQ0PUTXWgyuf>wY0C{X{teSCa=^_@;lWw1SF
zXYl;k^^?imEmC8m7-8{0?-q$Zx<O#AExQQQC9f?D&tNa)$_D(sohBah4R2V=)uhmu
zfP5|b-OqP^WpJO>XZ5*KuSi(iGyh!eY5JRX{|0=wPZQOLEa#g)0A-Z2Jud-AmQ1JZ
zj#}tK38ibjWam1mTFePi6ZwlX0%yQ4>A_|XP}}wKNsxN)HBeamB&h~DI&=D9AZ=xu
zy^4RfZ=b>bEeF)(!!2hd?nacnFv^e@PMjR326ukN^vI6g=@-SSWNLF<kWf3x|0~9_
zqqZR|?=zJ~nP`zgcs5t#qPq8$^5IgaSdV))w|w=%bmZcJUVOUnM^>p8_tGYjzdh=?
zyedJPE2X^qt_efPPhTqEg+zT;dd%0h^Gc@qB&uD%-{pr&%Y{{CG3ZiQ6m_Kn9}|Gu
z{)t}4dkXI*qT@3OZ`Rtbx2)An!5z@Qd08pKv;-dzRS9G}TZ`+d65E`|DR6kC>%Hq~
z1o6Qhtq5JM>}lR;TK}~9v&FuwjW3>^X~}XX*qSu0?L*%YgvjClk+ZrR<(C%A+3eYc
zjupT``<eN<a&dj8u<Iq~^y;YgVE|Uyy+FWjEyP&pT;F3q-ylj|J;luV*f=XRx+96K
zcFam_xfB#*>|r}UDTlexs$&!W^}T5@Yu6V%ZnLlzdBfMlU(r*H?PmO5$PV}VRXL&5
z^jhHK!E@JdmE=5OVsTo}@1%?TVWE|ww}el2qOn;_NlP`iJf=Biq3($bSljbEZW-<4
zQt$Lavbtvg>HeB#w(RQAZl9B)=T)^^C1lQf=4&}k#R*N|s7vRe4?!HOOwt|h=i{}L
zANp#c!lW}9=Xo#zs}dLaB@botetA;&L8*m*64;w2FUl8)?+_*SYqK<u$>|8`>olQq
z*ExT~!@m}IZ>Mfu{Pjr}?2BF*^LmUu@F6Qz#q_?ihTzgOW~YB+Rk(BQ)9(eqQ3$S)
zc)wbGC{fs5-2MFM^jXx}Rm<&gC9~z@4E|Ysn8bZ?(K%a(4NCdconeBtHcq&|kyIm)
zdqJr+<ADEbfQ$En#iY`kJdFJHCuOYX%03HeY0^Q1$awLiQ!>M-a<MOl(>bquDI%G4
zn9KQq8&-9hYoBOL!m3bLYd63pE@lE{%zs%n?6lE#WVO22TH|llwO+vP-P;O7p6|GK
znYF)2+!({7-M8KvRGxkR&3C8z+BqwZKUq`>TIsYLPTTlzE^YNi9Z2T_FSm>C7q3EJ
zPj5`RAK$#5#&P<Rh=sQ44-ZQh^X|^8du%0`h?gqlj2OHMQjaU4NAVP`s+CZsjTo%b
zeEQXQRH83BN_sZk5GyAtGBxNlAJrAgbc=0Wm!&EMHJcTesVY}$H|lJEf3Gdq@T)y1
zzTBs`;g`!CNVIGyT1T83rnjMy(;Z3VBu{Bdq9Dw_;Y?`ZFDI1piWtMob&I7k5Pm2S
zTEjtG>wYK#=XKpt$SkLtE?vVW3-wWD30?iw#F5C05Bnp!h*46Ni@cn#_!Up)gJz0~
zHFk`h+=e%FGP>wkazR%-f!p{yA=!xu`B_<l+m^|WOHhlYDj>-;ApoVmqO{uF=?;(X
zr7FdDMpn>?!l*8hNmt{C__7!Tgc9W<37U-b&Uj*!{ZPesVrT6r9ap_*+6>8T-w3M8
z1i?gka$jnmjIcEMK{>{iq*>_@_AYaLJy$NWrMDvsNmh4(44)j|EiX|05uc<hpz+su
zuI$aSRm&rh*jRO(x-n;IenYq)ewh(aEBe=0)k5Ca-3yM9|8k^;B7OMV>RmeAG0Wp!
zx>4F_v>83+fCb!?d1{qOgOjP=YCxNUJhx@tTDnul%l7WM(B0nv+=dmQj7PtZ%rDkU
z<*84u%C9`z^~>9qXpPEes3;C^zxmka*!tpDfyyK1XjrM0Gq8Sp&0Y^FOXk5?*$t#6
zx8;i=bM6wULVomW++QO@{DZFP+ZoGFYoX1o=57_D<Vo%pg#?weW)FFuR+3wOh?J&z
zRs#AXKLj$+)F^dsp&tz65+3#bn)Y5!zt(A{5bfczFlA1GCYkkmCoIr^Ilog_{xt(l
z)V`TztH5<0gIP`0BAegk*j9a#q)z+u;fkvK!u>)mfiW#XvXC4uiG}`f#8o@5bTjH0
z_=rw_!|QNfz&ZjTW`WcC2SDjYE7m2@EBBhRjY@x|pSJuPb@0DY&tncWITmBSnqP-1
z*3{@$i5BW(s&*tln)J^6#@`l7iW9N!Xkka77opjpTA?t4HiP8)O`-nnohsJBi`IUR
ze#Xbr&Ss`VU{m>LixD`Nr2UB@I!M20Mb)Kl;`dMx48_(spld0nq(XhaZAk@A1bK&k
zgw)xR-?l}R)0tlUN-qt$66>gmup=?e#m34-yR;hc$F71Y9GI0DK7|S}yfK3PlvCM<
z-hWBC>7wSR8MwFG_m=T8#Lm?UIn~(rR`4>!$>j>6((uAZn9UlvPrYGB%iV>Y-5j{r
z+xM38T7deg<>gOxkOe<`EfM-R^b|7Trr_pXWytqC|8&Ty*}e=;F5>=6(v3O1(vSUd
z^jz$L`(HOrm_)rdzO?+{`!DidpY;3zXt}eYrwIEms$M<lxtgM1l{dZ&{JXG9cKbHu
z{JZc^IXCYLUZ0HoU#PhO@Uwph?wR&qT5sN^yc#l$9Wrj3AUDW&z(KHXqPzf5v=<K8
zMWj1q2c))G71bO92<ZX*6{1~OC|`&f3^(E~7!_HP8wwX5(X8+e*7$oo;0Utp_Z>Bu
zySgM{iWFp7=^d^yJu|YqJQyWJQs8(WCMB)B1UFLpOo%`*+z)IFnID1eef&44kO+aH
zePoms3?dP{>#oMob?DmARWK`Hc0l(&A7jWmG=ecoN?UvI7S{A223vbEUp`cEe{kgp
zFSI(yThn}~HRyM+OPHs8qn~JhAfF%sK(RiPJy>T<ZkTTXe<(#TDxg}Q%^spNHa8#}
zz{sp}LFNp1JK2XdR7=(scEjrod7G6Urw4lt<_Y{M&#xJIYxUz6YUED*C!;AJ$qpI_
z>If_c$SACpPcTOa0)K$=0q+J13LBB&fB+8w7%)hni2e}b|B!$TgCq}35GKM|zC(+J
zkc2b~tncGC=4S>^hn0t*gj5SG?_)RSWrnn-$W8xcjLl4t4mkyV0)7vK?h`detHafX
zpodNcp9Es{$r@wT;cG)yL9duB>Y&&Q`;ynet;wrF+e5d2Zvsiojcb%JNep2z!TADn
zgjtj!E+PE$`Nys#+W>0_myl1t-@)YvMHtV&!Nh_|0nPec_N2fpRZpRg6v_M}5$@TY
zQ=>xe_5H`hgXQ$qyQU<9>0tkd#sC4V6ImDZ7R;ajz#&Y7ii#wNh1B3apU*IdY>nau
zW{8QTDjpmg(TtA7YjQm-YOd{u7*!*Jy!L-Ex~sP)aFdFVh{lj$2LYe0H&El_LO<P{
z4EVPJAcUjyfj^}PJ4R_7?OvAojJbGFh%jMbVnCBVXJaU^Vg5x~em3-ZeiC9_=xCS`
zFf*V_pI1|aCa$ir^;rfS?EC^722iHY+!&r2D?P01tPk=3fVdo*UK%B-jT~d#6N3#R
zvm{+u<HctXZTr87lJ-LE%YwBm!nQ10V+{j2`gDy6>xkCC?8OPP0;fB?{OJN;^LAnK
z{aXm%Ne-yre8CSS`j8EV{wxh6fMyXWU_HTwz&e2f!gRL~Q=g&T5&vacU~nJl9<wtP
zH~crqSV$oVs=%bOPfTZg?%)TVy>HG$ZD9IPjHK7B&d_b}`isL+pou6h)Ey{C@Kzw7
zFxnL@>@|3C{4^(&9iWLTWV;`gNyP8}jb&cELS3u;N>ano*jpcz5CNbe^&$ZX@_{2H
z!!BY3*YOY>761_(*x!eGgaRD~J_tnXlNO8M7wh7HznzC21v5h<M)^NeFYI|5b4g$s
z^?C}-5~4A1z3-bbBQuIM#g0hpE)dwmMl6GS#)p8)2!&mcIoyYi=tMK{KL&1~!r39d
z6fkC*GI02*uq&V`)Td^`h%YKhEV_qTM{2BLR@TvITB=n|lxPPl)Wc+%B5@kTy(9HW
z=BHS9jH6<4l6OF_!P|=={Nt=L7$$_o-Zhv9#IP`29l|sC8qy{B6T}->mE;d0AHO+N
zVq-UAVVeKNB{StQtWN-9H<viuL(h6tp-!ar6S-;t=CmS-mk#@&cBV<KjR*R;k^~!K
z86M0MBBX5?ILBaMrit)0bG{|6@_#OKrdpPwni@|t*I8DJH!i|vMp#;*W<$?_p8^s3
zHiHa?>KMV(fON(txYIQdtAQ7NNPCol`|O>eH=IX*@X0=MNm*r)vL_Z55)>UpTHwUk
zB}9L!`CCWQKL}Kk58y~>Mvet>See{fbkjHR0@v}L)y++Wbqr94^Bb7U=n-iVf+q(4
ze^1XNS+zfPwoyF*bz6;NlV>LIN=j-?pwOBJm{%}Apng8_95F5!A`}dGFp#uQS<ROf
z5f}Uj{C6J#WHj^$_+fvRaU?zlS{{@<cnLULpw7PsN>m4?4Mh*03QiZO(TD$!-Qa6b
z|1=X^Bp;QURU(J5Pca{t8r<W5G>%_KxC9_Wgadz<c%5+HkUK+g!(~GdOHuH}-26u<
zQU383QcL0X-F=VJnV=0J8Nz|#*7s*V`PQc*?2o`1VVt5)i0!~X!YKJv&)xL5s!sVR
z3w~%P5Fde`(kNgsx`oFia-d)|VhF_lOHC4#F@PlaZy-ybw(&P+qI58MC`#}ohT9cP
zWBdcQz;DqOlmj~0Pv~;brzC=_=nALc|Fs2UmO3bJIiN-AGnn6}F;5+Y@U9REpUyA-
z^S`vlNOj0-u=WrwV0yqSVQ^)rORz|wL7$^BQynok*f%I-@Ngh`pUNI?V7sD_<F5x|
zG$HWprX!lkL@nS&-*-!mR&%Ar#He%%p}OzLp1%eSdhEtG$9f^(rxQKVk|7irUijoJ
z5ytRR?W1m}Bb&v%5KVrD5C+ByQ<+T8!2SmS&eY4;{D0P{4SOpH`!oNz2lfZ>GthC|
zNas#M?sFrNNyn91yH@+oOs>aqJVBbh#XOQ?x9LbP^?fVRNc&Ds?sFv3Nw47-MX9JM
zJ~LrD_!N{Scq34Y;U$w|k)8+e>o3F0Pq`Th#NbRR1Mz?pa(!Vx$W*X3g(ED)dkeXL
z9bNbLj7QTp`)MHH!7mH$$Oh#4EWmm)efty7Qm5+7ODMj~$4^qHL`5(S5fH`L@=R1w
z-`5iZ`Z38?783pC{B6erDfG1OFytJ=LA}hgV~Aw0PIA~J&v6tEO;Kw?3@<2h{ublC
zBV(GW$sn}0T|HMaSzoJh(<0<ZZSQnUsJ%>zP4WxwY3>1xBDj!lX@uyz0_guZqZ{}u
zBxE44k7g_ndJlZ!zDWOu7tAHKE706i+>F6HL4DTPEDdU<3l&J$r?H3cY%tcVcc&*O
z3c_|KkZwNWN`1%I3=_ALJNcd48F5fTc}+?W9To&A#oWeVB^VTncGC;F0`^A`k2GC}
zqVtgoz@EXl95gbvTt=F6<@3!!uEkY&h}px6|65lGu48+}2boRkXJumJcE?{WA;QA-
zYMumt>B;q&$#{*p(#hiF*XIM#6ze67X_==}FZzri`|PlRcrDq#RR1HF{Kh>FzuKT%
zqJbu)XVoOM^bHcB!!5oAh3|EVzNt~Oe+nm5<(7<0%?82#Teh@h_qSya^B-IUr!Nim
z(HLXgac(x)@;i1&!(5%ivG%ZX!rxdygtlxAp<DQ3Wq=ZHH7bQdx(8F6NqaEbhx;7$
zc1-n`dS&&BP#@nS&t=vi63sbl!=_<U6rrEi3qSokeOOy?lX<M8(#2qB;pbn=7<7sM
z<3K^43#qru^E~28kXC^;=FlyBtEj!mTVRe5t%09q2b{E{{RUsi6>SJxkg^F}2qt<o
zx~-5KkpJa0&4r0P%H%WtGM##WIMLDak<Fh3E1;6ygs_6VpF&3UYO(`RC&E+w*;K(h
zYBiaL<Jib<T$7{N7t^k|<T9x01-ABX^a$%{SKJG7-v)Csfy3fwcS+fr&On!~=skyt
zEypp%k*A2^|F@2^P{@8$H4NUOSrUS?C@GBLpzcKm!59j9{f+M>JVTaFBlE{|SoKmr
zA+ZsHZ(d5yK@%_+iha~n`xAJ?n2!sB^7k}`diE=)iU7<X{*wMH{LW~*3DHh+AOIvA
zvifIrF@2OIILEKxo+NsK4-O&i)Vs)cr`{Cf`%1?$c-PgRP>Rwt=YP=}@@9@ZvCKJe
z)f@`qT0;dj;60SoYsnwZRA&}1CZ4GzJ}xvLeG2{cK<<PMQUg`k^ThynsQ+jUjh65l
zK+1$k{7D9_k$4|`kHi_4ObV3<Iu=|=^h(>dT8V^T=EOK+r4%(cbvZBbR<K=7DTJr6
z@v)K%^>LOIVC-Pxbro{ihjDBe#wcXaU2tifKaMb_A2<~%>cLr|5g-ZrTQnzEJZ8BH
zE$x9Qtw(lcdi0wp!_LdO{Z~Q?np;GIx1_-fRGQkaO&ZCOud3I^8-S^~AR^1>scU(^
z#bbwS)I6+}IQb=BjI$*BfX=+MBNQiC9%qmPXHd?6BZe~(D9OAic{lu@%vzkVWzSE=
zCBi9Gk|6%cU`&;GFG1c8xlj7$oi0KCvT8J@8FS?5Oi9K8Gq6o^Ye24psQEuXhqotZ
ziTF>U`*&{1V2}B6*%s<Tk{HeLpF$6VHH?z~BrS{z{8wNY!$&GXmw;cy8$xD7yyic4
z$L|94Tk$od%*xza?Y~<IH$aB90eBkG^8S^_t_ec;>EX}5#^BC?YV7<Lk9Z@%3x^~H
zPs)etpHd#9P@aH-*V-cydG-JmA{PF;t^_h8MIc5Z1mL@bq43=mro1P737>?2CYcgR
zx=pFE!GB{y?MN`BwC}pCbPPw0`I?56LV{B!VfF(*DV^-1=lfSWS-9B23#K>hfEHR#
zT(nWq7y)$v(s*wVy<V~Lt6GSYLG%q0>OdNxO3D|qjs*r@5!j%{JWG>)iYc!Nf5HQe
zkxI5o?uYVz6|pPsi!)%lCpE-Hwgn|0a!DVe7w9`Qnht^r6&67}55CkqiV=TBJRqFY
zM0+kp69Pab^n^MCyarKQq}m|wlzKxHu2<I{RO^t6#=83y%|Flugq;Z!$J&AUP~!%D
zIzvv7<a5eI&Y}3C5^Odk@!gP^B>w2E?PUx&tXCv#sm1D}TcoGFbpVdX{%=HT_<j;2
zy}BP9FV7bZOJ0zX(kV<OqG;u;6dHo7+CACu5=9deP7@6D8k9XWtr_JFbj-wC?yy<~
zL+l~jfk?uh#u#;I?<SJ8l54oX<s`n;Smw)>MQM}cBjJ=n(N!(r<f?Nc%jHw@N(OwC
z;aKBHw<78gXgA>dP4meQ$oqC7vqg_{5*$%7JR)jEK6#Ca?|4<H=GqOUouD|u^#aL9
zvRDD$05l=6OF&KjrF3!z!lf`TiV130FvuQl;YE5@yp1TQ=ie>nBJ7YJ%{Hl-41$7X
z7N0d+-nbxnV5tfT7*zt6l}n+-rj9JR7s<#9Er>}t(bO7s<fA7O9AzpN%2$@W+!E5I
zbCYJp(D*7OV=f-Fpxl+&$fn#Ma@5df+7xWCU)~ZeDv-3UmN3fo5jgVKRU%$lnzY}O
zj|(`(NFPe+4-aT}m{8>wD~2o1qWeBfUX@Te3R#6%@LSDp<3@)^c8p{wJe_S3iPA#&
zBpNuQqM~w9u<bfSHa)8J*bQ$@#fFeED5|L1LN1aWgdx*K2^MR7F5M)ee!sU(sB}mD
zUO#b(<q(gf-g2_QRhA}`Fxy_Qfd9_pE!!BOL7w=HQ-poEVsyK9Gu)tXIfAHoqO<^X
ztDaLjC7u91tXUppo>Gylr*_*$uH?ruiJydDZ06Z)Ym-^b$7Io2{f;6OyDy=aQ7&Zb
zI*Ok(S;KVE)2!@K<l*++zQ^R{hJKez!b0761dWM><yNr2tc5s=GWJT{L&jSO=7e>n
zYgV*bR^@!YOR=U>BPx~cwBBN+i;5SW_17GtYix@*gl5Eaox8VK!gsC#`HD4752?wq
z1#eSRdamDLnwF6hdOIDT;>8;^FEkSEbgK(?ykP;mwm$%eh<(OBIc0FIznieCfo0Hp
zE?4SY#Bq-mG^!_7BO@Cvgv}TxSSc3NNOx2=!vgs>23nCwDD^wRe7H<%8D@FeHt#*<
zE=8sRKA!Y;>YC>Lp{P32hE@)eO15kGO{K}r+~Ki_&aFUaEcw5r$G@fh#LuO;<eEb&
z4@uG20f$q0hJ|6+IDZ!_!3ch4z#(hAxNZ4W_K_vAO~18xSDScW^khFeePE)^le;RN
z=WSq4IKrZ6`{+!nK)&s+&nlhkdBgtk#&^8UxC6*N>Sp5C@ir_A{$(SZMSp46Gid+)
z=0xshkZ#>rRL!8M)74<SXp%s2=93|&zIsr&8d@IuxKERpjJNgG=!rHzHB031ozCV&
zYE~sJx0L8T$h5a;4ME&rg7SeZMV9o=j*LlVWb)iei5wf_o|eVv_rrzlp%<jeh^kBl
zi_7kJCgA|NdCJTuf-47wx9X?ZlH&PYsgIne+!Bsuf2G80wG0&Y>Vzi%88P|`c|u$S
zJNX?;f?EYiFzqu&g1jszRieZ=wzweaLL%)W#!IqvpxaGG$%oDx!mwcJN{_PGv+8^;
zro%A%MXfxB5!>`<m`wx6qUi=R!;@Zi&n`>#z;3$c?KQXdXFvO_PzLswz#{tRaMQ$>
zrS3sMx+X;yOSP?DeE0_Ndo!SX1^jzEx%8tV3Cd~U5(x258Ye!}K*ZJ^(z}Uo%uGO-
z=o;?e3i?jmDSpFG`1}F7JPYB@Tqxe>LnQZ=kfwY9Oq>7_%G(E3da$2l77_eqT{+$=
z9Qf|bE&UsfWHtuMTM*?4=Y^#A8}ywhBqc_(5y5Xfg(+N#QCeQb`CEI4B#kDmXK~nG
zUbv&?@#ygi<r~Zp6dQ#hbqekn%_2^Nc|2{r-VC_AC;Ir^8Od_b6JcJwjTozjjwhAj
z_Go*n+`@Y-gM5&v#yY*mG#Qpr)w3L?70qwxX8GGRI@th?t);S1OS<`iLESKYXiW+S
z4iJ7xwZ%ht&T2XD3S9?yL%>FazlEb{)r)03eH;bxyzU71w4(|ZAK}&n=wWRHB)*2s
z8)_pW87>2EO}ZGV{)@0;=um!T2?FI>U4T||SWf+kal-NyMb_4H3G6TPE5XW7EUUc2
zH;sD8NL~T%vhOGbX?cV&FZXEi|3G+o#~s5N73q0LJF3JWsa6bnf5aSHEfwkEfn0c{
zm(Kb@vYR`KC{XdS-Il-6F_ye+q&lrH`6*OG^5t?Rr0YQ0t;@G^SCKhxm%p0fF^Jat
zudM{OTIFjC#+FM^r{azPmBu;Lx<1Qh1s!lFwuQF3yO5CErtx>uE}TeVsu)~#W1&HW
zYd0MgmK)^NOf!+<oLWw2xBAPDY+GERAJ#PV)oAnQQX!}CJTN<%ReHWZ5?RHqY_ZZr
zKgOXABYMx4i(p*l!aJKk$X7y&hF6z^HEhv?RdbnDv6;nin5yhqT!M;*S7)9kQc=S#
zvv3hBrvM~BcfLWdF=#JwO3kY^@14)l{37cLwDl_}G@rOyC-YJwTr-`EwFfXt<_Nc^
z4yNu+{h4YZ-3euoaMWr+Y$DJ@-pHv2yXw~rdNQvR{#n1A-@T4MCuq-LZPbFyo>mRG
z8s!XpvJzS140I6pCE0}Hjc|Y=oN5U~HqjFaZ*a&TT=SUQr-$VY!U~Kv56yq6f_1~(
z1n13k5OFXQcDLu@o8NS)N@vs2%NjD3<F4K`i2Te4InL>B5J~){?NFNkD6?hd1LF-P
zgvyz))-9<QE32sCOtJ|_^H$9oY$A_XGLw2SJ>d&09BqFh55myr`?ZI;sz}Z~*xblI
z+u=XM5_2D`pzmydP?*$l1eHdZK&R-u3|GU`?@raWFTHbgZrydf<hm)dEpk)lp@p{~
zAXS42nLc}B3WlJ~*_9Yt#Q-8(L3V?)L+MC%2QwJq4Pvy)5!PbnmD6naHl$TQ(@{}|
zfL^JiHOC>FVTVV^cA?GXyu!xoz*+Yv!pYnXWN#{fx;y0)<Y=;N;wmu(3LWxT(JN)B
zMX?6IK+qj?ef00JAA7x^xJ&@&Ew{|C(M&50#v&|C@<Y~eOD`P63J6h5<yS2wJw0pk
zy?59B`x}$68iYGcTnXZq7!4LIRB)E$M9WzlrUZWWQ3n69R1^MNSDycKoqf*Fo)_fL
z3Hbn)1?Lk#4IwaO8BAo^Yh(T;&o}b?Ek{4HotFnuBi&b%uYbz>$j9zpBMpbTLm4H9
znQEOZXFSi&O8aq`_bOV>Z6h-^h;gy`xZ((&qFYsAl6F|9`oK=zz)ocKY{SRuJAs?-
z9Kqw9s^BDNLBQ#nCVkYs{WlPF@lupM8;GI>`hj&5-Y3)nvU{Q>*w9R5?xIS#RG<Tu
zXh%U4$|vgI7I)sDrR}w{!lm1*P8DUl_@e{Pgxj7_pvO_C2;Z$hK2H~8Qg2_Xo%kE%
zPYsGU%<Wnsihy4RZ8P8;C;$;HQ~wlKlu8vs@ak$pjYb#w^0&5wuQCvv0YhvO?OU>G
zj^;yjp%s=uDac!bsqBxT`a|M@zDGq{;UbSS*5TE3E%0f7RpjlCVDI!UEC1t}Vea#t
z69ncDa3kqO;EnK{CmuF&Msb6^hUZOA3qn3zA2Hi-?nxJ_i0RwnuZTHvKne@q<Bc6P
zGI@)$vzja0Bsek|8g_RcjCEXtE8t>e992HWr}03%j)ot(W6VGF(h5FI2Ep(qcmk}@
znZ$=_xCy2zeUA37O;E4O%MKwQS<~M+R<`*a|8iOzJg`Wo{1XR_Wb9FT#V9k*QfQX&
zMf8lxw*t`Q2HCgBh^|70LB`mz$_?6@W#c;z2ZmOFYCy9{MfZR7BboEe-IuzfGZzJN
zyDvQ0@rWD|COiOPmDYq$db#CZmmF!qn+QZ^Fez1Mv?__`W=5nitJll|WAJ+vKh9P}
zaZ$BzTo-{y#}2L3!^4>u(ZiJ&F_Nb`7+q0nhOv16-^&G_bV%3xO@dFZy2NkK+z-}5
z#3(*s>Z{12;m(=dgurkfLZB2kVWbofVf^Sb)YvybF@`bO0hRC>ZhDA}HwGY(Wt~JW
z3*svKP)%g^-X<UC*-V~up7F<~%UuZ_!xXbMa8^BuLr!J1H?x}34SB*~|A)%$CjLx_
zKX<Ty<@Uj^`*^+R97!z0e?}yML(`#M{^M7n9Fnfkq`KLp#vgbIE&L@o)fb226F%8n
z&lg&D@3>kRhGRS7#>eJ-he!APtA|IBZ03s0Dv{}(L3I=(XIZ_Y`jU$_S9v5C-MLpq
z(}(+VD{dR&d#nS;>)EU$+Y(;OwlbCOoD3GOTOk&{tqnF$KQadeA7Q(x*p)9u7_X@(
zPdV|oe_v_Ujlw<gdcRQ*KYl1W3r`P;%!!40;ED{kwUNi}sgwdn^GAtz34aSb9!C6K
z2!Oh(UQF1KDjjU9RRq}8_=`SX6cv_c^D3GJy<S)e13*?Hfb&yfz}cw?-~vZD9E2kh
zex4>AewHQ@e&O~SJ2#Fhb?$a~a`x}IaJ!6MI9nsEUIg+<mO^?~DFXg*f51<~uGWg;
z^{!H$ZE%S1jBe!q-ds&7bfR9~Re#X*a+sZy8D?|W-E4GIeYOAKjQj+~R`EsnO50sC
zo}I;A=GKcS(YT*bY^vYyuBexLl;Au4gi^95l=p#MnJ=<J%#l|$jxFCRoGDpQ#ZjXv
zqJ!4uD$V_)2rcmKSFU138u{8L+$*<;5f#%a+$+!2XNl@57!|H{q9%X`JvfI5*+o?>
z$2c7Wu~dp_1D1*<5z2*bnr$DGCWdM89?hsG4#J=yj+1A`qyeZg0i#Jrp#9t4xVi!8
z{)#K@xHKB%xG)NITp0~^oTmzO)QH?J!R$21gH=>6Zxt?Y{g<W7J;PP66^nOFi+9ld
z(2qRNl0*XLN(29_5S!eYT?I0hs{U=Z$!D8l?F{>|pBr04v}9FyAO4_2?WJAX>?xk-
z$ofL{t@zbGX^Q;SJl9NgJHx)lThxhJiN?8yO#<PY1%q3OTY^mKim9x%TyjgAD*veY
z<hN>i&mb(>dAb~0O&*OZ4^_KwezoqZ7vEkU73=!pIC;IZvW*)Dw+^U%DlzN_>lDv7
zMU>7&<`#XxL3rJ$4^<1BJjJc|vQ9WlRYvNK{xUX)4ViCrvO-!ZC$%&J`dU711rN?@
zXZxuO|44qtCwuStNY>=4wEB$9W@yDX?G?Pbs@jy+%;i;Ylklfc$&bzh2i?tvi-D-}
zqEkUGj^ja~#9}D()o_v3jKMF@MyFnM*GZRbWd$WYm5}Z+xP-#Y>_Myq3xlANn6r9q
zjr(IeoxCg-g=<}9X;don5|{RfdG)X?A&zrB&ic`lYA)-qV&<*oqMBvb<J%RzVOPLL
zbgR(w@6?$Y<#1Y1-uK+%3S*tqvWjv_J|&HQenw>tHU$r~?!!g}54i2a9||6LABXn}
z9?*nG2nrrp0!L8_9!Lg9ata=Ven*oE9)nE>&$3C|?A7qT&Et+4ni4%L=B)~q=tfQr
zd?m;G1PUIjO$RTQN!x7IP(91$#U&aUVp;2{DPslWO3l4CyZ0@cU7xicnq9ZoE%I4?
zmrto9wl;+HF{=x_x|xP@7v?sS3=E?SQ@XlVa*eh&2J{L`3mt_=;+(;^j@U3Av*z0@
z$o_rijTt+^+TrpmN!n8KE0Y6jaT)eRzr)%2GL{J-Qs~b8;*Hu9cW~BI1bk|sn_0T^
zpqqy;K2!o&_$Hc&@raFS7*Lv$Q<Vl~wU<SfMtG8tN;nzQ?O~f;#?8f45PD4;Ov=KH
z*w&p9Ah_f?2L|4ESl6Wy?thM&dt;yc%^kmEm~v_vmh6}H;){xDVeTcQ=NxIEjc#so
zN!38>_nNE-F^1rEPg5B3-8M_A@@h<0XgR317aWenad=Uu+i@H%)wyjDxUR?ziavM{
zH{oq9Sq#K@zynRn%VmZ3kfq1eXx3Co@&?a}6tlfR%$$(5qY9#Bg^#KB1l_+VPe91&
zMLfv%gxO_z50KT>IpZvj!nYCH@?u}2TTdu1rHN{^lrsg_w6%Qeh&+CUmutMDeU+6<
zYSPozMNF?`V8EW@NW~6cuw$r(2y#!=MB^Lxk*gH<B$m4;S+lmeHFj)hf`ZxvA=fyS
zyyV%|Gq8UxGPGcI^9{Nj_k>jk-_@Bply+rcBP2Rn>ReJ<L9?T2JR<Wli6bT{hqw~D
zZ-sYWtRT~J?V9qbAZM}5nrPAX(<k6S_-%xJLN3`L_!Z80Cf%q;T@^^C>a-bc{4Bo<
zfABNclzH`Mt+agwPnO~Xs1SiGJgI-6QvS^J$HmXCnO!`LGv<7;jUp^Q)3>WPtMl#2
zeXYjx4IYj)lYN05@h{@pwy(!X*APssPfFM9nKmtDuI0C`Urg7Ij>_quy7L{GF|~bB
zjLI3@x<il389h?v+hpl{2Sge4J=_UkcSgJ%ztOiSbBU?_C6BR98fKhdx@ujsV7-9E
z?i983n=@@&`m=0S!;5g3*~na@XZzM^Qhs$^Qryz3m%8!km_#}R@|-iX_wr;xczgJn
z9{R!S7|`}d;Lt4Y!1rgu$IRTCToth3c6Hs$lKDe{GXpO(VWfnFS;+iHUz4EaZ5X9)
zUCQ3N{|O8G3*pbLIn&SanP9A}={2knmqWZt2WzYnHq9xd>I3=_WYVgTk56XNS<R7H
zlIY!jZFey_?g8x@N9&Y0wtr3M<oJiRvBWA}3Bt+RG&-HPQjo3+{$ww6G!^;IJdx`-
zuv)FotKYHDz@usA&FU}>&Jh_-=?D!PbEN)QAwHAR{J{x!mYKy}X=2^n;>rneDW&A1
zIX*|!Ikx`&J8|#Cx>?vsH_$!e2;<6q1%<FG2GT)b!M)?`l2ojcPsB<u-WR=QTO;K0
z<optUpcET)$+>aEu(D2Aba9yLk7E*i$Qv*;mz(Q|uRExkGcEFrSTozEJOb(ui#cQC
zA~hSSGal4kXRAghV~GCSY_FMZXp2>ps!RW)>bTSVg;B58br*|{L+>V*55ae}YN;hi
zC4nq}4=wKJ+1tjy|30}RBrR0yY3FjWD_~n>d_E0$l7H8)4Ha2XZY@nM!7A}Y)d|xI
zmbL}-XJh_Qo8F9~Z$vqtWNoaXZIqKk*j3MinoKVZLP9ubFTv{4iQiDMUh2(Sshk=u
zb4u>OQY?s=@v^VVS(hm~hJ9Tchb`r+Y@&%-3-MbHLi$p6vKmaS(&T&#YBo2#LiqFD
z4T`XrIq1wlJc&^hfgP@=7@DmUK7cD>#h`AAXuxw;_JT&6xjW5z0Rg>RVs2M&Ny%|X
zN`mzbKA`5tKXJFqh<n?Joj4!8ISa*YP=vN>(YFqMF&vhOcfT5C;=)@eiB#0LFB3&0
zqldBZg*ib`pJE~Gw~bIUk0?8Fc~FS9f|{#<bd8H#YA(RP=f)GO+&ie?bcTctYf?z|
z*(YjgKFCkZ>@)kPTxIhTdon)x0D9!?o$4rjDlbgMP?uM;sk2TedK^lo<9H-IaX&w>
zSS$e+al!PQyC40atYsGO_H)aS|Aj4Q)QN$i*~Jy=*YyQe{{7T#p{s_1TpkHo*AiTi
z`-AYZAa*+Sw|#KZeOt7D*<@FkWgRlFRna(+PH@FnS^st-QpsZ&5NaDhPbNsM|7M&3
zi_(mYRbDM^9I59hU8avdp@4;!%SGv4vFA{yV578U>Hx901u-~*H&O=(XW7OgHjI6~
z0SsHU9gr7Vxs^oRs9M3Vj07*gvcIxUrpzG7Xt`n@GxH{<GZ{fycAEa4P+2T{TV@}{
zA~H}6m)hOk-vGAPJg2*!6JeBR`LJq2owP3;P9zX%Y5H`*PI(qnC6fyjR6U5JY46D@
z(Uu-25oMo+);u4%(&qUZ9n;s1rR1u{J|w@DI<sJ3V6x;J1{K>V!F((Zx5CwR7!zjF
zH_uTmiYgfet+6L`Kq1JJ5UfBS4xA*mt3RjxI+@h)4ZW$woYwl4--rOM$yfhLRwoG+
z{Ml^#21ZrZf@b<`2`azn(_?alAebA1Ste+1v`00pev!l)-}?TZg|<m{UgUt)VOow&
zeR558m*s>(Y8epD12%P4(GU`FP;;3_ZCz{l-8X8ulAnVb_bErngyal*iLJ`$%bsH(
zKOogwm1Iho>cA5{1Db5qh#Ep-jI;{d)~pzWZ>7h8p1~)sI42~=zI$e$Bw?GKtE$j^
zp;ytu=XCbqbDOgCEx46_NbZ^8Uu(B)MNBF8Lfjl`7vB9Mbtw-CiunxUkWxO4mbd<i
zpwHpLaYvI-x~-1@jtb=j;|-#X&+U+a0_jbH9K-JmPy5C(nL**@LT{6JTc2}##t@5y
z7~EhO+|pIS1FiZYI^p^&k+2tale%~&gf2RjWL3Wz?c77$5o3sl&pfw~0=}ayo#at1
zD8j}<o!`!)P)PfVPy;hpe$`dyim!}EROcdQfoN96HGq!^5T)BY_7Qb6!tZWvd+YHI
zdESA=@Q%@#{NY_cYL+H>#kW2kA|tZH$6n$i3dG}U#BwwWvk2!6QM>mVTEw++3|3ag
zmJG;NDE2q86FTT4exHj=_f_2A&2zUeFLa6{cx7eUo{wP-)xek1Ne!BHX@>nE%qFnl
z=IU=hc0Gv<`O6-|nYlR-0KoIqfMMBsz2-?&sw)3Rjn)5P&j(_{QfP3%wvMva<7>>h
za*ERiY?jwo=d8@HjFENghKlRfmYQI*=d;-w6U7Zy9^Pg1YtuZ*M3%TW5bj!qcak2z
zU`Oy<5lq})VS3x}wA`inQUtB|=@3=#$^>;yG`tfp>3YZa>fvn#zY7GdoCUvk&*Xl9
z1rWQhv>L^CJ{bQ2Pgq}n@~kJG;wg0P*k}fUJPN-r#cm<(vdlBe;_H2@{3eyODucvd
zP0(huZPOAPuk%o6<6R!Hs5@Xcl`&2Xy}ZZCj(3WFm60&wYkwCQ0$t&4gu=eGsCZ%V
zL-w&qF-)yH{v1Q`QKZ6&dzqko%ejI{^<$u1zvwkw?IRu^Rnc9<)|h*lxLjm^39JYv
zTn#b-A6+rW?UccR+E*F>(1t^Dwlh613>ryj;T&t#?s*A^9z(}UT<(+S9;I<GNoVjR
zccbQeR3g7t?sq)ouCfUfKD9i~Y)jun>AG!pM~d9<)BE0q7TNrs4l#iqk{c>^QJS{@
zni4v_Nr{-crL&AY#X*~8o3fw0Xz)?G%iudXSz%`7u!FOh6~@@*bB?cgRdKG5NXTTF
z+QF>S&zPEa_lK$AAYuvN{&G}S*~$$u86GM*yj!aus%)ltvSo-4@?emU!_k7!--?#v
zO@%^;+}p$K|DBh}yL>W{R!)dZ3jfwb^O<2YbUmce*AydK%UNvLb$A!;Y>>MFwDB<W
z`A%<Y`XwCG#O%u@E@J|b@mE15QE;14I>)gw<P`M7Lto%5C^E~EPhTjh44|3%!VQmQ
zj(6_7O4~nJ@o_Rs&-RI`+ic&6>=>bX%2K}zL$KiS<j@@wKGtEiX6PU(&>^j|wJuZA
z?#=f5&T?aBg_U97s))~u_?44AR_Cd;iE0^n>fh=S1GChXm(35E&Kbe*{$b~)&#FZq
zQG?^t>Be%(=D}r}UXZT_dn)fIU8}WN>4$WAen9Mo{e9Vuk_MU;E=#?(6Ve6tDuW7O
zL^>fprn5N!r~qKmZ=W}hEJtu~NH%?_lWL}6M7)&@_oiUq3ZY$!k}K@%9eZMG`CzmE
z#+8d3o>8tkGwvq-+$u$=9BUPESjp`EYZ|mrVS|MjU4tA`(*==09-{~rq4n-`;Ei_6
z8|y`}9sSE84)}#au2EGy;}eb8mZuCUC@G3EGyH&UKK)N+;H;FYr7YjfQ*RxD+*Z6z
zHdwQ;6T&Z8>UH|Va?hDZjB}d6XB58&H)|vl6?qv_=Fqo(&|R8xvxJUg>vU1!T^I*v
znG#+8A&PYAkoIbyu5_YjIQ~~pq@|>ig{2;hui+cdeZ3806{FKX)P@(e=a8#vZDiKw
z2=KTG0Ar~5`<uV|_qoM;A?3WA!b7+WUK&qRW*^vVwW7&O=T6R{B28;lr!-6`v4)3!
zd&u(C`__&HgE&PBH^uSh!D(ezk)4KpVI8zYH<u+(1e5lE=i&BcS5EZbXdLIOonVYo
zGKFjuQybWKu_yu&5;PgPDYo9GCH6T|hK3`ChFQ_6$lY_@&fTu%s6w@<e=XX+b{9^q
z6{aWDf5V9Ve*i>4yT6MJ-&*<2Xvt|C_2xy*&i$dP@&3YYZx1`YjS0`%{h?|(y5I$;
zRd<HeboX-$s1VfC<bPo#j$T4`@`$pNLzKNe6p1L=%gV7F#k}8g?wiN*ZG@M#k&8~w
zHsKmuo~xjr)|?%sId#ib&eln)qn$^c_Nrt%l5q{GJoUzu>Ba?>;dk<>RCtojys#OT
zXK4QyMiTS?#Yp7;tC7S+52YM?p@rz``~J0wnz1WYrqeHpHt<Ds2q)4h<LhAiSlViv
zBR`Q2gk)@5nQLtSTHDvrF7U5|YnEf@xe`?vBy32etyhO(RTJrtX`6#H*V!fqE`0+I
z`+AuhZT}{l=w`dg2HVK4w-YTEG~YrEXKp3utNAutRpYqS)Z}(MEl7^{L1&At9hgPF
z%tPc{JsfQ47A#N&Bj>h~Nz#p2&v*1hy0~FWR`7-6>-VzhaZ#B&05Q~Il2&MI9`cyd
ziV*oF`KE>B#g;g}=?1Ke<{L%EESp*&SGBk8x~gUBt6}Sn+2g-VA@`8&fO}|a)pR|k
zf{*6J9S80B1JVZ4<pIO>RHU}T{xbaC#*A01K^17pRP;G28h&sTnu~CGHC^RZ68m@^
zRY`Ty;(M-6`a*>}@4p6xDyJ-r&YgQ-KP9VFO_BK6h=1msY7dhps=77zx1Gwu9~0Dw
z&K(fR9j+|pk?7okkzD5^g_>lUHQd}mc0p8UJBb3ictNOEbQOamRTQfR9;GTCb#sT<
z1^11as&RaW$Mlff1Hqx?3YH*JkhV*SKdw6tfD#{8uJ{i&Q%|H)ciWm<$_q`#{@E=x
zJXC6gomW`4d;vXQETl(^{vuJUaw9Ux@S32qBW=pTq7T=g(gVs~iP7Q{I{Z@H=bR?<
zLQUc-U$)7jgvUs)8$<z}CeAa*!qDSJ=YVmX8c2k))yA~J*^Jb~$~@=TsaVAkeBeQ5
zk>jwrs|dZTO}dMVvTX3`7?`6&20ZDVb&IKrZMeGHi7>m2J$CKpdu)$T(K?8#L5;E<
zsWQ`_xm(Px7cZ4(r5<(8PT0gW^{jWVP0xC9x2S+z#n~6)*h+pcwyJ5N#6C(mM-bW?
zt?a8YO}4wI7CEPCCi<4R443z)9d2}+om3gsF&eIZLB$luU3FxL?Zifr)abPRbjK|c
zPFdxh6-9aVo^&{_g`p~_gd;dgRqw>3tJoB-!g28E{*X*nBqm1pB2v&Zj`*w9bJ7QT
z{(Pv})oQvZEZb`;^<bZysy;s-=`)ErJ*HTs@M`g3Z>y@_dZJr)ig;dhM^Fr{;<~2h
zKItb$RZe-ej9_VX4Kvm=T&MG)#5o^YvO@LI9izSPK*Tqnf_wC4*96Ac(Ke=*P58O<
zK|8S5jwBD+fqk~8p4&6B!AC;U1!biR!qQ&a!i#7VZ()QUh|m$Eo)CqP7sL4gW3Thz
z2&-8carA<Ytegs}O-Gw)gJ}4)mCz{ZT>bBlqyD8n$l|pUZ6^Yznhv^Px1?i}JKW01
z$1c=PeNMyL;n2vV^DQs0Bh9C8EFHN#&o|D_`$9c88gKh1*iKt{zKM1o^(N0ZNkt$x
z+0OH7X+!B0ZPbJHVH51bHa~)Mlxs(AdSB*AI@yo%(9vF(T7mvNPt$D=j;3=Na~=zO
zy1L9dE|W4nZRj%C%K4nG#5a-^xi`VrF@WiIk$V$-4ymB!q`0Rp4bqj=)tzy(n`eaY
zjHbFXnzmkjRB5UCx6)GQe-HH^tdMmbgLTED(32s?@%tIu?a2v$A=|m&e6m4zU-wq8
zT-DHx+U2!m<zKPs_WcDX50d8AeLSf|ek4&x!u!c+<fz3G?eHi+#<QIlaq=Nt4V-`m
zY^@$W@c2uxp^p`3p2V?o%4ThLQq23}=+x6lloWYmD#4d5B4g@E&n|p(Y?a9C*s<7=
z9HS(67W(EQrKAg-$F7dFb6B;56&2G<3s2Em_82*;XKepjJNuknQj~t)E=)a-3AkVr
zyQukDa{PRpF<C#@F#V#P$r@(%(;H?sY?yh;ZkTx)m;hFzhM8CF549T3PvFtU^!7Z{
zbviR&L}?z2(pT+TAF{yjz)E3EH=Or8e$7q8td2A5Ee+@NXcjCAjA1ye$Fg9S5g11m
zyo3sL4=T8(nr9#K8i5Ajzs#5|omyU@7e_2r3sSGr>ll^b%wD(sH|$ykX*ZQ${aO_J
zR)qaJs<)pEHf*W=#NZ~d4|R87<EcMy2=pF)R7SDsTW0%~+rAaHZ>8;9W&2j!@9TkL
z6GEwm(2f4;{gt>DMtWS6I4wI4N@Qub;U2&(@ak!IY`y4-JBUqG%qI>qFLR;={;@3W
zt`gK#oJ0#Lf?Rr}SV+$j9}7K8q$Y~8j8GwZdBsVg7(G=iah@s`;cUIC7eV)p88giA
ze7#8%9FGaU=T5LuBQTjp`WF4(nPwR2F4L<8c9|JJm|hn6!OYlgdU;^CnX$+8>VZ9G
z#$MBF1ooO4`%JGH*k@+!H@#M1znO8s^oqa%GvlD?wF3vuj6<eZ1`e4ShfQxx;4sZo
z6K)u0m5~0YlIo|C5lpA{e?#3A<j_oI==Iy-<aA2@Hk_PB$#*!CP>XN9P4aoZ4YX@c
z3q_{0JP4(QhFa<l)vOViLQTC(Lxsbdam4fuHv>n^jH9M+q!~DBW*jqp`DWmlnQ`3o
zjWz?vsoTFZxUzxF5r%)AMNi1nPn(%X%yeFm%30cJlPv4KD53RXp`&Gmnnnq2_$i^^
zM+t2V3mq#f^nR4krm)cQvO*six^C2kP`329l?m}U@3W<Eqg_y#m)1^l+A7l9OG>qu
zG%tTBV<{iHOVL>?>_e+YU=B(BF|wdP;<1MLfuqpEz+CdaXOTh|ss%j{)C?>FwE~Ml
zMPLc29ast~1Is{T0?S!2)Ao0ef%&1x0)~6)3TmhsDY+h$yah^L2;FWa-OfW~8$}i%
zvYjGxnL75M@sC5hM@Q-OS=0!`qo#CHIJTvXGp6^Ez!_3%hRzN1*CAV6g%e;E%k=oq
zn?e63mexsfmvIw}&C!f2VFqgXla4N``(<?Locl}X++R9JmCg(s^?EYu=F}ys4C`+#
z=F-1a^~ztU`#Vejeim4VIqD)a?WQdAjQJ`HtfpJiIu=+@vz28?!<?g@CI^{+s6o$-
zA>dz2!ea`Xcb36=Ed-K%TG&}4%Wl4w*|se(>0M=;lFV+>6;16f`8O>L+IYy1l*lQf
znzBsvf->8btfCj<j4FpqOTD~sR8e8x=r%2^plWxxK|NB@VaDiDS=K1@j*N7Pr5?<q
zHYY`6rrMm&w+JoO9<Ji-8iAFR@d?=gY@=buS<^S!44gGH&Y8ZcX5gHeao+SzHv{L*
zj0>i3rWv?kW?VFVv(3OoGvku!n`;IxnHiT&-+VK0+03|N`WBjjD`v)3)3?|RTs1SU
znZBiF;F_6n-SjOt1J})r8>Vli8Mt9)+%$cw&A?4F<Cf`LYX)wa8MjT}dNXj_%(!Fv
zHkyGuX2xC9x7iHbH8bv+zO829o|#c<`nH>aQZpml@)ekYYzzHwi5<_{fYsvZM6Og}
zCeOhV@l0bXF@@y>wlhzjld6#u2r^HuljtckA8(56t<2Nb;S?fOz&ziuP(4M=<98CV
zIe{(A^G7FP=U^pz-VRsu5LL5{d0qg=(}-yWC9uP@X2@$h13UEiFPkC1ZLdn-Hbb7<
z7L~qfhJ3drDt*Nad2drx`kb3KJ;PM`yqmV@?GvQ$xM|_}UZwB4Y1{L;O5bzS((|!O
zUvSegp0`!{qMMGT8w}Ey+;kkh`G<72>rGamw@Z+|;pSHidzY1zcUcME<?VZ=mHu(B
z6#sMXmG)QvN2&jF?v<`m|F?(!@4Z)g@?I$l1Pkiac}s^v{jgLc5tiCZS*nHqA4+%&
z9^`!**%<@0F;sT8m(1QWGrlQ%RSWDPlm1MHP2{TQ3VU$A`};`$3f!R89ikw@o5!ZA
z4<P+}*_*`05&uoGS1X|jk;Etpm#nC6S}tcEE0|U<A-OCo9K~K)FkQW@g?fwf-dqJ&
zqsp|>QrvK83;MHxzWoP#NTeT&SsZ<ZxU_61-u>^LSgbnnNLkhsCqz^~MwQc%N!U?J
z(T%^D!Y~&phbkUBi_@@IOLRL@nEE4AUUDh?{)Fg87BF>)Oil<(o`NJCrf;yDedP8T
zJ6Ru@9bd17<@B5$b!1uSlKM=wE?woi!Pi1%1^KCcB@3m{e<g;VEB;iv;)1h~z3J?T
zRY#PTs{Is0_?$MbT8@&@`2@O3hUatvdsFoja$n#aHy?&vLF#da$u0DjR+f%zAw=J-
z1(`4DV0cPtWiLY)g<~oE*fi(kdeuTMF$(hY-&8aB6}egs!_7NNs}ilWMXVqZE27Am
z`D5<Px1#PmuDbK1+nq#=(&=reQ#4{t`)fq>)c+v*H97w8l&#g#P~kTvg*a{KRcuE$
zMyPK#9ckZ`&}$?fER9u0mf;SjN>OPkIkw-}mSJ9Zt;Fz_7L)h<O^G_W(x|=yrD=2_
z^%!HMa6?_zE2xh^{qtR08IXX+9Z|(?KA(kCb6NAbu$OO&Nx?;ApTUB(GmIRaJs^%Y
z7qY-!B#Ls~#6Ct!{FQok5T1qF;rM(O6?NA{VQ5XHonwaQAry71!)kUSSh(b1k+)Mc
zI&gqClGZv_$zOvFq1w6_8YaOkaCMCf!#kLP0$8VG>L%v2h~B-)q8LpQRt4gVSwdCC
zRLc_~bplzQ3N-y>X=K>V7qeAXmQ`3~vib<Oje&_@OrO}dFsb(is*#e=Ku8-!&e9Uj
zR3o0yg(?h9dgZq%<xDr$Y=0+OgoTkh&*E)x=P9U|2;)@jEHfW{8x2i(;#DzIvBS)#
zH4Wl445P?drbTKPsM%9FimUWFDj#f&;aejHTMT!%7|fWc+rma5-GzuLgA%JSEo#ST
zVHGCSpe0`f8zH&?6xD}&Lequ1$Y!j<<}1i@TBwJ=65el?$W1%Tc$Qe%0&(@>e4@K|
zA<Hp)=xY(19KWr!)G1miRMgAzsPHO8L+gENJyM-p9{FWzSWjDe<S1#=!Vc{OEhG)r
z^LS{%39@v%`8<|ohtp(jC_=4e$tpWh7u<Fl6smetou>4Av%U*?+qtgO7E>eeIHvY*
zkz?@hdaNOCGqTavCG_r$`g#Tti-;g%6OlM55n>5n)mxX)`^~bztEcvptRt4K?-ol8
zV3AU;SI@)6wji~?)V%+hfZ8HaD-sovsGVhctBi$SDvr&=L<vwk&uOVJk6JFsl4+M2
zM}Uew4aj1AC3a$^P=kURRL@kM_VbYpQnV;PaDg@UG%YP9MX8UETEw_de`3gsM=q;(
zh#gZ;;k19y!SBbaDJk$8G&J8XJFzLYx7XBYeTwyio%m#^B_lFYHla-k?nM`|&!i4O
z`lHcBV*{61V@L2Q>XM2z$}6loQ!UbehFt1_u6AN;1kRJ?e;-lLzbr#HTH;`#*P!><
zzP<LV+{aP}N#1d%`xrxQs%YNJ5{2_*DX-&B(x%$73yZvbboyXffG~B4<X%teV9A>g
zl}P8cE>X`ms+2fiocXt5>PAy~>{UV<H|R4$SwuBrVGfljI!v-W?>(ocypAP>32M1h
z9l3EZx+33PJFg_m=!3!zyUJ4MB=}F6i)%Iu4Sl#f^tc*<D>U@BEHd_X%;0MK45qUt
zObhhn&Q<U#3#MOZ1x>Cq7PyA3`fBK6x1Bq;K*hKSMlhOj1B`7BBmK|bPrO=_Kl8vC
z<c{H)!ao9QZ4q}bjqMpZhp*9xzH8})gljBq1MM@>E#=(bQqKJ?IakOI3|D+}y;@<#
z=_AohXP!DzvIMN4#zFsBUI#9caNcO+wI?SGC4XTEr=2G~Pd3SuT57%oYbcL%N{r`q
z$ntT}jN_@BI8GA}eNLe6Y+fzwZ(U{nafUzJa5AQ<uluBK;TpuLo<cZlQoTJlmV4@8
zfA(r|>cf*UT#ea_-Ki5#Tg*9$R&>5wFqQ_?k&#>R3?`>eU<jv0w15Y(zXs-WB@!$Q
zbmCCcI7*IJ^P4t?k=i?{lF!nP?!n!6G%u+9xTYR7@^la8?Yh~-!;n=-dChky)fT3W
zHOMe>SokVFn!d5sIg%bl=`NA<NJ@8QI00kkho7R?%AUfUZ)?S?Z);`8(btgF$09+0
zS58{-kAiY?xZ{d^p$GjvxPLUPK5@GGqLZ`QzA%VS-%|2w_0q;ji1nnT?q8z5yVM+&
z)C%-crl1CO*;Ki+SQ8JYu>}3yc=}iwVvdz8Ek|c`IVtmW8VycixPJQgh03eX;>XD*
zQ<$#ClIb>Zn*_L9dktHsx4^=s51DS?e1~m!KzY6+c3!xaa6ijb)0llTo=s-z4bbsY
zW0p2SYJ3XQCQ40@*Ct8Lh|{_;6Heo7<=#zU#bjv9E#>jYDGOY{9oE!@X3EfDEM+Wu
zKF<pb<-vL-kX)f2nKoa*ZNt_>&mdM<UQS}8)MJSGN;HSBbVPHMsHZ-bNob;i{&w7V
z0{fpky5gw86^5q2c3=cqad*bCxx|vk>z^zG3yIf*Sr|}><8l<kMBp&>;<Xa*($^tK
z{iIjedv6}hoFX$HQ8&hUWahJo%;rJ-sOtqz#K1J3W!MJAri5dYR4gzdB-uepP7mi#
z4aX)sk`sBk)>&K#*NtYmFnpmJpgzZ?bYKQ2KPQ+uRU#Vnx985M>`{{+7yw=L<7B&(
zuj=kVPr!gRyh%T91ai50SELpq1^#Ks@69W|fXQ~Bos$_C!T!nN?ahm@)#uT?_;b;i
zx=H0Cdm;=Q$3n0uZ55|Q+*9p^pF0oGBD;o~<YX#TW~g=GYI8?ls*%85R>pq%^ZeGu
znD@bMvvE$dX_IyLHJ3G<cAZ{~E@$-czd${45BmFXIF2uqbT8F7I<NS>ctP47`uJ0^
zg8sg|QZ<t5#{JVJU7snM_JfXDNn6S3lk%D9c-{Y6QFh$UAUuNAoCRibD&V{(FcT8J
z)CV%X)hYLVsCSvy4EPfktDRWQ`8pR*zlJTRkUmQWcJL<G4E@c_UJpq1Dl65Cq;mBr
zsoEr!tCx|=)pd1$?Za^Ln<MDLuoHHVg)^AfPIS(jTuyH^mzntiJipCOWg6~ez8N-*
zVrMS;aCahbc+f-=Ctq!sxba6#MkRIfDA}33kfy|$RGK8;Svzf+JI!gmb<$;Dwaa_x
zU|z?=hZQn%8QtdpLEC>f?mjVa75A<47QL%E?1ACz9#Ppn+-!{2HQ%&Jy5^2?rprV>
z`Y0xPuQvJGWPEfCq6_`d0mJ+gy@5`5`GU-6XOsKyJ7*X8XUM#c#k5HsFmYkV0qr{<
z%{>S%cCjK_i-qpy)xwC{y|RqZ#;j@m89f5ZRPE5l>$LPd>bwxD)7=sGsvR*@VM$bd
zMQ(NEGY5Sa>FGVs^Ifv@R0V3*HEjShF{C7TX*Fn72K_gooIAiR)})33l@DYVtOhyc
z+64VK+-E3P>47-hjCqtGZzaSnB5t1J-_%yG;-OlwdQfaQSe2A959cnw4e<w-5zV4l
z7fz>)dU2Yz4CVe#PpGLWPmKf%Lj9yZr*=0?l&t$xB`4Dz7z0o{6(qhP|D!XXJRtOf
z{teuXYth~s=u8?P7&$X9nI!4XC3(<;m<6{31E5#sarLf)&C4m`)zUWdXjdcj$PCA2
z&9KA9GOrr`-B!4Z9l6sL^|XwhGDZm{{svxOH|dSuHt7+W9-Tgb>vZZ&Nf-74Z>f4@
zW40-#N3JMZkflCLh@`!mk}WQzS7gGK6r>))b-Sd@`O!c6Tq<%7C0J}xAcw{~hzD_F
zSi}O^Dzcab+EOHKD`)CnI#^lOA855=X}#?(t-iGWW^pywWlw_IK|hX6|5UCXzC2uB
z{v@O)t9)4Q5Jt~GmZ<lvYIQ78PoL_9)Ddxw|9{Ykx0F7`8K|6i=bfr-GO+|@u{kug
zE9oTKOq*3(?tJqhs_Sie>S4y(sK;%C?#sK!sIt@}j1;20ibSVP68_75!Vo;6DpJmX
zE2us)%Av31-!FTTsgHKr>?Ez1Q;{-*ozUbk?z>`R=NN`%jP+a?Jze`);`8pxcBW~M
zl~~hZsMT?c+<C|4buSe(59k+tqELulwb>cnwtsKrId+uog&z#Mg9;mzvM}l}R%#1V
zJ&9NIoMlGapYJNVUqEL0lja+7t6;%VRyvenKaV-5N3Ia{og2gy^$Q==E4STnR?Q=S
zTTR16BeQ-ENzoff{8cTpJI@Jp<0O_jOZsP{sSWOx6r5-MbILN3{YR~!e?^2*%|90s
z%OecSKM#zR4kN0K9-L0FP#f#r0zE=)L@}Himb#2VJp47Jf!z5zl{(z$H62_z0`1)B
z5*BFhM(43WDRZK8S>U!CUB&`^T!G~*(AV`kpV6FmvHVL}phL8`nK@rNuj=)nyAUx$
z7oo=G+@4r@w<q?$zdf-BZ%=xe+mjx-JvC<M_$YmxPFEitw;dL*Ex^^MK3#zHDfByu
zBlm`FEHIKz{^82Q{FUNuWr42hlAz9t8w?j|TyNEVp^CaM<V7d)c`&U&IWQxbWgBK+
zb@zA(=XzE3Fs=?gifdujX+du;Z(#x2eViRA@ff!3P(6^2UPuSkBe`!wFZhjwW<OHj
zeRF=_3URV52%@1v{{|z=Nc3Sr`ZpW3-A56H{!NH~+d>qjS1I(Du*@p{fmW84C7M(*
z(iTefsF`Y^2RzeCOKEHM=TnOA0hLih?G~oz=WdfVRg?Knlm7Yo|7q<_z~d^iG|{|E
zM&?~oPRkZHP%;9iY@@mYihkWQ{ic^Hsz=bO>e8EfQ}w9%K4nX(s+?QjRCUjcZF-qE
z-NM+I-GIT^#@H#@@+Q0jHh9A}7%*VSOj(j`yt5dy8si<~eCIzAHy1C})nC8wlk!HK
z8*w6T#EFP=PMkQ=7X*eGoKPa;>@_=~R^`dFudHq6Y0#s08{ji&KJN(Eb=Gu{q&bi%
z434ESTWZg4ol?ZFRwd?8&PxW?_Z+cZ#K3RWazRn=6$+)anaZ>S#k83qZ69&DzXip1
zk+4HeSJNR>JFYd5bu~<E!)QB9|3mR*CR7tCfd*rpB@I1;DvzxPo+dMTo-s9ah*Y?J
zjZv8cu5T#i)#WKWL`53ZAFZ3~gR6+(i)Gb<G-Y4hFTa>`<YkV`m2zZ)9L14%Dwxev
zAd_mj*v;p~4vZ5~{7x{98BI6BVLM07lBfSJnn$}x>I+BqX~8_22&w7wSK3%is2HK&
z&uC5SEUoh@OsZTsk6WT93$yE(-|F$dL;!iA?&3aU)drK2@*JaL!@?>LK%0N1eHZ2Z
z#t6P@3mYm*mL3@~BtdEFa~g)$@V9mA0085Q1`hyc6p4p;Uaz}@#`g1iS(-aS#(J78
zt_p3S$s!!uNRx#V>eixhGyJr`m>xAS4tqev6prf<<9IJ)T!%HT!>;SB?Qq6*xZ^rv
zG+e53lRAdPT`gp#hNP-SQ?`8Dlhoxai2_!c*m`MSWtKpzC1|yo#}Yg$eUccJp?siF
z#!p=oKT99+GnNHc>se+Go|TB9V0l)7mPrt?0RA!sT3kxCSb>(5QZ3Qr|A~=4r`|0u
zC10*UD@w^%DA3YUs-+6lTT0bSO}mCfLZZl9hg1#y{6Zl*Bw7W5f(F`E0b{OC*v>W6
zuR`@Sqq-M*+UIo~_GM=BMm(R@aS(GEals}c_@1tbn6#D!VZlmKXp^$(=k)4&JePB>
z6*3on2US?+S`marAM<6{vb1?0El|bOqZS1%6~?|(W+F}BhzS*o;w$7?lZARJS|#P|
zIV9+GFoDg{`%+;-?_SL2rrZ?4zQI<R+=#pa!wBB0p(BPo!{XdCB$BYi9B5P4P!T59
zf9zHfFBQ(T+^dU=)hiP_Ebf*^_4>_!)}6BEH*K=Ci5<2S2vasK2^NWhpy1*>aW<TC
zg2j3)II#*<8JZk~hDIdXpb2BXW*K4owQ$L|*0bz)ip`$KVdRd3rgq$K!#w&0f{`-)
z1S_Gbr;Dy|p3`Skf3Hjhx?k!AJBw?-R;lwWu@*!w3CYVX)+eHPQ29hufk_C}U@H1;
zn2F^7kR&#AoXoQ{$kQ9-SsvtBfjqc>2cmzm^pi#Y_~Lf=Npj_e|5ii8Lz3mD_aT9k
znEn4SnViuAx*y&ot8hvRy!V^hcr?^+1iGo}Mmf(3$&$?dT{0}1^C{-zFk@0h&NF|f
z`xh?NlaEmr@<tO8;zaa`!q_P)CDIZ#^zfL5vBhtB17i&<(&;}8Qlw`@#dY4W&44tE
z5T?*FGRvm3MbsCO)ny0|qpFzsL`CK?{vsVad=*X|isZ8^+%`$Sh<nu9E=NFoB<)_~
zf;lM+?lD3fqedL#%N9(^H`9s`4Q;VPW;C?b3WcMgSFDh5La$n(NHnydw0m(Mb}xFE
z%fzX}oPR$?$wJm|LGi^pjN$B}0DcJ;X~7=vHno)&tM$iFj>Wu_X48uYM9TvLeAE(6
zIEML}$$Zom_j!}|h_=_PwqgIbR^O@LrnTQAl9MYTlSOh$C1i?7-dhQ|S0txaLZ*u3
zeU*^=MDl*o`nr{tz=U&~){qD_w7+3BBsBTZ<-<sr{4^6$eufiqeu_jLKO>3n^D|oC
zsd2zcT+2^8@kjJ*zrUj3&bk3GLiJ#TD1#e=c|tCs^|Wud;>Ae))A~{Z5IaPfV9|m-
zRo)jx=2NitHsOk}XDR*a{A=*9*|T&4j1!`ZX#Ou~i<c%kmQq`{-6LpPCyZ^AiQns^
zK)x@%-J%Z26KjY-B%g{P(9jWWytX?PY5Y$2Qd%_b*1MPXHP&_$602<r<xN?Mkv;Si
zU9<$~?v<c8KyeA0DnU_zMoQ3q45CmUHVCPGJ8bOI+EIJLARLvXL_VKSMN?uaRYCqO
zoiLa(31|k<4pX&;&KuZES)KoP%0w5s6LY>lh*3DGCq%~Ih2So%MhUaq-%TS@b^_kt
zruq9W2JF?P4jjrjHpxiu)$_cYj(*VdNLF)%c+!^rEEn`@5z`ERZAjyV60+SOu01RY
zSj0)?kWX%I?tyBMilMJTUmsPl>1g#qPPbs_FGHa|YPmi%+=M~&8ignUwK+%Pi_ob6
z#Cw)7BwB<-B}7FjdtclAg7MBzgqBDo)T;4cpkOr83duRhq7!Cs^`Dbi_irmweI@@4
z>RklvQ*?}$srlkU;i8s$Pe+4yaf9#H^IhZn^9gf--0#@KZACSXsaV47VgMysCIub>
zEmy{KdLCpQ|IaEy#9I26G*fEj=YXh)Rx7`Vf%l2Bj{+p10Q!QTGx0sEMU22ob02*H
zOue{QIjZFnMp=~Vt(Qd&8s934ilUxWHL3^|J6W_G)CF%_0If`xPiQh@5Y;8xAZo}$
zWt1wnOf!d?VOpa=nH?^EV)&`T&yXT!S!Wtokz#&XGXh16CCIvC^cU+Ozm7n5!kp0I
zB(#or{5m3anm}Z0_obqxW~NDrXNzJqoU(&(F6B&Yc#LpJd@fA^0S2oQgI$Rsas>>r
zJkL3d!LGy*sl*Vy0*0zQWmFg<l^CLx7_2K`7?N_SO;a(L7FAKZrG`*TZH=emn2u@&
zFBG85C=M}-L@S3F_}a=LMv$P%mR#IqoWBg2bqO;25@eApAd7MSGGz88$Rd{@i(Ua)
z73VKQ7P$mj^b%y&6_6>aO}WJ(mWmaJSE{Nwv{FOl5LnI}%TNr@y_B!LN6XgH3{P)X
z6s>>WR4hwXtv`S_D>WPgsmb1wd{B7%!v2FI`H=7qg#CwLslQ6AFd|xAMDvzHGo;o(
z1T@bvno)%2Vc{JL`wxrcBf@(>>^~xs(}ee7*q;V`&sXAmp@{Eog)d&~9|pcPWkyMB
z5e&=lizTjY2P}nOD#hPHd>xw+U6sA1?Oke|EdA%K`H5e4H{~tZ+^*LQVTS*6aKfd}
z%I5u@7WCKsR<_R{u(GX##A7rM663#%GVik5c3bH^FbcF<_QH&5ABFp^=6#f4Kczlk
zH6O4-{y{YV2Ie3~vQF}l<x}Cg^kK`-S;X$Xj|3aFc-V~m59lU7um<WnHCjMFw9+40
zEk`Vx>^`>AM=iYZdNuEU%X`4er$4d02kG&t<vm1?&n)j@dVFqqkI>@_%bP}zFD>s;
zdK|NU7A1@&qdQX>-I=#*SGBe;j(%l@HZk|G2orcVecVcaZGq?a-?6y0sQeT1aoFnS
z=OMJ+e6(G{o{wFZ9acV&yjxFN`KFVWHiONr^ZpL2;$z;o7!J@W2^vd{!12>6$qtL{
zJ!33FzGDG!v(dFuZY!LzKp-z`nqtZoU^A0AJ7CylwVbtB3-%6L_?$%k4I{rD_gbMh
zV$9E<x2W`Q(FI$XKI9U1-tsgl(6(N%nlDf{e$1cWRzRIeu(!F(0lC{wPqMS=dy0_O
z$u<x)Pqwv|DYm9+fePGf^Vf}`@;E+K#u2<Pcy&Kze!ym>>sbE*JKOT0jgNbU_vn6&
zx_xW0vSJLsonk{-p}rTTqq(4vz>2xwYI@K%{NomS6cv4lkUwm<JYwq?LAdIKWtvUx
z`zV+ADmTY}C~Hp2Qa5Y_i;Cq0f*8La<3DEe$2@MUhTg_q@~09<-7wzTFGt4K_$oKm
zy=6Lzf5Miu@nnGIH7!it)e5&T1fC&VD!`K~uYsh~8-GVb0K-!y3}xT@I@k3FY)GfR
zV`iy;W~n^)+e5Eaw0rs9BTR4b2E_l#<VAA_m7Z&#ZOboq<QD_j{<NLNgpmmK`g3G~
z&jg>mo#(D<G~67UH#b9fAT7;PZ!+=zClZf~TMBdRyBdb#JV|aw2{eOE8gnpu$fCIP
zY}=m;E8CWNwidS-I@d;osyPSsev4ZG!=eu4u7<_iJTY|2i9yYp7?0h4#`d1%p_%b!
zSQ)f;#(N5ZId;aIiNIqNn1#SOdNmt?ehNH|z<CPHq5o$P$x&b~0$B>oLm)#rwG2%w
zeO4|{je?1P2QLZKD6L&KmV|Em&Y`vb`*`(^7M!TwsRc)>pET<3toE-ZSU-PQBdtJ>
zip1^yqayj3sNbOZkBQ{tqW-?I{^KG!odj=xx=21D5<~qbupkYv1<BvzfZ$1E!T|PW
z)AKFLmyjlK5I;LiY<5|>rulZL?NKrO-^1k_C#q_MPl=S7p|CVdR!M9HC)k)fIF#T7
zIIz)Iv${~o<tYYb!k`uohs8h16{*f&V9-wweiq?pp+WuDWzh86ZP5BO-+-D0KeLQ%
zHk&BGY;BGa7_dFfA%8X!JY!_r7T8J|GuMFqZKwg}xATZ`o@XfY+h+}Be!GjvIV@m)
zo6Z<@yiq94?=nF4lz|Cu2Gsfd9~fO_3^uiHIS;=Z^9*Hkx|=4Iu=pO6SjM>QM^#h}
zIi*R_9_quez;r)`$|S&h*vAlyq^<mbEPjRo%X1sDQ_CtNlz&XVkUg?ej*WcV<6_y+
zz1T~ci`uFIGS_J7HnfXM&luHz!EXu2NrS)gDMQ)%l@KpuV;BCQ^h{&yaGb#5sZLft
z+cKZ6rS@_=&f`7B8~U^91;$;08N&ipBvG}Z`maNw)*BEX(|m(YsdDLK(5hn#B$r-+
zW9zx}O0z4Me$MPlgjQBx&$c=SFBiF%<;uV>*RsOUxN+G{6QNT@aL@FV%IyitP0Mn7
zjIqC8x#PH$m0Sw-UV4#%O*XV5!q_F?9+k!S7^);L{$FTxYN&l$*a?dVSdl=i5TDg?
zJ49XQsE!CiQG{?RgXYwQM$vw3ArRjMWwSDVYrsC*LXe=A68H>!0|+vg673WtHh87U
zMAtfx#`Y?+%n*Dr^&`yaM)5WdUgpxP%`wfROw<BqfeK&KA)%vAI3i5^cod!mR)_gJ
zQxR^6G5%tsJi}qiaHBkR^$T_1MvslJ<QZm_nF`l;M!T_erOfm`V}1s@=J5kul~W?0
zAIp_!=&*p1k}S}qKZBrDi?<DN{tDY`&lCzNv-&?^UgCZ%Wyo}mZ|JbuzDJH{8hq4T
zl~^-qFY1&1T9`)Lk7!!GsHwPGXNxT)D>sl2zP6ltf*SHJ65%|ciK?)8!el=X)X`Og
zb)7e%cij#PKQ{W=8O!_bZLgOau#Xz>W}HUs(T4Jd5>a2Bd|s(oX!~!+Q6p+<e3}Z)
z*Sa_fHAJMinl3W#s;;g?M?FbME~OGG*u9ACxjoKQv<D3Y>TMECCw0W)uR>E9OSz*v
zZ))g>rWa}n;Wm~^BLbr81yq#c1mWRPnP5!&vT*#KP)LF!!@tY>+NFahDm$NTSpk2h
z643(7i2qfPD?0o(Se?O%{upXj8hI|;EL06DJc_Q$5RnL6!qg|}>(-b%^bZS#Xe{cc
zVB5fMQp0y)x@_y!@_kK%VGIkKo8$CF1E`_HAxSutvdhWV;pS6cNz`#rGwrY#P)eIJ
z-FVw{BmJ0|(2oh27gdTsDu%I|i|6U-l)Uvx!SC7L_L}0W2^|ck{^vCpyYH=wqh6P#
z-Yb6?yo_a<7e_TCH(iy4Q$^ojoDd7;nu5-wqB^Wpl+Qs$t!R|fEwn@Rg+E_BVKA4_
zyGpf8+_E@fE}YO|0wEODRX>)s0%DxMQst<Mr1%h3E*0tG)VeYSNk!_{YQ1u<EvC&O
z>Fx2+tX$1Etu{0+7fTT~x%fCd$7r=cg6Cv{F<=+cv*hAIm{{3+d;F)x<XFf4LJQ?F
zdtd>nZcwYuFiaW6Wr~-bA(bGkKXOu$YftsaU>z#e8V*=^7w%xFyu^HnO01LXMs<Kz
zE=;`ONVIZIk!X7^kM@4JU7E~3d5I^A|099!3WfSQqHWVfDymNN|A_5h4Heho{Hb$-
zxE}v5;!g*01MYs?o(QsE>WV3P?esz+{7)AOGcFXiT`2s!LgA4@VLEt?i+U>*It0yy
z_<tq)lB>R^j2Z^YlIJsuol<d0xFt%95T*4cVpWc$<oOm;ZFvT!q-;5D5*wI^<>3J2
zuoiK{;$>cH<*t*39~(aoDuxLnFlzcYRkFiO#3o?7{^E*NBogIAK;S*DlFCrV_>0oa
zga;EVU(3c?hfQ<Tkl_jH-qsp#fyD<P+G^4>M9S`yR;0>SD&9o1pOv_ljhIt5@x`!=
zB8br|P46gZ_JaO^spofKDplY*s(@2oaYt3$NrW>Qc^#Hn^Zh~r2xw&qW&4`C3=O76
zQLv6Qx2`qDcSN!jSYvn#t)@jbZZ#oB9jCbyg$_Q&I>%snS@F!YSf?V);B!a553$D_
zLF@BkJ8;$XgmLGv+FE})sO<x-bbZ)|6t<nBrtKqSwLHqY#J;i%t3SMRc;Lb6N0jLZ
zEA@tvNHqh3(+rV(isn@RDF{v<YZZR0)<8yi5i-hJ18#0!LVb?1NH!*Wi?@inaxG1~
ziy`){p}-OZUZlWM1YR=md7l*bRhQaQ8(358*ASjh%annivE2O+LAmRxKh_)UJA))l
zLz-AJ0GsUZN<dq$4Zk78dTt;=Xp_;r$q4xyDd$E*8E3wwauPrpbiP@FNQ2Hd15xR7
z)|n)slgh$;x*W;WOOQ;x7|GOP4ONw=UR-5)i17;z{vP&d7awlG2Knyr_(8ANQb!M9
z%%7topPO`-RLy168?d$^daW|m*;;-|Y`Y;r%c_5XsrOl8vERW}K}OTFw(f5!9tL}b
z4}-m7$irZ77+D;d-)?M%@f>m2+YR{Cx*ZkTg9<%smCi!+Wz#Pk<>xBa8<#m(@nuPS
zyTKp|I97^pMf@wxr1^82Yy;WcWBu156Vq%~(W_(q&D6Ea?51UQ$bZG)V@_|d)Vkd$
z7XEoSr^;?yYUY}D2o17TD}|evnp)GdW{673Pierdc{h4m%MM!eSbMe6Xzj6bMSIy$
z=s4?38mXe?1rcfG(#!3pO*HN|83Wl?Jx`n!Tu<%bTwn81g*hx7R<mJRj(sm!EP?U7
zGou<u3|=#G`KBer0av5xHW+>B6?V#Op>Ytzkfdpu(AxKF#m|Egh<sbJ0O54c(uYDw
zlLq7dR)bA1q?J9zaH8Rt+4L(0`(02N4rtvO)t<p=hJaF1;ebxkn~kA=z(StNrOf$P
zpf~6xOMpT3aENz<QMCL~(65RIV`#qHhFRkTt7M+%RvJwb!^puprlA~tOL~^zc{2oC
zTn5ZkfGQHRT1PjJ4pE*wh_8J$H&$Lw<EpeTE?b9V#CQfU>d04#z<?nUYI)l*;(w<~
znjMssM&nVtB2Cj$p@aUi>AZoAmoKR09Yf-n6X3W(_A;aBrH&psSj>8+bX2Hx((=79
zl6uRne`!da)FRY=zhwVehLm8+hDGaZM)PYl`E4`GK0cd%wbUedL*GLn^e5WzZ3FWb
zAQ+XH7q*C&T?Q6`Q+$xF9fiGWz*>6PPoXn_*|bWnPI4&w&JyC_+y^T+Fs55q5^ZfU
zT2|UxKxc`NqBAP#G^YK?pR#7CGBFKKd5mnEA&-@9<9N|`b-&sM(QenO8*XBs17}#f
zdKHv@eOlXjGyRSj&YKQd*5RDxlX>^Z<Ku|}aoIbx>i;3nd$Z}6RMlb!Uz#!#mEoKE
zHL&mb@%?PdjGc3yhGEK#gFt-bsUL@;6rxbocR*Tlu6<Rg<hict-B1Q(#`ouF3OvV^
z`QKERLO;@N6Y@+E`j6WA-&l)n7u90h6>9NKaieaPTAHt__1B?e&f`K@b1|He%@p1j
zVSlDb&Jy0Sus=&AXAAFm*q<$uPYdrv*ne6i=Lqjq*q<Yk&j{~K*ndVO=L+v!*q<ws
z^MrRk?9UU)jPNdm{ftO<39nQ5T_V{nyh+0E7RmX-n=JhKBDp}c_6TpK<$W!hduRwQ
z5XprMT2%xs6v;&lT3rM!0?~e}=`?v?oxKJ6J4-ol!1SB1`I6d*zV?FVjy255F5heu
z=c`wTQmC3k!}xbN#cSyQDq^We&~qgHUrpg_=>J;!{|^1v(*G#>zmERv#&ujzNp673
zV|3eUTl&80tRBpH{gI~UY>n@Cg}w+*Xas&DV>_ahMQTatjRXC{*p3*nidFPKB>tl?
z+e5hxn>*a}^Y)a6jyRvLi$TJ=DI7}0+nx!gOJeF<XITuPG)=QDt!b8}!2wj56J{<+
zn5j(Y#P^y=I6p{8qBuuYD(^W<eMUpaP_70Jl%|G^@2G-<8sHq7(5RXcU6llc6d+ZV
z8BbsI4_ridP{aaVMpY5$fuKE7)olxe^2*WBQQfw%JhG@P;?0c)%{#1hm1tfiLfn7U
zn2FS|Ngeg^$DypLPbEfE@*3}X$(Z9r8oNZQ@m{zDvgQ)V+DjlW1`sHZQo~a<ESSLP
zYd8diS_UFGJ$O=6P-Rm!nN0ih_O11aq5ri|h}K6FT+`vG=@hM0)2ncKFO@L9p<@IM
z>nbT3zGS7Yk}8c9QD$lcoQ5>LV26l6Q&*)%;HFq^$gAVqAUJ;)KO`?($h*!;U7hjP
zTQWa`HUPv?_%=&j-7&`7Xr;y|vAQ7?@-_ug4N|lBauC&vQnSHQvk@J0?eapwm{BOu
z-_wNxMdB}@<mDoDb-ro2(5Y+V^Wj_Zgx0#4fZk?Hb$p_(X|d3o?iL!lKK@UX$cq0x
z;h#X28cCJfQmPaUUvF!vQh!X*S4x#am0t~_Ea-dNg6O4!{+MfLlc2x<LLpTsOehp)
z@gITEITJ2$=fq#rK%-p&$<9{8CvkPc<i=-ezed7FNiQxEcCCb6Uk>|@geA&hwGuYA
z95zbA8p>hUwPvi;HK}W-r@oV_O^r%j*PO9L(;6Ey$(W94yp}6EFQ_Pe=T;{kWnjQV
z4gV>|G)9ahtU4kr+?%`B=0w4Ku-4Wl#%n9!sXF=W;`$)L#E$F7bj0F|7~|_|FtG0D
z2?E8&3@4!leIHkSe?!XR!)qzKZkUY+CQ9~OD9It5h&R1xSCYbL_#EIFwXbz(>W0+y
zsW8ojB$}ig_-IOvPF1CbG!L~g^ayx;hGy1Olm}!4uCK0#SFebgQd2JL!fTeED@Yvx
z^lI><Q_##IhPmD3)gVedDW)KrLU>LlkW2qDhE)9=bIYYudVG$?Gd0&v&eYMifSnxv
z&sxB^LeEI>U`8#?TwGLqB(T^iM`CcjH<S*cY6O%UDHk&WW#C!1eL#zUL}1t39;Esa
zN6XT*=~D?$%zLp|+p3fW%Bm{P%k8_h02IvK?Rzx1uOw7&209GoJud3Kr67D5H)V}!
z@7LmOoc8UY7Nak%E7hYoWw#%c2e({rN08&Xe<8=9w$-5yhn~4+--QCZ$-1bqc|E%7
zNTHCji0e*8ndV49P<n3mokqETae=#@D4!N!9HGY?_>PsAQ(&KWNNZaq(l6O9>ueos
zI7^?M3Fy?Qldo0#JkQ&mqZ_Cz!|l5?kYTV>lM*%is0I-tsZKpI)G&7$Oj3erC&I*q
z<!wrbJr+A6OjkIcRM$D8V+c4AlsSUS9C;Zc`(Kw3nP>~-jp0ce=%RdK#JfugEh0-s
zsc{qdBB?6HT6npjLuz<Tmvsl#Jie2G`QMSoimzngj^B~SX3~m#edXj*k;dC;frq7f
z#`!Fx0}qyzr2k*e;mRB?m|se=HOO%_%VL$8)T|WST19h61jO;xg+l8H>;qs3(qs{9
z9wE>%eW@YkH1v-b*!kAox~>~=iJEJBI*|E_2M8wVhA_+|_kOsnBcbMDAB0d>TKT?)
z&4aS>!)<fR`7@e#0V$u4DG#w*>><7873>C5G56?Uk{y<__JohN<`SVq1T(ZZVD&0v
z5&}gTG-&l!Qw?)><Z<h~Y?-0#DkK0P*^~izELd-A-W$>3f2v;ZmMy7gIK^PT5<={T
zsXVe%rT|eUm$`#86KDe(oipd42b`=MmKi?8^_JrzoAU>uU>soG;?9y1ub%|U{y_h>
zN2%=kmHw@-7=`kUV=19jWYmCCG{wG$_ns9T2cq>dGX=K6gGR9#z+B}hmWpIZQh?<_
z&O0S!tf)w;yGW5ll}<%Vs-*XD%$lllksfJ^4zZT6B<jDS*s9xAEVkYYxdrZ1udHW!
zkFieGA(q1q6!z%UL_3X^0Rz(7eR_rc<^6gf)@@W`-H2NMH6(mMFR5G~)GJiI!R-Wn
z{$B2meMtY19_Vg2DNG}4{c&*cMDVbXh#t{RQ$%ohA@`SB_GUBuvQ4NCP<L+8^37W`
z%|8eY^7~Zd0|t9D$fnP!PGtZzT;C|2E{pB{F(cdd0*Agb%6!ayNGLuGj9g9xn%il*
zWk%d7k&0_R)Ooisj=_z>5iULr7b!X_>oh0A0ohRlE_r^%ppT4(!HK`s`=Z9g-x}ai
z2xxA$v*{y7W}-S?OI7~V=$aTDgZ;#Sa}!5i$3f`6q&N&g_}rKOiGio-f5~UqJ~ps5
z4P_i5g&`(kjkC^SBA<ghAQd;~!>xG@n6v4x4T<$rJj2a-EnL*+95sgiK*Oyh?3He#
zaC`ZV67yy=hLex!4-6PnptYpmJ%zkbJSZm{y5&4fIJl)-z6CA+<N<><2-`70q;I@~
z2F3j2Y@3sn?<j^MhVs$SV+L>?5u6;suNiIp>e9>O0v9v!%M<)ke%EnhW#BX61LLmh
z{~jt8eVz25u1Zhn^W|r<#=5L38wFQImh!b=1E-%93|Z8XOX_i=RFC8G+tY{Gq~&Iu
zG9_BTzV1)hE!9u%N6T!n(_8JIykcwIFxj#GQ5x!I>#c3KreC$kj`h}R-eJod(7dD3
zpXtrFnzCuBJ+s`NY%%aFE~ROk9g>9j8zD~+pA)>fjWS-7WwecI`c{N~^197;i}FcB
zngBTdS66b&a5!A2P<kI(8Fjj@=#(zfcEBhduZxtNGjNLsrbOHZkZEgFecq7u;q6)!
z4?9dwRC9Bo0A1=~qu5hU1(DpY^@QIGACSlPw%hP`_oj_gdvDn|wfDA-Q+qpXoZ5TG
z4vA541`&By3q4BniHPtP!6(=vc&rpZhWO*9_*aNe*F}|x+%FG=mz@E}V3m$r{t{jK
zk&y~7YZw~m&qSmzFV91+gjYxyh#xU<Wy8ltej;%@Lp7$rO``3vo_<)8)5U2%r`3@)
z>Oj{8QNzaJlXva(Dsv*6HaWRT#ErmpIq?(DXxL0d(#yg)>(B1DBQO-Qmp4FLfEZK5
zX`%LU0>Bws#NcEoBJtkpIzyKg3Q;%el&biM82&x3V#-qACF{zvkN~ha#ZdKA7V6)~
z{q>QdQo?DlsQ8|;3^p<lQQ*U~XxePkStFF8bpEGC%B=qPjO#O^rZ4FKbE7NcQzRAj
zKgWa**dc?hNY0UfmWsllhV><3c1wZxM~xYhV<~U<-s+p#<ArR<;iZPe3Vul0W}!ho
zlnoO9qAdAfWxG>TM~AQ}TaXd@iTIr%=7J-sD2Yn#tIbp_8f#x=mZh4;DUjb90=3TX
zOq_zorIqmhf_rSC))8alvs6s!FG%>|PF4U7f;M-u0$i$CiCw#*P%zpG1^Sy*C{P4n
ze1rUAYW2fLUn;6P{V>+*Cupq}5nMT=dL+YLf)q4ho+QpyM5GPo2S`4H0n+`-3!48m
zU{4W;AtGbh`}#3s*tP6Z^q5gxKCrcU%qZ<j%q&a)RgnIxQu+&Fz)R_85vwC2e+Zvm
zyfLN^fetZ>lUncEO;K&)fZQ~nIFQY^tk<=&<pjQ{xW*&6#tXDd-#^U_@IyIgs5OZf
zga?fBIX^zCv>?!u5id`1BEU6=as62d*YSVN;!>>AGmPeHprO@;uQ)ht+>tdqO$5Ld
z&($N;B-?Z(d0#Eo?_&q)i~*Oi*|uz8UwH_&!C9Jp8wP0f@$IcNgyi#c_52J^B8P0r
z2buqop>CU@;X8&FFj~bvFn+H!K7J#1AWH2bEpp11_z58Uza_$z7myhPvZaFSvT*{F
zGY2<j-y{J?6hP-u!07Tybr*~RlShFW)vwJI3T9`aK!1<&AH{iveV12Q*>zxZq>=JG
zZgAYV$;)_=|4~hQd9EiE%IF4VyA_-Nob8|?-4vJet5YxLSLKF&7g*%*HN+z4iY6G}
zrN29`hP}mp46E)ku6sU21HJ@-x$a3s2$M{;je4J{INAj|Y!QZoCdyyR0(<m`FvGK@
z-A@>Pk~$M4Von^SUe4Qau>o<>pK4~?`fOaFlTA-G$K0m-Q!atra|vX!R65Ap6Q-D{
za6T1I@3hkcTKi5L>JB8VIfNtJl<dzr**zw}NDR;HJ8c=JKvyv|pK{B~b?%V>-g_Pl
z5KgaIqcGMLF(Nta6jTN_Rw%2(bauj{6)Q2hSczf{reCfK@YOL{)d7CnI?Uo%tyKuG
zFCxSix}Gw-OIcP`R04ItXjvzCk20Hn!1V8h+q{K3?xf&*d>=H&59G%W!aF}VX&<4<
z#rQUgzAb}&iO|T8@a=Fw0DnK>zlJK(%%yj0e2gl}Mg)5hss6rn_6B8^dn?oevb}@!
zDU*I+c;Ko$1lWV?8CgRSFX|~4(>xlETo<?r`Tiokb2waiOfrd<_|oHkTe~Bq4G{Y_
zJhVjDZ8Q9pE?q`-jvkO#FpQJ_w4~`-M^v@K4>4%&g~nujKO<ZW15*ggxx1?C<V#|f
zQ0IYsdKY{l%2eq=rd$=-MUilPF-~VpA5SdEpK;sW3(MBBta<v}@f{*hA344wk}^|5
zi4!<eyAo!te6vGzOGgy;-6Pi(3b?TcELs%Cg1;Ba<t3EM86~lBTM1vTW)q?ND@=fQ
zNV#Rb=&;%j>FI}v@lq2Ytu%l<7(le*{HF8#rbn%7w-f;p9q!@^`lv$Te-;W`;NU$j
z{T-Uq3F}hbbj|P+@PR3H#Zb5O%Cq8q;Me7jHLdXZZl+T>(!sb%v7nSP=d-_@2Z?`-
z=Eiqexm0wSyn6?iC}3#i=;JdhAO_$<UrG{x1owkPiSXosbRxl_R|lc8tdluw*Rtv)
zi?sRfzWHE;r(;L)hr#6GP?A)b7~NsWXJa%gXm=_+e+9VVl!HRAMnLW(;9825vxUBu
z03%<Z@%12^>GD-wFq|h`p%e~N^%k`pyOnO@np*!fX7gvu=G$e&Gsu&L(&N1$FK_Gf
zAAyHL|6vmh{(9tEUc|RY;k&lh&*RMseJJ7kN%ofH3ei~YuMo+VqH$E?b@iR+w4WRP
zN|9Vm0|Bwdy2k4ouWzhryrFS)W1_LXaZKab#&L}|HZ~+eKacyXMe;dO-)Z^JVaIx<
zZbS_8*V0JZlqZ#1ztnQgUus(Cm)c-o`YWxvi3sKo_?Xf{J2au8!)#k2pu?7zA?RK5
zC=x8VV9_isxK6SK7Y;Kev=OhAol07z3)e8uX{yMgadw%{l9CB&+k1A~I95yFI9OIK
z>15-WhHE8&H$DrsWBY6~sAL3{{Cix}$p)X%w$(UVeN2NHb$YK2?;9&|V%lAt&?Ug8
zn7%lnEkwc3i9~dM%IZ$p^HUCtFhK)h*e&1+43tGn4G9~#^s#juUy>3|+0EmmaAB#&
zna(Eg)CR_gR@DYj;jY$UB{GVyx;CYIWNDWCC~nI&+1)fwKI<@YjPhxxM=_;8&pI|q
zR4?doF({7%jgoqLv=;Meo!9jP4_jnYvmvZnZlLvffhhi|eofB@he-qr8*Mldd>p>5
z)DaT6_uFfij*)bP)qxFsuRN^LK{FJVgXzQSaD4<Yt6U2-6_957xG?yl_gsx0tr+LS
z7P(Z>Eg>I4`L8qp-z%CCQ_r^6cwbs<RGSEm3Cw9p3VMt!z3Ag|Esw)AYPtz_Y>i%V
z4d!FSoA{5zx$Sf`>DuCm+owj{cWV7<c=KY}2!2U7qlUSZh_<z%xgpd^wBDD)Eqp06
zj|mQ^@rR7U!3cK5OYO$20<DL{yhOUOv2{)Ht*Ce_@HQpMi)Q|&{WfonDZm~HP$~L2
zNmoK=|55D+Y?;jDghlW{0^_`Tr9yVSe$oAs#2G$;@7z%Kof~xunYZzsDS4OH{l@Q3
z<SU^XJ$ee>I>=1K#TPjoW0@hZAp_OOE4msRR}9@FuOHb|S^Uezc0Q!qc~q_cB+B1R
zjHY3J3^Sj#qV+}5{Gtf8uN7@;h4+=^<+b+1Hp0g(?-`-OUt8YXAbi5|<^|!Cme&)6
zPg&l=Abi^Lx`Xf;%bOpB&syGsAbig9GC}wo%j*il=PmE)ApEW6%?ZK_!rr1F+!OW|
z2jPWbZ%Ghd6!w+|;oX|oi!jcQ>*26z{bO*OH$2gr<(GO>a`u;a*q$Plys+H-mDc*c
z-THw|%RKu=JZv|8U~5h9+nV%JYpNGeYyJ{i;vb;pU?5X@NjIO`zv-7g-v;rajcbxW
zvO~HSI%0<mJ@m01G8;o%D?9I%i)rV&T7L%m?$t8d*;c8`e+uJlCdSz;Ugc&Z{cC#B
z3im1OBfVaV&qVx<QhXNT+e`7;h`(9f3plE%sIJzp#o1#W_T*21h}Ma*?dwExy^w5A
z`+AXtl-a&rOKuQ}KWX0}k{d<BXx}K3QrR<2v~LngTz1j^vPf<gjWz9?MRE(F*&>p#
zZf@TylCJ>#ib%prul-e#gt1)vHj#WyjA?&OBwwf0uZ!dx^mv2HBj9$Ce3Kq;VwHWn
zvN?AY$HFJ-E3U8g=c0YyDVyNm)x$a;nalnx<j*%LYioUTeW<g(KUdfCDO98DjBN8d
zL-R8vLOrAt8Tj31wslOld5q@IqtJem;j`&^X7hf-@VkIN3$|N~f_dUXja9PJ;IGSM
znKSnvdrbJU$muvN`^S9!iYcYgjCxYayG@)Tn1`c}8T@qNXFh%w$S4(*=e-%55B-|y
zJk+Iq6`($Vc9uZ%Oqd*oLj7DrM}l(gZ(|)Cs7TfimuiC*$aWy-u8LGyfOeNaU0Ci2
zw5I}e3ZVBYK&JuPTY-KdaP8xY4VS5;gr1?5T5h)O=kyWzk`f;%#pfe_kTXjUaP!eV
zhbqeKM4H1D_1}Q6e7^$p4yy4%1!yNgA67OQJ8u1`tiS~*@JOjf3sBm}WeK{G;Akm9
zHxhgTA~mlfBK@rVM92-aYz)D{2|aM`@|N(H3I8pTd|P-cg#R`O{xjaA9!YdoR}==@
z-clRQ&l2{}^}z8mPZqtX!52C%>|&GOUgC;KIH|h>!8SrXH=1F~p?(0A84;uf7-aW?
zg{Uef&-2FcU@lR(#^JLv%S~+xU!l_1w2XpO`j<L<f57YpCj(H`a20*%=XS2?b6b;F
zxPMg~q+h5(I=a?hih3R|oAkcs%thv61tz_IVm+Q`*5iZ@&-F(Q2u~(o-nYV3_hYOu
z;Ry}r?D}z18fy4l{Q+ZzyznVkzu8!(E}pF4$QyhOynoP-HCKWU0<6NHl!cMJT3MJ(
zv2)VGB+DfdXY3z?2TK$GWe2V3-IG?RezO)FP?P{T2Ge^3Psm1Z^<Jn-gSUyQ#Z6JI
zHJZ>8wLKK-R<EcOVxkj60LxUs0GLP%(aqs1zHahn(S^%G6X7oSro%Oa31j%3|G$(G
zR%L{_jIb;t%iL1pzex9+t4xlEgZOH*tY!MtsW*=JD+zo|tCr47WD63w3vThAGvmr*
z@^c`Llf@P4OGP$`TK@(ZwCjNzqj!WiHSE75lJ5#{mGIvc$*k~J3qOmIbGmY=I8&s;
zV+vh;t^WcFI?MQ6!j~g%J?`g_`y9wRtXw{{4(PdNnmhe9rn;3S51RAWnkw*O5O^sF
ztTUA$vdPSj^|xU4UeBxd1`}WSGXHKiOD-QaQp0RC)o%FKKzH~JD;QbzM2OOxO(wEU
zQn1MakmD<cHgj&JHa)KgPBF)z<kE|8`30OG5ls4~qjylH)=~MC-~tcAKcPk{nOaQb
zi_xrX%PS_QPk&|8FdGW*LZw9cuEg+VLwB(Ux&qgE5#N91_REUD98{b{xN5$?goAB4
z5xWhsEoQac%A$smuQF&OnVI8FubO;mP_AX0DZQqsy5A0?F3w5Vin%CU%CVku)RcWK
zisQ2c8+dZ*G~h@53{|-8xXm6nO*q3GtcVqlchiW-w_}HO0*QLdVNaF_NoR~-+kFYG
z6x2&WBM4^GYhY*7azNK%jFbqa0b6S>Z8>4Hc~U}S$ctqVogpukK@5hhlaOp5V*xSt
zac)p!ALjx&_Hk;W$CP-CYMc`JM0|eD9dIbmq|6e|-P{6qYenq^eP4XRgaM-VVd^~V
zeYQM>&6gSyMtV76kp1SDK$H`@3yLY-MUMvEMLuN?8!55eZ|5`K19m25X1oV&WwSRO
z2WLYgo@eTrWMJ6x8oY)%CEPn`1Y`H48oOgi<l<WdjVc<ux6;_n3-2M@d)W3KvAt=w
z_o(eXW_yp@-gMi0!uFoDy&1Oml<m#5e;)Jm7~xY4VH@UlR)q#u{T-t1l-+g{%f~mf
zQ`3l4i+s&W8>}-VHQyY@rIIjdD?f054Nj`w1pgMe0JAHFzf`#SCKjp_W(U6*548#o
zp<lNcu28k$tZO(C?yXjax43XU6}dUGxV}>#{<r^{QgW9&3!gB4&!VrUf2ZQEP*%8@
zBMkOjF``&9d{<Ny8)#$hH7cgusl{$Pt-5V&t^Ydanfr{=!hgS^6YY%+7XCM|@NdU_
zIjCX2e3Ny0Z<*M%Uk!%r0V6oDI*SIuYAxf<wlmrEcA}`K5f~)M90cAnu_gDQ5iBET
zR3*mM`XgWsWmsC&`Z1BtPT{Q;{!WqX7v3{={bt>pYu9&%y?J*1fbcRDwtr^&{USMl
z6Se~)IfxUsgCe<0By@k5NbVMiu)iBb^{|1{z0CWawW;(+48ySO1mfrHx?#L^ea_D1
zTfVV%Ru1R=^EQ3;w~%J1l`>yI=0{8M0^*OA;++o6C=7$*xX3zvx049r-r=@MPBwjy
z0|0x}o9y895lk#fd8Z)n6NVuydx{n``@IfTWvYX=zR#h?zu&<Eb)GMS{npO5KHxMz
z;Dr1K3H5_c`XQ(7VJH0vMW#6|k2<)<%#p4-9&}nCcf4-9`Ef^UneLEm^@Ni$o1btr
z|4B;zq~pz}UYntEJ?XSO<$zS4Gz{IcQ>fm(vWS^Z%Ph)H(U#dxNP)Z_%KWs-EFlXC
zGN%Hvh#=2YKo%2ZE<><Y&PDwVua5Ju_s(hjv+xyX7k6p0>2DF?MG|4WM5mFg;&|FH
zkM;VFyv6*S4QNZ3BQ1S`csHtF{KBUUO%Kj}&op$RiX+mK*EzdsKDBJ86aO3OB4L38
zm*7seZK0E1<g_d%wCnI@Y{i=;{Dy-|WuhmGiN*wpdgYt{#XG$ee^$o-8#X%NX=s^~
zYg*=L>E+Hq+X^Sx>HQ<3qm@pu&5KiLtDInum*$_g)y|bSc$X9k=JyMQ|57OYGoQp*
z!jt-}vX7r_=oJ113t3L}Pq=-l4W6SmxW|#<=P7)*3co<%DMS)I4m;b!SFDkruISti
zz-t){(*bVY+i1wYNZ<FOqfP1ev;kO$HofG)$d^qUn$|fGP&|zV_gvF@MB`;)$S!ke
za<c64U}aW`4iTW);J_4k5bNzm$2%ny0L#ckdBuy=CDO|?!Amw+2V{i}l|MY6P>hPi
zUBThUCQ9!F=}itU;y~HY7=~%tjktICqEdloN`Ec~yWE!@w#(fd)OfC8QuF?R#nCMe
z?pWMPV=v>NwTn*a9&={k)Oj#mS24k6yw$WKt8t6ncbYjZ`#RN8!z(GhjIuL4wG30~
zqB32}EBvnOvhQByciq3^-FzOTF*$GM#<XnXp}T;g!xfa~x0cr&IL*7y!A?3?w@SWj
zdff@pduoq`Om2Tb0(7++oGouS$}Jd$w>zM}vv$*)L}zcwQS){{NQ-#(ep-%GHLGIo
z?e=##>~XJ?8to;lHSaje_1+Xmx!!xrQLguT9OZg%fumgS-RCIRdt00`*L!z6%Jtqo
zj&i-Xg97V-y<lg&^$1)Doblc3&>FIs8)Y#TxM%}W`@7B+yhdc5J8x7jBi_dHyTk}o
z4ts>RQTTgA@;%{g68?Kw!<JUA;=RRHJm<&-w4v5N2{g|#^F@<(a<6C{;qMj6eWG!s
zzfUChi^i+{{UUilG>&e(sj;T<y2er1QLEp)UaRkZR;%y)-}MJu>mU1h{pLTbU-QSr
zk{uAqgTmWjdmC+UlkL51dz)=<i~V!qA4Hv&8Q5K$r2X#gwZEq6=*Jb?YkNiDug7fL
zR~FtcdaM66`)*6i_T82nCNYl7bm?CGBA-Z-U5pkhF~|tQE2K`L4;7jbg!h$&sX{Y`
zZZ8!2WR*pbAPAzuf2;Q3c<)UtWM}$Dm4#z)@XHd$1dTnl%W;8{_4^ZS(c!xJ%O}Y@
zq591R<L-#W732SkWc-WL4=h6r+)A%4%(Q$H)v&Lgi1ef)1Z9A_0v?T;l1dsr>9E4U
zcICJFm9{H8thPSq_u8X8TGqwUvM!F6b#atiY$-TtxF%~mAj(=Gz0*NgHFVhA2o6q*
zpb?y?O^j|e7~NnaGNLvj8R2lal7tk{c=O^!cwxfoLUS{_oB>q^o0%DQX?0^|;z%*E
zR-RasiAg-YY<(p8jEFG{jzd>etqfRjxJt7Uq1aWIt1Y`-BKER$NUq4EuQZA~rl%`*
zOi!DD1UsgyjM9$jX$<z&MoFRm9Enb5_<-6mRnEYu^GaK$r^~iXPZzgL+fH#A_{Wy1
z^uO17NC1$h9#$^=Oy%qk8>sjXe3gae0Ts0gnoEV{WnUf9iXGQzX~#869bMdUr8+9l
zeX#yiJFX%XE$z5+Jyb62xN@Lu$F=f3e?^a0jH?}2c~@9e;^iGzYMA1VtJPZLy=q^w
z<7%~>;T_l0*l|6J9oKWLnRwo)*l|4r+2|}}qjTtz7m71;znYo9TkD^~n>9Sa&%q|n
z`@(xgw7)Ns9|&)oX#YSYKNQ~UqWwcwmc1d`vm*JC@aAgmABp4<;k_l=kBH>Q!keeH
ze=L$mh4+qVKPr-+2rnzzKM~1Kg_jrYpNiyX!t2u7KNHE%h1W0IKNra_gf}SKzYxhU
zxzI0JF}GW^zblf*g!i6kKPHl232&ch{|b}(+RBCI#o%+~-q?V1r&sHLgU@-1Kj)Tm
zjUUzYP2p2bj|*?V@Q;h+*TOp>{I5mwgzydu{{%`{S6RaPVuKB;25YSK&-2zTC5&2X
z>y|kNsnFjA&SDeulgy~>c5>}|96a;w@8R9cWr_C!u(=Gd4}dKt$!j+xudSu{e#BoX
z#Sb9<YAJpY@og;SjYIs9Q#T9@_+ba(^!xJhffV&V3`D)xxCRZFXK`OGGO=MRCH=?&
zWG{1DxorA~gS$qtduW6-+s3$m!!V+@`x;+L*Acm;d^5EVTc{}$JFKZN&f=uRZv_aG
zFN^!wkvAe8<!9Lc#F58lK6T_JOP@K}*3X^h&xy_2?X-TuZP@Y!1jH|$<}V3)j6la6
zZ=3!7*NvZP?O$=U?YNWvnnEX>mXna@2y)6vpC-r|328m+V4t@6EHSy~2z*WonBVZ*
z+e6~K6Vk2^ee2-%xeE^VWeW~YEp)m#wQ#o^5_)JmH`ouE%j0JCC%IYGwEjJAHa*#u
zvd0uReXrXx)rEN-f$wqM0DK>Vsr}w$TG>F96d$6oICnp;D|6X_9#THYDS3i^0tqf(
z<XB`YA&&nVNn0LrC60$>B@lc>zW+;l4;O(D04KYbPej7HiyPt?^l0hrW9scWr{!@s
z6u-d2BEhFi)L%%cRAGHW0(VQ`1FkF&d7pG~P4s0yv={Q`LU=x%;ijK*2fR1!K-MIg
z*L%wjWX(2;y=@1w=1(cM!wzK4zo6JVDrQ1P^$uGy7KV)Ky{p~{$f#ac#Ue!+HOew-
zlw{P2g+lbdT_`+sp|JKsVemp>?}fq*g~F{QsTK+oSzdjsOkRDvEWCp$#g}7~7FL!P
z(=%QFphM4Du0PwQ=N`vDfcSfkzu)1uc)HjD?68;mxn+(UlC3({pH|-0WmJZ3Y?kKk
zM1jw^MaQUz9CbUp!jlMb1^l_7p}B5b4^7ebZCcYjSDP`TVW{-V`<dfuy)*m_N_+-C
zT`u;<`HN<;vR>=Iq?D0mrQq3(=P~(IXr|%k0Y$RujLTOHq8d%}U5#;~WO&TWA=tja
z&Eai(j|)t>^a8hKp{q3d$DBGuxD6HsZII<QU~Nh3V$RgO*wy?)G@&e^=qFC|5{fQ$
zQNe6_soUPm!GzZStPB|K%Q$fHWI~YTZh8g1Tj>JQy2@={MNF=S`<GX{?ay(p98X2N
zd9H1F9=-Uf<8?)Pi^B8^?hM?ICwmihNQ9c!xWt$=w5)ZFvd*TK8iO{Y9K}ZNqRh|(
zQc|?&3+R&^i@8gSeL`u1<j+uYdFQ|jZnot`7rt-1+-kmWda_&nUDaJLp_}A*E=>rR
z40&kpxyQb9agWhgr+Zwglk_KA`Y3=ZF^`dSlxOMt&(ta<Z)~U_b2Vd1D+x7STr{f?
znm$I;cnO;Bptv9_a;*z;?PNK9npT-j7C0Y6wHx<h(6aYKH8-v2oVon6K-qW1fdy_%
zerv8}1AX`~_2IeVcjx>g4h}Gtp(rND9DmUw0e|=0lR>NSl?_C*xyul24htrT8J7@j
zl&!KUKr_HB0bfF}(Jfv=@CmqsK`!CP@>OoQylKGW{zOagsCwC*7<Uv0(Cel*yA%DF
zUEDvg#SQKsc-cjSYOxWWxr^I#j?{aUH>1DRWxdD2K<_czm3oh+SKN?Nd~9@;;$yO_
z6dw<`O7ZbYp!k^UmMK2&ah2j@lB*OSTV192IN&J7$9_jCK0b!xW2y_q$8N(kExQB9
z_i4i0ttLDi(f4-Rb>1Aa?q_<ZHkijG2J8Ctt1eAG6w(pualzB~ao#<Y7rL}<u8tI}
zS9{IXnqGH9lnzqU9$wb(Kr_#Er$}O=d5%xrzv1E-{#A&b5>(fHRM#^ilY`gCYMG`I
z3N_t(MXk+t_X=8@H{CmLQd*mD!K3bFE|}Pq<Voy9oD|7Z*oQbJlBcl`aattLh=k#v
z5y`V6Vftr9@*MUh&WYqVA`xx>MkLRRgw=i?jPX7LJH3QUiS_-tM6A6>%O#pvf=~Qd
zK7KAATE)Y{u49hK2M_v`{e}@X%<)BB4J6z<?bsyBN&P@R5nmXDqCrSL`iigmim&<t
zz(@t4qAvS{c@ULthHu1;ByYKGE5dxXYI#_SOAB!beig)})x7mCy;)NRGyI`0cc;e<
zW`i4mhmQ`0S}%yUZ%E8r1-U#67vmR%!L4&Mij2R@chhQZe7;jTyVu%qxbyF1=JPUh
zm@=;pGH27v!qO;z1S7#!+KI6U2Ds$gQ0c8E-{Mr_YO`zNU@mB<T+mE8ZY7+hD66wx
zQRn&<TCtFmS1yD<V7SZ6GvP41(68`Vhx1|tTOQ7*-*(f_g^NMRzA8x4@%gC19_*H5
z<G1FmLV@>#1L8Pjz#qb&s;f15K$Icvf$zGq+=t<ySyo7(il%aHcbGekPeU#bx2_21
z@_o%K!iI8R|32#~Xe@bqaS?%*@%Gu=5*cs5%{`Iv4lpE~@p_}!75t!V1M<U4A)7ul
z5B~{$eh=G!vCKG%sC$PiWyYIp{ZXy&sK_m~{tA%Qkum}DW8Pa^SKM2B*CmWu7kg_t
zm+<D@Y-^v}+~<b;oo;JC&96J%mVTOkTL;|c0fG(^XwYrj<)(L2Xph_So~s9ty#(1;
z0ohNG0~L^iSXwF|hY9k25t9DEZT*lSIk)*kmjr*VfqKz$gqNJ7%omR2U9ykC+#RJg
z=@U2osoU}yC-|g{E&h}jq5sKeIX`z3q4XDS`b*b8=9b03a{c4w@vmL~1h|Kj67MO-
z%fZt!n9dTHq#O#Iaqr@-wz2-1Vm;5g5a~bTqHp7(&$;PuT>rc)gFyu-_^qp6X8a4X
zxI(G8&Y1e5&v}l=c?!yPcg&v@i~k0K%SZS*BsbTNqA5P+_8QZEPmB>vjumlDDFyH4
zV0?)bl!APCGc|V6r}9b6_&-BFx;r+|c3&)ge=LxX{x1^u3GhHH5Rv{|0v?P7QqoNl
zaBnOSlxij5p;-P3F4J`OjqVi+-{ZeODir>PeWSy2u%vw0>B7FR6hDFZu~Pgv;$Jbp
z2GiQ~Nf(_(-+IOc^A(eIDEc#&fCpl|EFh{rd^i@8oJo0?9_KPfD4dd)lkXpi;r-WK
z<_&m1Eyk8)Xv#-rtEMq_ro~zwi=j(TaMFK=q!Pp9u@H~8=`j$~NpL}+5^Qz5lDdHF
ziGU<d@+iQG-<Bt17|PRP7nN|Tq#N4llBmF>k#GMRY}9GaJ-YlufPF@>rc|R`%TtW!
z4Ab!~tTxI)jLW&;1ZT!d<24ryRv?)bRPk(yH=G$O@`gEd&N;^U)A9?dX2veLplW6;
zxS(o8u_vgsL`W5<IK-UWGCKwiab^s5X(c*1hN8}w;^z_n)+l*7zd-DP6la)sJmxCi
zkxNQH9aB4J=Uv4>&WtGr@@T+7ejG56Iae`|(_%#ivTaU`Jsuo$yPKYgY0OIoFzVFw
z1vjH!FmHJw;4P24inl!BD&F#4mw3z1n71qx*|WK^E3jwtVt0N|v1iX?1^C`DJyaWN
v`c3<I|F3@a%U`$u$KU+wx4-(E34ihH@&Eld?f(!8UHU5YeS-dfAaCfb0do#P

diff --git a/lib/mejs/flashmediaelement.swf b/lib/mejs/flashmediaelement.swf
deleted file mode 100644
index 5998d67699f32fb155a763f7e92373f4c1879aff..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 57052
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%0DiD4qDy(djNgcgT9N~JvepQZWRK_yZwY!
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

diff --git a/lib/mejs/loading.gif b/lib/mejs/loading.gif
deleted file mode 100644
index 612222be5e474c36c345042dd6f697fa1d16a6a0..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 6224
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
a%CSF@A_b&47t_EYjD0%aV6(nOxBn04F1xn?

diff --git a/lib/mejs/mediaelement-and-player.js b/lib/mejs/mediaelement-and-player.js
index bbdd6766..8d7ad3c2 100644
--- a/lib/mejs/mediaelement-and-player.js
+++ b/lib/mejs/mediaelement-and-player.js
@@ -1,5291 +1,9181 @@
 /*!
-* MediaElement.js
-* HTML5 <video> and <audio> shim and player
-* http://mediaelementjs.com/
-*
-* Creates a JavaScript object that mimics HTML5 MediaElement API
-* for browsers that don't understand HTML5 or can't play the provided codec
-* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
-*
-* Copyright 2010-2014, John Dyer (http://j.hn)
-* License: MIT
-*
-*/
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
+ *
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
+ *
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
+ * License: MIT
+ *
+ */(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){
+
+},{}],2:[function(_dereq_,module,exports){
+(function (global){
+var topLevel = typeof global !== 'undefined' ? global :
+    typeof window !== 'undefined' ? window : {}
+var minDoc = _dereq_(1);
+
+if (typeof document !== 'undefined') {
+    module.exports = document;
+} else {
+    var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
+
+    if (!doccy) {
+        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
+    }
+
+    module.exports = doccy;
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"1":1}],3:[function(_dereq_,module,exports){
+(function (global){
+if (typeof window !== "undefined") {
+    module.exports = window;
+} else if (typeof global !== "undefined") {
+    module.exports = global;
+} else if (typeof self !== "undefined"){
+    module.exports = self;
+} else {
+    module.exports = {};
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],4:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+
+var _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; };
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _en = _dereq_(14);
+
+var _general = _dereq_(25);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Locale.
+ *
+ * This object manages translations with pluralization. Also deals with WordPress compatibility.
+ * @type {Object}
+ */
+var i18n = { lang: 'en', en: _en.EN };
+
+/**
+ * Language setter/getter
+ *
+ * @param {*} args  Can pass the language code and/or the translation strings as an Object
+ * @return {string}
+ */
+i18n.language = function () {
+	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+		args[_key] = arguments[_key];
+	}
+
+	if (args !== null && args !== undefined && args.length) {
+
+		if (typeof args[0] !== 'string') {
+			throw new TypeError('Language code must be a string value');
+		}
+
+		if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) {
+			throw new TypeError('Language code must have format `xx` or `xx-xx`');
+		}
+
+		i18n.lang = args[0];
+
+		// Check if language strings were added; otherwise, check the second argument or set to English as default
+		if (i18n[args[0]] === undefined) {
+			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
+			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
+		} else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
+			i18n[args[0]] = args[1];
+		}
+	}
+
+	return i18n.lang;
+};
+
+/**
+ * Translate a string in the language set up (or English by default)
+ *
+ * @param {string} message
+ * @param {number} pluralParam
+ * @return {string}
+ */
+i18n.t = function (message) {
+	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+
+	if (typeof message === 'string' && message.length) {
+
+		var str = void 0,
+		    pluralForm = void 0;
+
+		var language = i18n.language();
+
+		/**
+   * Modify string using algorithm to detect plural forms.
+   *
+   * @private
+   * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings
+   * @param {String|String[]} input   - String or array of strings to pick the plural form
+   * @param {Number} number           - Number to determine the proper plural form
+   * @param {Number} form             - Number of language family to apply plural form
+   * @return {String}
+   */
+		var _plural = function _plural(input, number, form) {
+
+			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
+				return input;
+			}
+
+			/**
+    *
+    * @return {Function[]}
+    * @private
+    */
+			var _pluralForms = function () {
+				return [
+				// 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará,
+				// Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay,
+				// Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof
+				function () {
+					return arguments.length <= 1 ? undefined : arguments[1];
+				},
+
+				// 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish,
+				// Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans,
+				// Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri,
+				// Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa,
+				// Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch,
+				// Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal,
+				// Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento,
+				// Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala,
+				// Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba
+				function () {
+					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
+				},
+
+				// 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino,
+				// Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon
+				function () {
+					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];
+				},
+
+				// 3: Latvian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 4: Scottish Gaelic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
+
+				// 5:  Romanian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 6: Lithuanian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return [3];
+					}
+				},
+
+				// 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 8:  Slovak, Czech
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 9: Polish
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 10: Slovenian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					}
+				},
+
+				// 11: Irish Gaelic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else {
+						return arguments.length <= 5 ? undefined : arguments[5];
+					}
+				},
+
+				// 12: Arabic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
+						return arguments.length <= 5 ? undefined : arguments[5];
+					} else {
+						return arguments.length <= 6 ? undefined : arguments[6];
+					}
+				},
+
+				// 13: Maltese
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
+
+				// 14: Macedonian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 15:  Icelandic
+				function () {
+					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];
+				},
+
+				// New additions
+
+				// 16:  Kashubian
+				// In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules
+				// Breton is listed as #16 but in the Localization Guide it belongs to the group 2
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 17:  Welsh
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
+
+				// 18:  Javanese
+				function () {
+					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
+				},
+
+				// 19:  Cornish
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
+
+				// 20:  Mandinka
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				}];
+			}();
+
+			// Perform plural form or return original text
+			return _pluralForms[form].apply(null, [number].concat(input));
+		};
+
+		// Fetch the localized version of the string
+		if (i18n[language] !== undefined) {
+			str = i18n[language][message];
+			if (pluralParam !== null && typeof pluralParam === 'number') {
+				pluralForm = i18n[language]['mejs.plural-form'];
+				str = _plural.apply(null, [str, pluralParam, pluralForm]);
+			}
+		}
+
+		// Fallback to default language if requested uid is not translated
+		if (!str && i18n.en) {
+			str = i18n.en[message];
+			if (pluralParam !== null && typeof pluralParam === 'number') {
+				pluralForm = i18n.en['mejs.plural-form'];
+				str = _plural.apply(null, [str, pluralParam, pluralForm]);
+			}
+		}
+
+		// As a last resort, use the requested uid, to mimic original behavior of i18n utils
+		// (in which uid was the english text)
+		str = str || message;
+
+		// Replace token
+		if (pluralParam !== null && typeof pluralParam === 'number') {
+			str = str.replace('%1', pluralParam);
+		}
+
+		return (0, _general.escapeHTML)(str);
+	}
+
+	return message;
+};
+
+_mejs2.default.i18n = i18n;
+
+// `i18n` compatibility workflow with WordPress
+if (typeof mejsL10n !== 'undefined') {
+	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
+}
+
+exports.default = i18n;
+
+},{"14":14,"25":25,"6":6}],5:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _general = _dereq_(25);
+
+var _media = _dereq_(26);
+
+var _renderer = _dereq_(7);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Media Core
+ *
+ * This class is the foundation to create/render different media formats.
+ * @class MediaElement
+ */
+var MediaElement = function MediaElement(idOrNode, options) {
+	var _this = this;
+
+	_classCallCheck(this, MediaElement);
+
+	var t = this;
+
+	t.defaults = {
+		/**
+   * List of the renderers to use
+   * @type {String[]}
+   */
+		renderers: [],
+		/**
+   * Name of MediaElement container
+   * @type {String}
+   */
+		fakeNodeName: 'mediaelementwrapper',
+		/**
+   * The path where shims are located
+   * @type {String}
+   */
+		pluginPath: 'build/',
+		/**
+   * Flag in `<object>` and `<embed>` to determine whether to use local or CDN
+   * Possible values: 'always' (CDN version) or 'sameDomain' (local files)
+   */
+		shimScriptAccess: 'sameDomain',
+		/**
+   * If error happens, set up HTML message
+   * @type {String}
+   */
+		customError: ''
+	};
+
+	options = Object.assign(t.defaults, options);
+
+	// create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes)
+	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
+	t.mediaElement.options = options;
+
+	var id = idOrNode,
+	    error = false;
+
+	if (typeof idOrNode === 'string') {
+		t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
+	} else {
+		t.mediaElement.originalNode = idOrNode;
+		id = idOrNode.id;
+	}
+
+	id = id || 'mejs_' + Math.random().toString().slice(2);
+
+	if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) {
+		// change id
+		t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
+
+		// to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set
+		// only if video/audio tags are detected
+		var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
+		if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) {
+			t.mediaElement.originalNode.setAttribute('preload', 'none');
+		}
+
+		// add next to this one
+		t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
+
+		// insert this one inside
+		t.mediaElement.appendChild(t.mediaElement.originalNode);
+	} else {
+		// TODO: where to put the node?
+	}
+
+	t.mediaElement.id = id;
+	t.mediaElement.renderers = {};
+	t.mediaElement.renderer = null;
+	t.mediaElement.rendererName = null;
+	/**
+  * Determine whether the renderer was found or not
+  *
+  * @public
+  * @param {String} rendererName
+  * @param {Object[]} mediaFiles
+  * @return {Boolean}
+  */
+	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
+
+		var t = _this;
+
+		// check for a match on the current renderer
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
+			t.mediaElement.renderer.pause();
+			if (t.mediaElement.renderer.stop) {
+				t.mediaElement.renderer.stop();
+			}
+			t.mediaElement.renderer.show();
+			t.mediaElement.renderer.setSrc(mediaFiles[0].src);
+			return true;
+		}
+
+		// if existing renderer is not the right one, then hide it
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+			t.mediaElement.renderer.pause();
+			if (t.mediaElement.renderer.stop) {
+				t.mediaElement.renderer.stop();
+			}
+			t.mediaElement.renderer.hide();
+		}
+
+		// see if we have the renderer already created
+		var newRenderer = t.mediaElement.renderers[rendererName],
+		    newRendererType = null;
+
+		if (newRenderer !== undefined && newRenderer !== null) {
+			newRenderer.show();
+			newRenderer.setSrc(mediaFiles[0].src);
+			t.mediaElement.renderer = newRenderer;
+			t.mediaElement.rendererName = rendererName;
+			return true;
+		}
+
+		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
+
+		// find the desired renderer in the array of possible ones
+		for (var i = 0, total = rendererArray.length; i < total; i++) {
+
+			var index = rendererArray[i];
+
+			if (index === rendererName) {
+
+				// create the renderer
+				var rendererList = _renderer.renderer.renderers;
+				newRendererType = rendererList[index];
+
+				var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
+				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
+				newRenderer.name = rendererName;
+
+				// store for later
+				t.mediaElement.renderers[newRendererType.name] = newRenderer;
+				t.mediaElement.renderer = newRenderer;
+				t.mediaElement.rendererName = rendererName;
+
+				newRenderer.show();
+
+				return true;
+			}
+		}
+
+		return false;
+	};
+
+	/**
+  * Set the element dimensions based on selected renderer's setSize method
+  *
+  * @public
+  * @param {number} width
+  * @param {number} height
+  */
+	t.mediaElement.setSize = function (width, height) {
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+			t.mediaElement.renderer.setSize(width, height);
+		}
+	};
+
+	/**
+  *
+  * @param {Object[]} urlList
+  */
+	t.mediaElement.createErrorMessage = function (urlList) {
+
+		urlList = Array.isArray(urlList) ? urlList : [];
+
+		var errorContainer = _document2.default.createElement('div');
+		errorContainer.className = 'me_cannotplay';
+		errorContainer.style.width = '100%';
+		errorContainer.style.height = '100%';
+
+		var errorContent = t.mediaElement.options.customError;
+
+		if (!errorContent) {
+
+			var poster = t.mediaElement.originalNode.getAttribute('poster');
+			if (poster) {
+				errorContent += '<img src="' + poster + '" width="100%" height="100%" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
+			}
+
+			for (var i = 0, total = urlList.length; i < total; i++) {
+				var url = urlList[i];
+				errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
+			}
+		}
+
+		errorContainer.innerHTML = errorContent;
+
+		t.mediaElement.originalNode.parentNode.insertBefore(errorContainer, t.mediaElement.originalNode);
+		t.mediaElement.originalNode.style.display = 'none';
+		error = true;
+	};
+
+	var props = _mejs2.default.html5media.properties,
+	    methods = _mejs2.default.html5media.methods,
+	    addProperty = function addProperty(obj, name, onGet, onSet) {
+
+		// wrapper functions
+		var oldValue = obj[name];
+		var getFn = function getFn() {
+			return onGet.apply(obj, [oldValue]);
+		},
+		    setFn = function setFn(newValue) {
+			oldValue = onSet.apply(obj, [newValue]);
+			return oldValue;
+		};
+
+		Object.defineProperty(obj, name, {
+			get: getFn,
+			set: setFn
+		});
+	},
+	    assignGettersSetters = function assignGettersSetters(propName) {
+		if (propName !== 'src') {
+			(function () {
+
+				var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
+				    getFn = function getFn() {
+					return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer['get' + capName]() : null;
+				},
+				    setFn = function setFn(value) {
+					if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+						t.mediaElement.renderer['set' + capName](value);
+					}
+				};
+
+				addProperty(t.mediaElement, propName, getFn, setFn);
+				t.mediaElement['get' + capName] = getFn;
+				t.mediaElement['set' + capName] = setFn;
+			})();
+		}
+	},
+
+	// `src` is a property separated from the others since it carries the logic to set the proper renderer
+	// based on the media files detected
+	getSrc = function getSrc() {
+		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
+	},
+	    setSrc = function setSrc(value) {
+
+		var mediaFiles = [];
+
+		// clean up URLs
+		if (typeof value === 'string') {
+			mediaFiles.push({
+				src: value,
+				type: value ? (0, _media.getTypeFromFile)(value) : ''
+			});
+		} else {
+			for (var i = 0, total = value.length; i < total; i++) {
+
+				var src = (0, _media.absolutizeUrl)(value[i].src),
+				    type = value[i].type;
+
+				mediaFiles.push({
+					src: src,
+					type: (type === '' || type === null || type === undefined) && src ? (0, _media.getTypeFromFile)(src) : type
+				});
+			}
+		}
+
+		// find a renderer and URL match
+		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
+		    event = void 0;
+
+		// Ensure that the original gets the first source found
+		if (!t.mediaElement.paused) {
+			t.mediaElement.pause();
+			event = (0, _general.createEvent)('pause', t.mediaElement);
+			t.mediaElement.dispatchEvent(event);
+		}
+
+		t.mediaElement.originalNode.setAttribute('src', mediaFiles[0].src || '');
+
+		if (t.mediaElement.querySelector('.me_cannotplay')) {
+			t.mediaElement.querySelector('.me_cannotplay').remove();
+		}
+
+		// did we find a renderer?
+		if (renderInfo === null) {
+			t.mediaElement.createErrorMessage(mediaFiles);
+			event = (0, _general.createEvent)('error', t.mediaElement);
+			event.message = 'No renderer found';
+			t.mediaElement.dispatchEvent(event);
+			return;
+		}
+
+		// turn on the renderer (this checks for the existing renderer already)
+		t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles);
+
+		if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) {
+			event = (0, _general.createEvent)('error', t.mediaElement);
+			event.message = 'Error creating renderer';
+			t.mediaElement.dispatchEvent(event);
+			t.mediaElement.createErrorMessage(mediaFiles);
+			return;
+		}
+	},
+	    assignMethods = function assignMethods(methodName) {
+		// run the method on the current renderer
+		t.mediaElement[methodName] = function () {
+			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+				args[_key] = arguments[_key];
+			}
+
+			if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
+				try {
+					t.mediaElement.renderer[methodName](args);
+				} catch (e) {
+					t.mediaElement.createErrorMessage();
+				}
+			}
+			return null;
+		};
+	};
+
+	// Assign all methods/properties/events to fake node if renderer was found
+	addProperty(t.mediaElement, 'src', getSrc, setSrc);
+	t.mediaElement.getSrc = getSrc;
+	t.mediaElement.setSrc = setSrc;
+
+	for (var i = 0, total = props.length; i < total; i++) {
+		assignGettersSetters(props[i]);
+	}
+
+	for (var _i = 0, _total = methods.length; _i < _total; _i++) {
+		assignMethods(methods[_i]);
+	}
+
+	// IE && iOS
+	t.mediaElement.events = {};
+
+	// start: fake events
+	t.mediaElement.addEventListener = function (eventName, callback) {
+		// create or find the array of callbacks for this eventName
+		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
+
+		// push the callback into the stack
+		t.mediaElement.events[eventName].push(callback);
+	};
+	t.mediaElement.removeEventListener = function (eventName, callback) {
+		// no eventName means remove all listeners
+		if (!eventName) {
+			t.mediaElement.events = {};
+			return true;
+		}
+
+		// see if we have any callbacks for this eventName
+		var callbacks = t.mediaElement.events[eventName];
+
+		if (!callbacks) {
+			return true;
+		}
+
+		// check for a specific callback
+		if (!callback) {
+			t.mediaElement.events[eventName] = [];
+			return true;
+		}
+
+		// remove the specific callback
+		for (var _i2 = 0; _i2 < callbacks.length; _i2++) {
+			if (callbacks[_i2] === callback) {
+				t.mediaElement.events[eventName].splice(_i2, 1);
+				return true;
+			}
+		}
+		return false;
+	};
+
+	/**
+  *
+  * @param {Event} event
+  */
+	t.mediaElement.dispatchEvent = function (event) {
+
+		var callbacks = t.mediaElement.events[event.type];
+
+		if (callbacks) {
+			for (var _i3 = 0; _i3 < callbacks.length; _i3++) {
+				callbacks[_i3].apply(null, [event]);
+			}
+		}
+	};
+
+	if (t.mediaElement.originalNode !== null) {
+		var mediaFiles = [];
+
+		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
+
+			case 'iframe':
+				mediaFiles.push({
+					type: '',
+					src: t.mediaElement.originalNode.getAttribute('src')
+				});
+
+				break;
+
+			case 'audio':
+			case 'video':
+				var n = void 0,
+				    src = void 0,
+				    type = void 0,
+				    sources = t.mediaElement.originalNode.childNodes.length,
+				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
+
+				// Consider if node contains the `src` and `type` attributes
+				if (nodeSource) {
+					var node = t.mediaElement.originalNode;
+					mediaFiles.push({
+						type: (0, _media.formatType)(nodeSource, node.getAttribute('type')),
+						src: nodeSource
+					});
+				}
+
+				// test <source> types to see if they are usable
+				for (var _i4 = 0; _i4 < sources; _i4++) {
+					n = t.mediaElement.originalNode.childNodes[_i4];
+					if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') {
+						src = n.getAttribute('src');
+						type = (0, _media.formatType)(src, n.getAttribute('type'));
+						mediaFiles.push({ type: type, src: src });
+					}
+				}
+				break;
+		}
+
+		if (mediaFiles.length > 0) {
+			t.mediaElement.src = mediaFiles;
+		}
+	}
+
+	if (t.mediaElement.options.success) {
+		t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
+	}
+
+	if (error && t.mediaElement.options.error) {
+		t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
+	}
+
+	return t.mediaElement;
+};
+
+_window2.default.MediaElement = MediaElement;
+
+exports.default = MediaElement;
+
+},{"2":2,"25":25,"26":26,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
 // Namespace
-var mejs = mejs || {};
+var mejs = {};
+
+// version number
+mejs.version = '4.0.2';
+
+// Basic HTML5 settings
+mejs.html5media = {
+	/**
+  * @type {String[]}
+  */
+	properties: [
+	// GET/SET
+	'volume', 'src', 'currentTime', 'muted',
+
+	// GET only
+	'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable',
+
+	// OTHERS
+	'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
+	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
+	/**
+  * @type {String[]}
+  */
+	methods: ['load', 'play', 'pause', 'canPlayType'],
+	/**
+  * @type {String[]}
+  */
+	events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'],
+	/**
+  * @type {String[]}
+  */
+	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']
+};
+
+_window2.default.mejs = mejs;
+
+exports.default = mejs;
+
+},{"3":3}],7:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.renderer = undefined;
+
+var _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; };
+
+var _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; }; }();
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ *
+ * Class to manage renderer selection and addition.
+ * @class Renderer
+ */
+var Renderer = function () {
+	function Renderer() {
+		_classCallCheck(this, Renderer);
+
+		this.renderers = {};
+		this.order = [];
+	}
+
+	/**
+  * Register a new renderer.
+  *
+  * @param {Object} renderer - An object with all the rendered information (name REQUIRED)
+  * @method add
+  */
+
+
+	_createClass(Renderer, [{
+		key: 'add',
+		value: function add(renderer) {
+
+			if (renderer.name === undefined) {
+				throw new TypeError('renderer must contain at least `name` property');
+			}
+
+			this.renderers[renderer.name] = renderer;
+			this.order.push(renderer.name);
+		}
+
+		/**
+   * Iterate a list of renderers to determine which one should the player use.
+   *
+   * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}]
+   * @param {?String[]} renderers - Optional list of pre-selected renderers
+   * @return {?Object} The renderer's name and source selected
+   * @method select
+   */
+
+	}, {
+		key: 'select',
+		value: function select(mediaFiles) {
+			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+
+			var renderersLength = renderers.length;
+
+			renderers = renderers.length ? renderers : this.order;
+
+			// If renderers are not set, set a default order:
+			// 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV)
+			// 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG)
+			// 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.)
+			if (!renderersLength) {
+				(function () {
+					var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/],
+					    rendererRanking = function rendererRanking(renderer) {
+						for (var i = 0, total = rendererIndicator.length; i < total; i++) {
+							if (renderer.match(rendererIndicator[i]) !== null) {
+								return i;
+							}
+						}
+						return rendererIndicator.length;
+					};
+
+					renderers.sort(function (a, b) {
+						return rendererRanking(a) - rendererRanking(b);
+					});
+				})();
+			}
+
+			for (var i = 0, total = renderers.length; i < total; i++) {
+				var key = renderers[i],
+				    _renderer = this.renderers[key];
+
+				if (_renderer !== null && _renderer !== undefined) {
+					for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
+						if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
+							return {
+								rendererName: _renderer.name,
+								src: mediaFiles[j].src
+							};
+						}
+					}
+				}
+			}
+
+			return null;
+		}
+
+		// Setters/getters
+
+	}, {
+		key: 'order',
+		set: function set(order) {
+
+			if (!Array.isArray(order)) {
+				throw new TypeError('order must be an array of strings.');
+			}
+
+			this._order = order;
+		},
+		get: function get() {
+			return this._order;
+		}
+	}, {
+		key: 'renderers',
+		set: function set(renderers) {
+
+			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
+				throw new TypeError('renderers must be an array of objects.');
+			}
+
+			this._renderers = renderers;
+		},
+		get: function get() {
+			return this._renderers;
+		}
+	}]);
+
+	return Renderer;
+}();
+
+var renderer = exports.renderer = new Renderer();
+
+_mejs2.default.Renderers = renderer;
+
+},{"6":6}],8:[function(_dereq_,module,exports){
+'use strict';
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _constants = _dereq_(23);
+
+var Features = _interopRequireWildcard(_constants);
+
+var _general = _dereq_(25);
+
+var _dom = _dereq_(24);
+
+function _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; } }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Fullscreen button
+ *
+ * This feature creates a button to toggle fullscreen on video; it considers a letiety of possibilities when dealing with it
+ * since it is not consistent across browsers. It also accounts for triggering the event through Flash shim.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * @type {Boolean}
+  */
+	usePluginFullScreen: true,
+	/**
+  * @type {?String}
+  */
+	fullscreenText: null
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * @type {Boolean}
+  */
+	isFullScreen: false,
+	/**
+  * @type {Boolean}
+  */
+	isNativeFullScreen: false,
+	/**
+  * @type {Boolean}
+  */
+	isInIframe: false,
+	/**
+  * @type {Boolean}
+  */
+	isPluginClickThroughCreated: false,
+	/**
+  * Possible modes
+  * (1) 'native-native'  HTML5 video  + browser fullscreen (IE10+, etc.)
+  * (2) 'plugin-native'  plugin video + browser fullscreen (fails in some versions of Firefox)
+  * (3) 'fullwindow'     Full window (retains all UI)
+  *
+  * @type {String}
+  */
+	fullscreenMode: '',
+	/**
+  *
+  */
+	containerSizeTimeout: null,
+
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildfullscreen: function buildfullscreen(player, controls, layers, media) {
+
+		if (!player.isVideo) {
+			return;
+		}
+
+		player.isInIframe = _window2.default.location !== _window2.default.parent.location;
+
+		// detect on start
+		media.addEventListener('loadstart', function () {
+			player.detectFullscreenMode();
+		});
+
+		var t = this,
+		    fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),
+		    fullscreenBtn = _document2.default.createElement('div');
+
+		fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';
+		fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>';
+		t.addControlElement(fullscreenBtn, 'fullscreen');
+
+		fullscreenBtn.addEventListener('click', function () {
+			// toggle fullscreen
+			var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
+
+			if (isFullScreen) {
+				player.exitFullScreen();
+			} else {
+				player.enterFullScreen();
+			}
+		});
+
+		player.fullscreenBtn = fullscreenBtn;
+
+		t.globalBind('keydown', function (e) {
+			var key = e.which || e.keyCode || 0;
+			if (key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {
+				player.exitFullScreen();
+			}
+		});
+
+		t.normalHeight = 0;
+		t.normalWidth = 0;
+
+		// setup native fullscreen event
+		if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
+
+			//
+			/**
+    * Detect any changes on fullscreen
+    *
+    * Chrome doesn't always fire this in an `<iframe>`
+    * @private
+    */
+			var fullscreenChanged = function fullscreenChanged() {
+				if (player.isFullScreen) {
+					if (Features.isFullScreen()) {
+						player.isNativeFullScreen = true;
+						// reset the controls once we are fully in full screen
+						player.setControlsSize();
+					} else {
+						player.isNativeFullScreen = false;
+						// when a user presses ESC
+						// make sure to put the player back into place
+						player.exitFullScreen();
+					}
+				}
+			};
+
+			player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
+		}
+	},
+
+
+	/**
+  * Detect the type of fullscreen based on browser's capabilities
+  *
+  * @return {String}
+  */
+	detectFullscreenMode: function detectFullscreenMode() {
+
+		var t = this,
+		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+
+		var mode = '';
+
+		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {
+			mode = 'native-native';
+		} else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {
+			mode = 'plugin-native';
+		} else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {
+			mode = 'plugin-click';
+		} else {
+			mode = 'fullwindow';
+		}
+
+		t.fullscreenMode = mode;
+		return mode;
+	},
+
+
+	/**
+  * Feature destructor.
+  *
+  * Always has to be prefixed with `clean` and the name that was used in features list
+  * @param {MediaElementPlayer} player
+  */
+	cleanfullscreen: function cleanfullscreen(player) {
+		player.exitFullScreen();
+	},
+
+
+	/**
+  *
+  */
+	enterFullScreen: function enterFullScreen() {
+
+		var t = this,
+		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(html5|native)/) !== null,
+		    containerStyles = getComputedStyle(t.container);
+
+		if (Features.IS_IOS && Features.HAS_IOS_FULLSCREEN && typeof t.media.webkitEnterFullscreen === 'function') {
+			t.media.webkitEnterFullscreen();
+			return;
+		}
+
+		// set it to not show scroll bars so 100% will work
+		(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
+		(0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen');
+
+		// store sizing
+		t.normalHeight = parseFloat(containerStyles.height);
+		t.normalWidth = parseFloat(containerStyles.width);
+
+		// attempt to do true fullscreen
+		if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
+
+			Features.requestFullScreen(t.container);
+
+			if (t.isInIframe) {
+				// sometimes exiting from fullscreen doesn't work
+				// notably in Chrome <iframe>. Fixed in version 17
+				setTimeout(function checkFullscreen() {
+
+					if (t.isNativeFullScreen) {
+						var percentErrorMargin = 0.002,
+						    // 0.2%
+						windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
+						    screenWidth = screen.width,
+						    absDiff = Math.abs(screenWidth - windowWidth),
+						    marginError = screenWidth * percentErrorMargin;
+
+						// check if the video is suddenly not really fullscreen
+						if (absDiff > marginError) {
+							// manually exit
+							t.exitFullScreen();
+						} else {
+							// test again
+							setTimeout(checkFullscreen, 500);
+						}
+					}
+				}, 1000);
+			}
+		} else if (t.fullscreeMode === 'fullwindow') {}
+		// move into position
+
+		// make full size
+		t.container.style.width = '100%';
+		t.container.style.height = '100%';
+
+		// Only needed for safari 5.1 native full screen, can cause display issues elsewhere
+		// Actually, it seems to be needed for IE8, too
+		t.containerSizeTimeout = setTimeout(function () {
+			t.container.style.width = '100%';
+			t.container.style.height = '100%';
+			t.setControlsSize();
+		}, 500);
+
+		if (isNative) {
+			t.node.style.width = '100%';
+			t.node.style.height = '100%';
+		} else {
+			var elements = t.container.querySelectorAll('iframe, embed, object, video'),
+			    _total = elements.length;
+			for (var i = 0; i < _total; i++) {
+				elements[i].style.width = '100%';
+				elements[i].style.height = '100%';
+			}
+		}
+
+		if (t.options.setDimensions && typeof t.media.setSize === 'function') {
+			t.media.setSize(screen.width, screen.height);
+		}
+
+		var layers = t.layers.childNodes,
+		    total = layers.length;
+		for (var _i = 0; _i < total; _i++) {
+			layers[_i].style.width = '100%';
+			layers[_i].style.height = '100%';
+		}
+
+		if (t.fullscreenBtn) {
+			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
+			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
+		}
+
+		t.setControlsSize();
+		t.isFullScreen = true;
+
+		var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),
+		    captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text');
+		if (captionText) {
+			captionText.style.fontSize = zoomFactor * 100 + '%';
+			captionText.style.lineHeight = 'normal';
+			t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '45px';
+		}
+		var event = (0, _general.createEvent)('enteredfullscreen', t.container);
+		t.container.dispatchEvent(event);
+	},
+
+
+	/**
+  *
+  */
+	exitFullScreen: function exitFullScreen() {
+
+		var t = this,
+		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+
+		// Prevent container from attempting to stretch a second time
+		clearTimeout(t.containerSizeTimeout);
+
+		// come out of native fullscreen
+		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
+			Features.cancelFullScreen();
+		}
+
+		// restore scroll bars to document
+		(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
+		(0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen');
+
+		if (t.options.setDimensions) {
+			t.container.style.width = t.normalWidth + 'px';
+			t.container.style.height = t.normalHeight + 'px';
+
+			if (isNative) {
+				t.node.style.width = t.normalWidth + 'px';
+				t.node.style.height = t.normalHeight + 'px';
+			} else {
+				var elements = t.container.querySelectorAll('iframe, embed, object, video'),
+				    _total2 = elements.length;
+				for (var i = 0; i < _total2; i++) {
+					elements[i].style.width = t.normalWidth + 'px';
+					elements[i].style.height = t.normalHeight + 'px';
+				}
+			}
+
+			if (typeof t.media.setSize === 'function') {
+				t.media.setSize(t.normalWidth, t.normalHeight);
+			}
+
+			var layers = t.layers.childNodes,
+			    total = layers.length;
+			for (var _i2 = 0; _i2 < total; _i2++) {
+				layers[_i2].style.width = t.normalWidth + 'px';
+				layers[_i2].style.height = t.normalHeight + 'px';
+			}
+		}
+
+		(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
+		(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
+
+		t.setControlsSize();
+		t.isFullScreen = false;
+
+		var captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text');
+		if (captionText) {
+			captionText.style.fontSize = '';
+			captionText.style.lineHeight = '';
+			t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';
+		}
+		var event = (0, _general.createEvent)('exitedfullscreen', t.container);
+		t.container.dispatchEvent(event);
+	}
+});
+
+},{"16":16,"2":2,"23":23,"24":24,"25":25,"3":3,"4":4}],9:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _general = _dereq_(25);
+
+var _dom = _dereq_(24);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Play/Pause button
+ *
+ * This feature enables the displaying of a Play button in the control bar, and also contains logic to toggle its state
+ * between paused and playing.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * @type {?String}
+  */
+	playText: null,
+	/**
+  * @type {?String}
+  */
+	pauseText: null
+});
+
+Object.assign(_player2.default.prototype, {
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  * @public
+  */
+	buildplaypause: function buildplaypause(player, controls, layers, media) {
+
+		var t = this,
+		    op = t.options,
+		    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
+		    pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),
+		    play = _document2.default.createElement('div');
+
+		play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';
+		play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>';
+		play.addEventListener('click', function () {
+			if (media.paused) {
+				media.play();
+			} else {
+				media.pause();
+			}
+		});
+
+		var playBtn = play.querySelector('button');
+		t.addControlElement(play, 'playpause');
+
+		/**
+   * @private
+   * @param {String} which - token to determine new state of button
+   */
+		function togglePlayPause(which) {
+			if ('play' === which) {
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
+				(0, _dom.addClass)(play, t.options.classPrefix + 'pause');
+				playBtn.setAttribute('title', pauseTitle);
+				playBtn.setAttribute('aria-label', pauseTitle);
+			} else {
+
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
+				(0, _dom.addClass)(play, t.options.classPrefix + 'play');
+				playBtn.setAttribute('title', playTitle);
+				playBtn.setAttribute('aria-label', playTitle);
+			}
+		}
+
+		togglePlayPause('pse');
+
+		media.addEventListener('loadedmetadata', function () {
+			togglePlayPause('pse');
+		});
+
+		media.addEventListener('play', function () {
+			togglePlayPause('play');
+		});
+		media.addEventListener('playing', function () {
+			togglePlayPause('play');
+		});
+
+		media.addEventListener('pause', function () {
+			togglePlayPause('pse');
+		});
+		media.addEventListener('paused', function () {
+			togglePlayPause('pse');
+		});
+
+		media.addEventListener('ended', function () {
+
+			if (!player.options.loop) {
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
+				(0, _dom.addClass)(play, t.options.classPrefix + 'replay');
+				playBtn.setAttribute('title', playTitle);
+				playBtn.setAttribute('aria-label', playTitle);
+			}
+		});
+	}
+});
+
+},{"16":16,"2":2,"24":24,"25":25,"4":4}],10:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _constants = _dereq_(23);
+
+var _time = _dereq_(28);
+
+var _dom = _dereq_(24);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Progress/loaded bar
+ *
+ * This feature creates a progress bar with a slider in the control bar, and updates it based on native events.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * Enable tooltip that shows time in progress bar
+  * @type {Boolean}
+  */
+	enableProgressTooltip: true
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildprogress: function buildprogress(player, controls, layers, media) {
+
+		var lastKeyPressTime = 0,
+		    mouseIsDown = false,
+		    startedPaused = false;
+
+		var t = this,
+		    autoRewindInitial = player.options.autoRewind,
+		    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>' : "",
+		    rail = _document2.default.createElement('div');
+
+		rail.className = t.options.classPrefix + 'time-rail';
+		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-handle"></span>') + ('' + tooltip) + '</span>';
+
+		t.addControlElement(rail, 'progress');
+
+		controls.querySelector('.' + t.options.classPrefix + 'time-buffering').style.display = 'none';
+
+		t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');
+		t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');
+		t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');
+		t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');
+		t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');
+		t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');
+		t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');
+		t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');
+		t.newTime = 0;
+		t.forcedHandlePause = false;
+
+		/**
+   *
+   * @private
+   * @param {Event} e
+   */
+		var handleMouseMove = function handleMouseMove(e) {
+
+			var totalStyles = getComputedStyle(t.total),
+			    offsetStyles = (0, _dom.offset)(t.total),
+			    width = parseFloat(totalStyles.width);
+
+			var percentage = 0,
+			    pos = 0,
+			    x = void 0;
+
+			// mouse or touch position relative to the object
+			if (e.originalEvent && e.originalEvent.changedTouches) {
+				x = e.originalEvent.changedTouches[0].pageX;
+			} else if (e.changedTouches) {
+				// for Zepto
+				x = e.changedTouches[0].pageX;
+			} else {
+				x = e.pageX;
+			}
+
+			if (media.duration) {
+				if (x < offsetStyles.left) {
+					x = offsetStyles.left;
+				} else if (x > width + offsetStyles.left) {
+					x = width + offsetStyles.left;
+				}
+
+				pos = x - offsetStyles.left;
+				percentage = pos / width;
+				t.newTime = percentage <= 0.02 ? 0 : percentage * media.duration;
+
+				// fake seek to where the mouse is
+				if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) {
+					t.setCurrentRailHandle(t.newTime);
+					t.updateCurrent(t.newTime);
+				}
+
+				// position floating time box
+				if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
+					t.timefloat.style.left = pos + 'px';
+					t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength);
+					t.timefloat.style.display = 'block';
+				}
+			}
+		},
+
+		/**
+   * Update elements in progress bar for accessibility purposes only when player is paused.
+   *
+   * This is to avoid attempts to repeat the time over and over again when media is playing.
+   * @private
+   */
+		updateSlider = function updateSlider() {
+
+			var seconds = media.currentTime,
+			    timeSliderText = _i18n2.default.t('mejs.time-slider'),
+			    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength),
+			    duration = media.duration;
+
+			t.slider.setAttribute('role', 'slider');
+			t.slider.tabIndex = 0;
+
+			if (media.paused) {
+				t.slider.setAttribute('aria-label', timeSliderText);
+				t.slider.setAttribute('aria-valuemin', 0);
+				t.slider.setAttribute('aria-valuemax', duration);
+				t.slider.setAttribute('aria-valuenow', seconds);
+				t.slider.setAttribute('aria-valuetext', time);
+			} else {
+				t.slider.removeAttribute('aria-label');
+				t.slider.removeAttribute('aria-valuemin');
+				t.slider.removeAttribute('aria-valuemax');
+				t.slider.removeAttribute('aria-valuenow');
+				t.slider.removeAttribute('aria-valuetext');
+			}
+		},
+
+		/**
+   *
+   * @private
+   */
+		restartPlayer = function restartPlayer() {
+			var now = new Date();
+			if (now - lastKeyPressTime >= 1000) {
+				media.play();
+			}
+		},
+		    handleMouseup = function handleMouseup() {
+
+			if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) {
+				media.setCurrentTime(t.newTime);
+				player.setCurrentRail();
+				t.updateCurrent(t.newTime);
+			}
+			if (t.forcedHandlePause) {
+				t.media.play();
+			}
+			t.forcedHandlePause = false;
+		};
+
+		// Events
+		t.slider.addEventListener('focus', function () {
+			player.options.autoRewind = false;
+		});
+		t.slider.addEventListener('blur', function () {
+			player.options.autoRewind = autoRewindInitial;
+		});
+		t.slider.addEventListener('keydown', function (e) {
+
+			if (new Date() - lastKeyPressTime >= 1000) {
+				startedPaused = media.paused;
+			}
+
+			if (t.options.keyActions.length) {
+
+				var keyCode = e.which || e.keyCode || 0,
+				    duration = media.duration,
+				    seekForward = player.options.defaultSeekForwardInterval(media),
+				    seekBackward = player.options.defaultSeekBackwardInterval(media);
+
+				var seekTime = media.currentTime;
+
+				switch (keyCode) {
+					case 37: // left
+					case 40:
+						// Down
+						if (media.duration !== Infinity) {
+							seekTime -= seekBackward;
+						}
+						break;
+					case 39: // Right
+					case 38:
+						// Up
+						if (media.duration !== Infinity) {
+							seekTime += seekForward;
+						}
+						break;
+					case 36:
+						// Home
+						seekTime = 0;
+						break;
+					case 35:
+						// end
+						seekTime = duration;
+						break;
+					case 32:
+						// space
+						if (!_constants.IS_FIREFOX) {
+							if (media.paused) {
+								media.play();
+							} else {
+								media.pause();
+							}
+						}
+						return;
+					case 13:
+						// enter
+						if (media.paused) {
+							media.play();
+						} else {
+							media.pause();
+						}
+						return;
+					default:
+						return;
+				}
+
+				seekTime = seekTime < 0 ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);
+				lastKeyPressTime = new Date();
+				if (!startedPaused) {
+					media.pause();
+				}
+
+				if (seekTime < media.duration && !startedPaused) {
+					setTimeout(restartPlayer, 1100);
+				}
+
+				media.setCurrentTime(seekTime);
+
+				e.preventDefault();
+				e.stopPropagation();
+			}
+		});
+
+		var events = ['mousedown', 'touchstart'];
+
+		// Required to manipulate mouse movements that require drag 'n' drop properly
+		t.slider.addEventListener('dragstart', function () {
+			return false;
+		});
+
+		for (var i = 0, total = events.length; i < total; i++) {
+			t.slider.addEventListener(events[i], function (e) {
+				t.forcedHandlePause = false;
+				if (media.duration !== Infinity) {
+					// only handle left clicks or touch
+					if (e.which === 1 || e.which === 0) {
+
+						if (!media.paused) {
+							t.media.pause();
+							t.forcedHandlePause = true;
+						}
+
+						mouseIsDown = true;
+						handleMouseMove(e);
+						t.globalBind('mousemove.dur touchmove.dur', function (event) {
+							var target = event.target;
+							if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
+								handleMouseMove(event);
+							}
+						});
+						t.globalBind('mouseup.dur touchend.dur', function () {
+							handleMouseup();
+							mouseIsDown = false;
+							if (t.timefloat) {
+								t.timefloat.style.display = 'none';
+							}
+							t.globalUnbind('mousemove.dur touchmove.dur mouseup.dur touchend.dur');
+						});
+					}
+				}
+			});
+		}
+		t.slider.addEventListener('mouseenter', function (e) {
+			if (e.target === t.slider && media.duration !== Infinity) {
+				t.globalBind('mousemove.dur', function (event) {
+					var target = event.target;
+					if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
+						handleMouseMove(event);
+					}
+				});
+				if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {
+					t.timefloat.style.display = 'block';
+				}
+			}
+		});
+		t.slider.addEventListener('mouseleave', function () {
+			if (media.duration !== Infinity) {
+				if (!mouseIsDown) {
+					t.globalUnbind('mousemove.dur');
+					if (t.timefloat) {
+						t.timefloat.style.display = 'none';
+					}
+				}
+			}
+		});
+
+		// loading
+		// If media is does not have a finite duration, remove progress bar interaction
+		// and indicate that is a live broadcast
+		media.addEventListener('progress', function (e) {
+			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
+			if (media.duration !== Infinity) {
+				if (broadcast) {
+					t.slider.style.display = '';
+					broadcast.remove();
+				}
+
+				player.setProgressRail(e);
+				if (!t.forcedHandlePause) {
+					player.setCurrentRail(e);
+				}
+			} else if (!broadcast) {
+				var label = _document2.default.createElement('span');
+				label.className = t.options.classPrefix + 'broadcast';
+				label.innerText = _i18n2.default.t('mejs.live-broadcast');
+				t.slider.style.display = 'none';
+			}
+		});
+
+		// current time
+		media.addEventListener('timeupdate', function (e) {
+			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
+			if (media.duration !== Infinity) {
+				if (broadcast) {
+					t.slider.style.display = '';
+					broadcast.remove();
+				}
+
+				player.setProgressRail(e);
+				if (!t.forcedHandlePause) {
+					player.setCurrentRail(e);
+				}
+				updateSlider(e);
+			} else if (!broadcast) {
+				var label = _document2.default.createElement('span');
+				label.className = t.options.classPrefix + 'broadcast';
+				label.innerText = _i18n2.default.t('mejs.live-broadcast');
+				controls.querySelector('.' + t.options.classPrefix + 'time-rail').appendChild(label);
+				t.slider.style.display = 'none';
+			}
+		});
+
+		t.container.addEventListener('controlsresize', function (e) {
+			if (media.duration !== Infinity) {
+				player.setProgressRail(e);
+				if (!t.forcedHandlePause) {
+					player.setCurrentRail(e);
+				}
+			}
+		});
+	},
+
+
+	/**
+  * Calculate the progress on the media and update progress bar's width
+  *
+  * @param {Event} e
+  */
+	setProgressRail: function setProgressRail(e) {
+
+		var percent = null;
+
+		var t = this,
+		    target = e !== undefined ? e.target : t.media;
+
+		// newest HTML5 spec has buffered array (FF4, Webkit)
+		if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) {
+			// account for a real array with multiple values - always read the end of the last buffer
+			percent = target.buffered.end(target.buffered.length - 1) / target.duration;
+		}
+		// Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end()
+		// to be anything other than 0. If the byte count is available we use this instead.
+		// Browsers that support the else if do not seem to have the bufferedBytes value and
+		// should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8.
+		else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
+				percent = target.bufferedBytes / target.bytesTotal;
+			}
+			// Firefox 3 with an Ogg file seems to go this way
+			else if (e && e.lengthComputable && e.total !== 0) {
+					percent = e.loaded / e.total;
+				}
+
+		// finally update the progress bar
+		if (percent !== null) {
+			percent = Math.min(1, Math.max(0, percent));
+			// update loaded bar
+			if (t.loaded && t.total) {
+				t.loaded.style.width = percent * 100 + '%';
+			}
+		}
+	},
+
+	/**
+  * Update the slider's width depending on the time assigned
+  *
+  * @param {Number} fakeTime
+  */
+	setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
+		var t = this;
+		t.setCurrentRailMain(t, fakeTime);
+	},
+
+	/**
+  * Update the slider's width depending on the current time
+  *
+  */
+	setCurrentRail: function setCurrentRail() {
+		var t = this;
+		t.setCurrentRailMain(t);
+	},
+
+	/**
+  * Method that handles the calculation of the width of the rail.
+  *
+  * @param {MediaElementPlayer} t
+  * @param {?Number} fakeTime
+  */
+	setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
+		if (t.media.currentTime !== undefined && t.media.duration) {
+			var nTime = typeof fakeTime === 'undefined' ? t.media.currentTime : fakeTime;
+
+			// update bar and handle
+			if (t.total && t.handle) {
+				var newWidth = Math.round(parseFloat(getComputedStyle(t.total).width) * nTime / t.media.duration),
+				    handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);
+
+				newWidth = nTime / t.media.duration * 100;
+				t.current.style.width = newWidth + '%';
+				t.handle.style.left = handlePos + 'px';
+			}
+		}
+	}
+});
+
+},{"16":16,"2":2,"23":23,"24":24,"28":28,"4":4}],11:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _time = _dereq_(28);
+
+var _dom = _dereq_(24);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Current/duration times
+ *
+ * This feature creates/updates the duration and progress times in the control bar, based on native events.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * The initial duration
+  * @type {Number}
+  */
+	duration: 0,
+	/**
+  * @type {String}
+  */
+	timeAndDurationSeparator: '<span> | </span>'
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * Current time constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildcurrent: function buildcurrent(player, controls, layers, media) {
+		var t = this,
+		    time = _document2.default.createElement('div');
+
+		time.className = t.options.classPrefix + 'time';
+		time.setAttribute('role', 'timer');
+		time.setAttribute('aria-live', 'off');
+		time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength) + '</span>';
+
+		t.addControlElement(time, 'current');
+
+		media.addEventListener('timeupdate', function () {
+			if (t.controlsAreVisible) {
+				player.updateCurrent();
+			}
+		});
+	},
+
+
+	/**
+  * Duration time constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildduration: function buildduration(player, controls, layers, media) {
+
+		var t = this,
+		    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
+
+		if (currTime) {
+			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) + '</span>');
+		} else {
+
+			// add class to current time
+			if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
+				(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
+			}
+
+			var duration = _document2.default.createElement('div');
+			duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';
+			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) + '</span>');
+
+			t.addControlElement(duration, 'duration');
+		}
+
+		media.addEventListener('timeupdate', function () {
+			if (t.controlsAreVisible) {
+				player.updateDuration();
+			}
+		});
+	},
+
+
+	/**
+  * Update the current time and output it in format 00:00
+  *
+  */
+	updateCurrent: function updateCurrent() {
+		var t = this;
+
+		var currentTime = t.media.currentTime;
+
+		if (isNaN(currentTime)) {
+			currentTime = 0;
+		}
+
+		if (t.controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
+			t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
+		}
+	},
+
+
+	/**
+  * Update the duration time and output it in format 00:00
+  *
+  */
+	updateDuration: function updateDuration() {
+		var t = this;
+
+		var duration = t.media.duration;
+
+		if (isNaN(duration) || duration === Infinity || duration < 0) {
+			t.media.duration = t.options.duration = duration = 0;
+		}
+
+		if (t.options.duration > 0) {
+			duration = t.options.duration;
+		}
+
+		var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
+
+		// Toggle long-video class if time code is >5 digits (MM:SS)
+		if (timecode.length > 5) {
+			(0, _dom.toggleClass)(t.container, t.options.classPrefix + 'long-video');
+		}
+
+		if (t.controls.querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {
+			t.controls.querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;
+		}
+	}
+});
+
+},{"16":16,"2":2,"24":24,"28":28}],12:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _time = _dereq_(28);
+
+var _general = _dereq_(25);
+
+var _dom = _dereq_(24);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Closed Captions (CC) button
+ *
+ * This feature enables the displaying of a CC button in the control bar, and also contains the methods to start media
+ * with a certain language (if available), toggle captions, etc.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * Default language to start media using ISO 639-2 Language Code List (en, es, it, etc.)
+  * If there are multiple tracks for one language, the last track node found is activated
+  * @see https://www.loc.gov/standards/iso639-2/php/code_list.php
+  * @type {String}
+  */
+	startLanguage: '',
+	/**
+  * @type {?String}
+  */
+	tracksText: null,
+	/**
+  * @type {?String}
+  */
+	chaptersText: null,
+	/**
+  * Avoid to screen reader speak captions over an audio track.
+  *
+  * @type {Boolean}
+  */
+	tracksAriaLive: false,
+	/**
+  * Remove the [cc] button when no track nodes are present
+  * @type {Boolean}
+  */
+	hideCaptionsButtonWhenEmpty: true,
+	/**
+  * Change captions to pop-up if true and only one track node is found
+  * @type {Boolean}
+  */
+	toggleCaptionsButtonWhenOnlyOne: false,
+	/**
+  * @type {String}
+  */
+	slidesSelector: ''
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * @type {Boolean}
+  */
+	hasChapters: false,
+
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildtracks: function buildtracks(player, controls, layers, media) {
+		if (player.tracks.length === 0) {
+			return;
+		}
+
+		var t = this,
+		    attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '',
+		    tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),
+		    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
+		    total = player.tracks.length;
+
+		// If browser will do native captions, prefer mejs captions, loop through tracks and hide
+		if (t.domNode.textTracks) {
+			for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
+				t.domNode.textTracks[i].mode = 'hidden';
+			}
+		}
+
+		t.cleartracks(player);
+
+		player.captions = _document2.default.createElement('div');
+		player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';
+		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>';
+		player.captions.style.display = 'none';
+		layers.insertBefore(player.captions, layers.firstChild);
+
+		player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');
+
+		player.captionsButton = _document2.default.createElement('div');
+		player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';
+		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>';
+
+		t.addControlElement(player.captionsButton, 'tracks');
+
+		player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-list-item').disabled = false;
+
+		player.chaptersButton = _document2.default.createElement('div');
+		player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';
+		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>';
+
+		var subtitleCount = 0;
+
+		for (var _i = 0; _i < total; _i++) {
+			var kind = player.tracks[_i].kind;
+			if (kind === 'subtitles' || kind === 'captions') {
+				subtitleCount++;
+			} else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {
+				player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);
+			}
+		}
+
+		player.trackToLoad = -1;
+		player.selectedTrack = null;
+		player.isLoadingTrack = false;
+
+		// add to list
+		for (var _i2 = 0; _i2 < total; _i2++) {
+			var _kind = player.tracks[_i2].kind;
+			if (_kind === 'subtitles' || _kind === 'captions') {
+				player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);
+			}
+		}
+
+		// start loading tracks
+		player.loadNextTrack();
+
+		var inEvents = ['mouseenter', 'focusin'],
+		    outEvents = ['mouseleave', 'focusout'];
+
+		// if only one language then just make the button a toggle
+		if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
+			// click
+			player.captionsButton.addEventListener('click', function () {
+				var trackId = 'none';
+				if (player.selectedTrack === null) {
+					trackId = player.tracks[0].trackId;
+				}
+				player.setTrack(trackId);
+			});
+		} else {
+			var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
+			    captions = player.captionsButton.querySelectorAll('input[type=radio]');
+			// hover or keyboard focus
+			for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
+				player.captionsButton.addEventListener(inEvents[_i3], function () {
+					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
+				});
+			}
+
+			for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {
+				player.captionsButton.addEventListener(outEvents[_i4], function () {
+					(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
+				});
+			}
+
+			// handle clicks to the language radio buttons
+			for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
+				captions[_i5].addEventListener('click', function () {
+					// value is trackId, same as the actual id, and we're using it here
+					// because the "none" checkbox doesn't have a trackId
+					// to use, but we want to know when "none" is clicked
+					player.setTrack(this.value);
+				});
+			}
+
+			for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {
+				labels[_i6].addEventListener('click', function () {
+					var radio = (0, _dom.siblings)(this, function (el) {
+						return el.tagName === 'INPUT';
+					})[0],
+					    event = (0, _general.createEvent)('click', radio);
+					radio.dispatchEvent(event);
+				});
+			}
+
+			//Allow up/down arrow to change the selected radio without changing the volume.
+			player.captionsButton.addEventListener('keydown', function (e) {
+				e.stopPropagation();
+			});
+		}
+
+		for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {
+			player.chaptersButton.addEventListener(inEvents[_i7], function () {
+				if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').childNodes.length) {
+					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
+				}
+			});
+		}
+
+		for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {
+			player.chaptersButton.addEventListener(outEvents[_i8], function () {
+				(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
+			});
+		}
+
+		//Allow up/down arrow to change the selected radio without changing the volume.
+		player.chaptersButton.addEventListener('keydown', function (e) {
+			e.stopPropagation();
+		});
+
+		if (!player.options.alwaysShowControls) {
+			// move with controls
+			player.container.addEventListener('controlsshown', function () {
+				// push captions above controls
+				(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
+			});
+
+			player.container.addEventListener('controlshidden', function () {
+				if (!media.paused) {
+					// move back to normal place
+					(0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
+				}
+			});
+		} else {
+			(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
+		}
+
+		media.addEventListener('timeupdate', function () {
+			player.displayCaptions();
+		});
+
+		if (player.options.slidesSelector !== '') {
+			player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);
+
+			media.addEventListener('timeupdate', function () {
+				player.displaySlides();
+			});
+		}
+	},
+
+
+	/**
+  * Feature destructor.
+  *
+  * Always has to be prefixed with `clean` and the name that was used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  */
+	cleartracks: function cleartracks(player) {
+		if (player) {
+			if (player.captions) {
+				player.captions.remove();
+			}
+			if (player.chapters) {
+				player.chapters.remove();
+			}
+			if (player.captionsText) {
+				player.captionsText.remove();
+			}
+			if (player.captionsButton) {
+				player.captionsButton.remove();
+			}
+			if (player.chaptersButton) {
+				player.chaptersButton.remove();
+			}
+		}
+	},
+	rebuildtracks: function rebuildtracks() {
+		var t = this;
+		t.findTracks();
+		t.buildtracks(t, t.controls, t.layers, t.media);
+	},
+	findTracks: function findTracks() {
+		var t = this,
+		    tracktags = t.node.querySelectorAll('track'),
+		    total = tracktags.length;
+
+		// store for use by plugins
+		t.tracks = [];
+		for (var i = 0; i < total; i++) {
+			var track = tracktags[i],
+			    srclang = track.getAttribute('srclang').toLowerCase() || '',
+			    trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;
+			t.tracks.push({
+				trackId: trackId,
+				srclang: srclang,
+				src: track.getAttribute('src'),
+				kind: track.getAttribute('kind'),
+				label: track.getAttribute('label') || '',
+				entries: [],
+				isLoaded: false
+			});
+		}
+	},
+
+
+	/**
+  *
+  * @param {String} trackId, or "none" to disable captions
+  */
+	setTrack: function setTrack(trackId) {
+
+		var t = this,
+		    radios = t.captionsButton.querySelectorAll('input[type="radio"]'),
+		    captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),
+		    track = t.captionsButton.querySelector('input[value="' + trackId + '"]');
+
+		for (var i = 0, total = radios.length; i < total; i++) {
+			radios[i].checked = false;
+		}
+
+		for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {
+			(0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');
+		}
+
+		track.checked = true;
+		var labels = (0, _dom.siblings)(track, function (el) {
+			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
+		});
+		for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {
+			(0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');
+		}
+
+		if (trackId === 'none') {
+			t.selectedTrack = null;
+			(0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
+		} else {
+			for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {
+				var _track = t.tracks[_i11];
+				if (_track.trackId === trackId) {
+					if (t.selectedTrack === null) {
+						(0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
+					}
+					t.selectedTrack = _track;
+					t.captions.setAttribute('lang', t.selectedTrack.srclang);
+					t.displayCaptions();
+					break;
+				}
+			}
+		}
+
+		var event = (0, _general.createEvent)('captionschange', t.media);
+		event.detail.caption = t.selectedTrack;
+		t.media.dispatchEvent(event);
+	},
+
+
+	/**
+  *
+  */
+	loadNextTrack: function loadNextTrack() {
+		var t = this;
+
+		t.trackToLoad++;
+		if (t.trackToLoad < t.tracks.length) {
+			t.isLoadingTrack = true;
+			t.loadTrack(t.trackToLoad);
+		} else {
+			// add done?
+			t.isLoadingTrack = false;
+			t.checkForTracks();
+		}
+	},
+
+
+	/**
+  *
+  * @param index
+  */
+	loadTrack: function loadTrack(index) {
+		var t = this,
+		    track = t.tracks[index];
+
+		if (track !== undefined && (track.src !== undefined || track.src !== "")) {
+			(0, _dom.ajax)(track.src, 'text', function (d) {
+
+				// parse the loaded file
+				track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
+
+				track.isLoaded = true;
+
+				t.enableTrackButton(track);
+				t.loadNextTrack();
+
+				if (track.kind === 'slides') {
+					t.setupSlides(track);
+				}
+				// Load by default the first track with `chapters` kind
+				else if (track.kind === 'chapters' && !t.hasChapters) {
+						t.drawChapters(track);
+						t.hasChapters = true;
+					}
+			}, function () {
+				t.removeTrackButton(track.trackId);
+				t.loadNextTrack();
+			});
+		}
+	},
+
+
+	/**
+  *
+  * @param {String} track - The language code
+  */
+	enableTrackButton: function enableTrackButton(track) {
+		var t = this,
+		    lang = track.srclang,
+		    target = _document2.default.getElementById('' + track.trackId);
+
+		if (!target) {
+			return;
+		}
+
+		var label = track.label;
+
+		if (label === '') {
+			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
+		}
+		target.disabled = false;
+		var targetSiblings = (0, _dom.siblings)(target, function (el) {
+			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
+		});
+		for (var i = 0, total = targetSiblings.length; i < total; i++) {
+			targetSiblings[i].innerHTML = label;
+		}
+
+		// auto select
+		if (t.options.startLanguage === lang) {
+			target.checked = true;
+			var event = (0, _general.createEvent)('click', target);
+			target.dispatchEvent(event);
+		}
+	},
+
+
+	/**
+  *
+  * @param {String} trackId
+  */
+	removeTrackButton: function removeTrackButton(trackId) {
+
+		var element = _document2.default.getElementById('' + trackId);
+
+		if (element) {
+			var button = element.closest('li');
+			if (button) {
+				button.remove();
+			}
+		}
+	},
+
+
+	/**
+  *
+  * @param {String} trackId
+  * @param {String} lang - The language code
+  * @param {String} label
+  */
+	addTrackButton: function addTrackButton(trackId, lang, label) {
+		var t = this;
+		if (label === '') {
+			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
+		}
+
+		// trackId is used in the value, too, because the "none"
+		// caption option doesn't have a trackId but we need to be able
+		// to set it, too
+		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">' + label + ' (loading)</label>') + '</li>';
+	},
+
+
+	/**
+  *
+  */
+	checkForTracks: function checkForTracks() {
+		var t = this;
+
+		var hasSubtitles = false;
+
+		// check if any subtitles
+		if (t.options.hideCaptionsButtonWhenEmpty) {
+			for (var i = 0, total = t.tracks.length; i < total; i++) {
+				var kind = t.tracks[i].kind;
+				if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {
+					hasSubtitles = true;
+					break;
+				}
+			}
+
+			t.captionsButton.style.display = hasSubtitles ? '' : 'none';
+			t.setControlsSize();
+		}
+	},
+
+
+	/**
+  *
+  */
+	displayCaptions: function displayCaptions() {
+
+		if (this.tracks === undefined) {
+			return;
+		}
+
+		var t = this,
+		    track = t.selectedTrack,
+		    sanitize = function sanitize(html) {
+
+			var div = _document2.default.createElement('div');
+			div.innerHTML = html;
+
+			// Remove all `<script>` tags first
+			var scripts = div.getElementsByTagName('script');
+			var i = scripts.length;
+			while (i--) {
+				scripts[i].remove();
+			}
+
+			// Loop the elements and remove anything that contains value="javascript:" or an `on*` attribute
+			// (`onerror`, `onclick`, etc.)
+			var allElements = div.getElementsByTagName('*');
+			for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
+				var attributesObj = allElements[_i12].attributes,
+				    attributes = Array.prototype.slice.call(attributesObj);
+
+				for (var j = 0, total = attributes.length; j < total; j++) {
+					if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {
+						allElements[_i12].remove();
+					} else if (attributes[j].name === 'style') {
+						allElements[_i12].removeAttribute(attributes[j].name);
+					}
+				}
+			}
+			return div.innerHTML;
+		};
+
+		if (track !== null && track.isLoaded) {
+			var i = t.searchTrackPosition(track.entries, t.media.currentTime);
+			if (i > -1) {
+				// Set the line before the timecode as a class so the cue can be targeted if needed
+				t.captionsText.innerHTML = sanitize(track.entries[i].text);
+				t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
+				t.captions.style.display = '';
+				t.captions.style.height = '0px';
+				return; // exit out if one is visible;
+			}
+
+			t.captions.style.display = 'none';
+		} else {
+			t.captions.style.display = 'none';
+		}
+	},
+
+
+	/**
+  *
+  * @param {HTMLElement} track
+  */
+	setupSlides: function setupSlides(track) {
+		var t = this;
+
+		t.slides = track;
+		t.slides.entries.imgs = [t.slides.entries.length];
+		t.showSlide(0);
+	},
+
+
+	/**
+  *
+  * @param {Number} index
+  */
+	showSlide: function showSlide(index) {
+		var _this = this;
+
+		var t = this;
+
+		if (t.tracks === undefined || t.slidesContainer === undefined) {
+			return;
+		}
+
+		var url = t.slides.entries[index].text;
+
+		var img = t.slides.entries[index].imgs;
+
+		if (img === undefined || img.fadeIn === undefined) {
+			(function () {
+
+				var image = _document2.default.createElement('img');
+				image.src = url;
+				image.addEventListener('load', function () {
+					var self = _this,
+					    visible = (0, _dom.siblings)(self, function (el) {
+						return visible(el);
+					});
+					self.style.display = 'none';
+					t.slidesContainer.innerHTML += self.innerHTML;
+					(0, _dom.fadeIn)(t.slidesContainer.querySelector(image));
+					for (var i = 0, total = visible.length; i < total; i++) {
+						(0, _dom.fadeOut)(visible[i], 400);
+					}
+				});
+				t.slides.entries[index].imgs = img = image;
+			})();
+		} else if (!(0, _dom.visible)(img)) {
+			(function () {
+				var visible = (0, _dom.siblings)(self, function (el) {
+					return visible(el);
+				});
+				(0, _dom.fadeIn)(t.slidesContainer.querySelector(img));
+				for (var i = 0, total = visible.length; i < total; i++) {
+					(0, _dom.fadeOut)(visible[i]);
+				}
+			})();
+		}
+	},
+
+
+	/**
+  *
+  */
+	displaySlides: function displaySlides() {
+		var t = this;
+
+		if (this.slides === undefined) {
+			return;
+		}
+
+		var slides = t.slides,
+		    i = t.searchTrackPosition(slides.entries, t.media.currentTime);
+
+		if (i > -1) {
+			t.showSlide(i);
+			return; // exit out if one is visible;
+		}
+	},
+
+
+	/**
+  *
+  * @param {Object} chapters
+  */
+	drawChapters: function drawChapters(chapters) {
+		var t = this,
+		    total = chapters.entries.length;
+
+		if (!total) {
+			return;
+		}
+
+		t.chaptersButton.querySelector('ul').innerHTML = '';
+
+		for (var i = 0; i < total; i++) {
+			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" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label">' + chapters.entries[i].text + '</label>') + '</li>';
+		}
+
+		var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
+		    labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');
+
+		for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {
+			radios[_i13].disabled = false;
+			radios[_i13].checked = false;
+			radios[_i13].addEventListener('click', function () {
+				var self = this,
+				    listItems = t.chaptersButton.querySelectorAll('li'),
+				    label = (0, _dom.siblings)(self, function (el) {
+					return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');
+				})[0];
+
+				self.checked = true;
+				self.parentNode.setAttribute('aria-checked', true);
+				(0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');
+				(0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');
+
+				for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {
+					listItems[_i14].setAttribute('aria-checked', false);
+				}
+
+				t.media.setCurrentTime(parseFloat(self.value));
+				if (t.media.paused) {
+					t.media.play();
+				}
+			});
+		}
+
+		for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {
+			labels[_i15].addEventListener('click', function () {
+				var radio = (0, _dom.siblings)(this, function (el) {
+					return el.tagName === 'INPUT';
+				})[0],
+				    event = (0, _general.createEvent)('click', radio);
+				radio.dispatchEvent(event);
+			});
+		}
+	},
+
+	/**
+  * Perform binary search to look for proper track index
+  *
+  * @param {Object[]} tracks
+  * @param {Number} currentTime
+  * @return {Number}
+  */
+	searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
+		var lo = 0,
+		    hi = tracks.length - 1,
+		    mid = void 0,
+		    start = void 0,
+		    stop = void 0;
+
+		while (lo <= hi) {
+			mid = lo + hi >> 1;
+			start = tracks[mid].start;
+			stop = tracks[mid].stop;
+
+			if (currentTime >= start && currentTime < stop) {
+				return mid;
+			} else if (start < currentTime) {
+				lo = mid + 1;
+			} else if (start > currentTime) {
+				hi = mid - 1;
+			}
+		}
+
+		return -1;
+	}
+});
+
+/**
+ * Map all possible languages with their respective code
+ *
+ * @constructor
+ */
+_mejs2.default.language = {
+	codes: {
+		af: 'mejs.afrikaans',
+		sq: 'mejs.albanian',
+		ar: 'mejs.arabic',
+		be: 'mejs.belarusian',
+		bg: 'mejs.bulgarian',
+		ca: 'mejs.catalan',
+		zh: 'mejs.chinese',
+		'zh-cn': 'mejs.chinese-simplified',
+		'zh-tw': 'mejs.chines-traditional',
+		hr: 'mejs.croatian',
+		cs: 'mejs.czech',
+		da: 'mejs.danish',
+		nl: 'mejs.dutch',
+		en: 'mejs.english',
+		et: 'mejs.estonian',
+		fl: 'mejs.filipino',
+		fi: 'mejs.finnish',
+		fr: 'mejs.french',
+		gl: 'mejs.galician',
+		de: 'mejs.german',
+		el: 'mejs.greek',
+		ht: 'mejs.haitian-creole',
+		iw: 'mejs.hebrew',
+		hi: 'mejs.hindi',
+		hu: 'mejs.hungarian',
+		is: 'mejs.icelandic',
+		id: 'mejs.indonesian',
+		ga: 'mejs.irish',
+		it: 'mejs.italian',
+		ja: 'mejs.japanese',
+		ko: 'mejs.korean',
+		lv: 'mejs.latvian',
+		lt: 'mejs.lithuanian',
+		mk: 'mejs.macedonian',
+		ms: 'mejs.malay',
+		mt: 'mejs.maltese',
+		no: 'mejs.norwegian',
+		fa: 'mejs.persian',
+		pl: 'mejs.polish',
+		pt: 'mejs.portuguese',
+		ro: 'mejs.romanian',
+		ru: 'mejs.russian',
+		sr: 'mejs.serbian',
+		sk: 'mejs.slovak',
+		sl: 'mejs.slovenian',
+		es: 'mejs.spanish',
+		sw: 'mejs.swahili',
+		sv: 'mejs.swedish',
+		tl: 'mejs.tagalog',
+		th: 'mejs.thai',
+		tr: 'mejs.turkish',
+		uk: 'mejs.ukrainian',
+		vi: 'mejs.vietnamese',
+		cy: 'mejs.welsh',
+		yi: 'mejs.yiddish'
+	}
+};
+
+/*
+ Parses WebVTT format which should be formatted as
+ ================================
+ WEBVTT
+
+ 1
+ 00:00:01,1 --> 00:00:05,000
+ A line of text
+
+ 2
+ 00:01:15,1 --> 00:02:05,000
+ A second line of text
+
+ ===============================
+
+ Adapted from: http://www.delphiki.com/html5/playr
+ */
+_mejs2.default.TrackFormatParser = {
+	webvtt: {
+		/**
+   * @type {String}
+   */
+		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})?)(.*)$/,
+
+		/**
+   *
+   * @param {String} trackText
+   * @returns {{text: Array, times: Array}}
+   */
+		parse: function parse(trackText) {
+			var lines = trackText.split(/\r?\n/),
+			    entries = [];
+
+			var timecode = void 0,
+			    text = void 0,
+			    identifier = void 0;
+
+			for (var i = 0, total = lines.length; i < total; i++) {
+				timecode = this.pattern.exec(lines[i]);
+
+				if (timecode && i < lines.length) {
+					if (i - 1 >= 0 && lines[i - 1] !== '') {
+						identifier = lines[i - 1];
+					}
+					i++;
+					// grab all the (possibly multi-line) text that follows
+					text = lines[i];
+					i++;
+					while (lines[i] !== '' && i < lines.length) {
+						text = text + '\n' + lines[i];
+						i++;
+					}
+					text = text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
+					entries.push({
+						identifier: identifier,
+						start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),
+						stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),
+						text: text,
+						settings: timecode[5]
+					});
+				}
+				identifier = '';
+			}
+			return entries;
+		}
+	},
+	// Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420
+	dfxp: {
+		/**
+   *
+   * @param {String} trackText
+   * @returns {{text: Array, times: Array}}
+   */
+		parse: function parse(trackText) {
+			trackText = $(trackText).filter('tt');
+			var container = trackText.firstChild,
+			    lines = container.querySelectorAll('p'),
+			    styleNode = trackText.getElementById('' + container.attr('style')),
+			    entries = [];
+
+			var styles = void 0;
+
+			if (styleNode.length) {
+				styleNode.removeAttribute('id');
+				var attributes = styleNode.attributes;
+				if (attributes.length) {
+					styles = {};
+					for (var i = 0, total = attributes.length; i < total; i++) {
+						styles[attributes[i].name.split(":")[1]] = attributes[i].value;
+					}
+				}
+			}
+
+			for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {
+				var style = void 0,
+				    _temp = {
+					start: null,
+					stop: null,
+					style: null,
+					text: null
+				};
+
+				if (lines.eq(_i16).attr('begin')) {
+					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('begin'));
+				}
+				if (!_temp.start && lines.eq(_i16 - 1).attr('end')) {
+					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 - 1).attr('end'));
+				}
+				if (lines.eq(_i16).attr('end')) {
+					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('end'));
+				}
+				if (!_temp.stop && lines.eq(_i16 + 1).attr('begin')) {
+					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 + 1).attr('begin'));
+				}
+
+				if (styles) {
+					style = '';
+					for (var _style in styles) {
+						style += _style + ':' + styles[_style] + ';';
+					}
+				}
+				if (style) {
+					_temp.style = style;
+				}
+				if (_temp.start === 0) {
+					_temp.start = 0.200;
+				}
+				_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>");
+				entries.push(_temp);
+			}
+			return entries;
+		}
+	}
+};
+
+},{"16":16,"2":2,"24":24,"25":25,"28":28,"4":4,"6":6}],13:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _constants = _dereq_(23);
+
+var _general = _dereq_(25);
+
+var _dom = _dereq_(24);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Volume button
+ *
+ * This feature enables the displaying of a Volume button in the control bar, and also contains logic to manipulate its
+ * events, such as sliding up/down (or left/right, if vertical), muting/unmuting media, etc.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * @type {?String}
+  */
+	muteText: null,
+	/**
+  * @type {?String}
+  */
+	unmuteText: null,
+	/**
+  * @type {?String}
+  */
+	allyVolumeControlText: null,
+	/**
+  * @type {Boolean}
+  */
+	hideVolumeOnTouchDevices: true,
+	/**
+  * @type {String}
+  */
+	audioVolume: 'horizontal',
+	/**
+  * @type {String}
+  */
+	videoVolume: 'vertical'
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  * @public
+  */
+	buildvolume: function buildvolume(player, controls, layers, media) {
+
+		// Android and iOS don't support volume controls
+		if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
+			return;
+		}
+
+		var t = this,
+		    mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,
+		    muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),
+		    unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),
+		    volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),
+		    mute = _document2.default.createElement('div');
+
+		mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
+		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">') + ('<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>';
+
+		t.addControlElement(mute, 'volume');
+
+		// horizontal version
+		if (mode === 'horizontal') {
+			var anchor = _document2.default.createElement('a');
+			anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
+			anchor.href = 'javascript:void(0);';
+			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>';
+			mute.parentNode.insertBefore(anchor, mute.nextSibling);
+		}
+
+		var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
+		    volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
+		    volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
+		    volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
+		    button = mute.firstElementChild,
+
+
+		/**
+   * @private
+   * @param {Number} volume
+   */
+		positionVolumeHandle = function positionVolumeHandle(volume) {
+
+			// correct to 0-1
+			volume = Math.max(0, volume);
+			volume = Math.min(volume, 1);
+
+			// adjust mute button style
+			if (volume === 0) {
+				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
+				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
+				var _button = mute.firstElementChild;
+				_button.setAttribute('title', unmuteText);
+				_button.setAttribute('aria-label', unmuteText);
+			} else {
+				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
+				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
+				var _button2 = mute.firstElementChild;
+				_button2.setAttribute('title', muteText);
+				_button2.setAttribute('aria-label', muteText);
+			}
+
+			var volumePercentage = volume * 100 + '%',
+			    volumeStyles = getComputedStyle(volumeHandle);
+
+			// position slider
+			if (mode === 'vertical') {
+				volumeCurrent.style.bottom = 0;
+				volumeCurrent.style.height = volumePercentage;
+				volumeHandle.style.bottom = volumePercentage;
+				volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';
+			} else {
+				volumeCurrent.style.left = 0;
+				volumeCurrent.style.width = volumePercentage;
+				volumeHandle.style.left = volumePercentage;
+				volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
+			}
+		},
+
+		/**
+   * @private
+   */
+		handleVolumeMove = function handleVolumeMove(e) {
+
+			var totalOffset = (0, _dom.offset)(volumeTotal),
+			    volumeStyles = getComputedStyle(volumeTotal);
+
+			var volume = null;
+
+			// calculate the new volume based on the most recent position
+			if (mode === 'vertical') {
+
+				var railHeight = parseFloat(volumeStyles.height),
+				    newY = e.pageY - totalOffset.top;
+
+				volume = (railHeight - newY) / railHeight;
+
+				// the controls just hide themselves (usually when mouse moves too far up)
+				if (totalOffset.top === 0 || totalOffset.left === 0) {
+					return;
+				}
+			} else {
+				var railWidth = parseFloat(volumeStyles.width),
+				    newX = e.pageX - totalOffset.left;
+
+				volume = newX / railWidth;
+			}
+
+			// ensure the volume isn't outside 0-1
+			volume = Math.max(0, volume);
+			volume = Math.min(volume, 1);
+
+			// position the slider and handle
+			positionVolumeHandle(volume);
+
+			// set the media object (this will trigger the `volumechanged` event)
+			if (volume === 0) {
+				media.setMuted(true);
+			} else {
+				media.setMuted(false);
+			}
+			media.setVolume(volume);
+
+			e.preventDefault();
+			e.stopPropagation();
+		};
+
+		mute.addEventListener('mouseenter', function (e) {
+			if (e.target === mute) {
+				volumeSlider.style.display = 'block';
+				mouseIsOver = true;
+				e.preventDefault();
+				e.stopPropagation();
+			}
+		});
+		mute.addEventListener('focusin', function () {
+			volumeSlider.style.display = 'block';
+			mouseIsOver = true;
+		});
+		mute.addEventListener('mouseleave', function () {
+			mouseIsOver = false;
+			if (!mouseIsDown && mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
+		mute.addEventListener('focusout', function () {
+			mouseIsOver = false;
+			if (!mouseIsDown && mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
+		mute.addEventListener('keydown', function (e) {
+
+			if (t.options.keyActions.length) {
+				var keyCode = e.which || e.keyCode || 0,
+				    volume = media.volume;
+				switch (keyCode) {
+					case 38:
+						// Up
+						volume = Math.min(volume + 0.1, 1);
+						break;
+					case 40:
+						// Down
+						volume = Math.max(0, volume - 0.1);
+						break;
+					default:
+						return true;
+				}
+
+				mouseIsDown = false;
+				positionVolumeHandle(volume);
+				media.setVolume(volume);
+
+				e.preventDefault();
+				e.stopPropagation();
+			}
+		});
+
+		var mouseIsDown = false,
+		    mouseIsOver = false,
+
+
+		/**
+   * @private
+   */
+		updateVolumeSlider = function updateVolumeSlider() {
+			var volume = Math.floor(media.volume * 100);
+			volumeSlider.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
+			volumeSlider.setAttribute('aria-valuemin', 0);
+			volumeSlider.setAttribute('aria-valuemax', 100);
+			volumeSlider.setAttribute('aria-valuenow', volume);
+			volumeSlider.setAttribute('aria-valuetext', volume + '%');
+			volumeSlider.setAttribute('role', 'slider');
+			volumeSlider.tabIndex = -1;
+		};
+
+		// Events
+		volumeSlider.addEventListener('dragstart', function () {
+			return false;
+		});
+
+		volumeSlider.addEventListener('mouseover', function () {
+			mouseIsOver = true;
+		});
+		volumeSlider.addEventListener('mousedown', function (e) {
+			handleVolumeMove(e);
+			t.globalBind('mousemove.vol', function (event) {
+				var target = event.target;
+				if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {
+					handleVolumeMove(event);
+				}
+			});
+			t.globalBind('mouseup.vol', function () {
+				mouseIsDown = false;
+				t.globalUnbind('mousemove.vol mouseup.vol');
+
+				if (!mouseIsOver && mode === 'vertical') {
+					volumeSlider.style.display = 'none';
+				}
+			});
+			mouseIsDown = true;
+
+			e.preventDefault();
+			e.stopPropagation();
+		});
+
+		// MUTE button
+		button.addEventListener('click', function () {
+			media.setMuted(!media.muted);
+			var event = (0, _general.createEvent)('volumechange', media);
+			media.dispatchEvent(event);
+		});
+		button.addEventListener('focus', function () {
+			if (mode === 'vertical') {
+				volumeSlider.style.display = 'block';
+			}
+		});
+		button.addEventListener('blur', function () {
+			if (mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
+
+		// listen for volume change events from other sources
+		media.addEventListener('volumechange', function (e) {
+			if (!mouseIsDown) {
+				if (media.muted) {
+					positionVolumeHandle(0);
+					(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
+					(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
+				} else {
+					positionVolumeHandle(media.volume);
+					(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
+					(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
+				}
+			}
+			updateVolumeSlider(e);
+		});
+
+		// mutes the media and sets the volume icon muted if the initial volume is set to 0
+		if (player.options.startVolume === 0) {
+			media.setMuted(true);
+		}
+
+		// shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements
+		var isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+
+		if (isNative) {
+			media.setVolume(player.options.startVolume);
+		}
+
+		t.container.addEventListener('controlsresize', function () {
+			if (media.muted) {
+				positionVolumeHandle(0);
+				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
+				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
+			} else {
+				positionVolumeHandle(media.volume);
+				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
+				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
+			}
+		});
+	}
+});
+
+},{"16":16,"2":2,"23":23,"24":24,"25":25,"4":4}],14:[function(_dereq_,module,exports){
+'use strict';
+
+/*!
+ * This is a `i18n` language object.
+ *
+ * English; This can serve as a template for other languages to translate
+ *
+ * @author
+ *   TBD
+ *   Sascha Greuel (Twitter: @SoftCreatR)
+ *
+ * @see core/i18n.js
+ */
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+var EN = exports.EN = {
+	"mejs.plural-form": 1,
+
+	// core/mediaelement.js
+	"mejs.download-file": "Download File",
+
+	// renderers/flash.js
+	"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/",
+
+	// features/fullscreen.js
+	"mejs.fullscreen": "Fullscreen",
+
+	// features/playpause.js
+	"mejs.play": "Play",
+	"mejs.pause": "Pause",
+
+	// features/progress.js
+	"mejs.time-slider": "Time Slider",
+	"mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.",
+	"mejs.live-broadcast": "Live Broadcast",
+
+	// features/volume.js
+	"mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.",
+	"mejs.unmute": "Unmute",
+	"mejs.mute": "Mute",
+	"mejs.volume-slider": "Volume Slider",
+
+	// core/player.js
+	"mejs.video-player": "Video Player",
+	"mejs.audio-player": "Audio Player",
+
+	// features/tracks.js
+	"mejs.captions-subtitles": "Captions/Subtitles",
+	"mejs.captions-chapters": "Chapters",
+	"mejs.none": "None",
+	"mejs.afrikaans": "Afrikaans",
+	"mejs.albanian": "Albanian",
+	"mejs.arabic": "Arabic",
+	"mejs.belarusian": "Belarusian",
+	"mejs.bulgarian": "Bulgarian",
+	"mejs.catalan": "Catalan",
+	"mejs.chinese": "Chinese",
+	"mejs.chinese-simplified": "Chinese (Simplified)",
+	"mejs.chinese-traditional": "Chinese (Traditional)",
+	"mejs.croatian": "Croatian",
+	"mejs.czech": "Czech",
+	"mejs.danish": "Danish",
+	"mejs.dutch": "Dutch",
+	"mejs.english": "English",
+	"mejs.estonian": "Estonian",
+	"mejs.filipino": "Filipino",
+	"mejs.finnish": "Finnish",
+	"mejs.french": "French",
+	"mejs.galician": "Galician",
+	"mejs.german": "German",
+	"mejs.greek": "Greek",
+	"mejs.haitian-creole": "Haitian Creole",
+	"mejs.hebrew": "Hebrew",
+	"mejs.hindi": "Hindi",
+	"mejs.hungarian": "Hungarian",
+	"mejs.icelandic": "Icelandic",
+	"mejs.indonesian": "Indonesian",
+	"mejs.irish": "Irish",
+	"mejs.italian": "Italian",
+	"mejs.japanese": "Japanese",
+	"mejs.korean": "Korean",
+	"mejs.latvian": "Latvian",
+	"mejs.lithuanian": "Lithuanian",
+	"mejs.macedonian": "Macedonian",
+	"mejs.malay": "Malay",
+	"mejs.maltese": "Maltese",
+	"mejs.norwegian": "Norwegian",
+	"mejs.persian": "Persian",
+	"mejs.polish": "Polish",
+	"mejs.portuguese": "Portuguese",
+	"mejs.romanian": "Romanian",
+	"mejs.russian": "Russian",
+	"mejs.serbian": "Serbian",
+	"mejs.slovak": "Slovak",
+	"mejs.slovenian": "Slovenian",
+	"mejs.spanish": "Spanish",
+	"mejs.swahili": "Swahili",
+	"mejs.swedish": "Swedish",
+	"mejs.tagalog": "Tagalog",
+	"mejs.thai": "Thai",
+	"mejs.turkish": "Turkish",
+	"mejs.ukrainian": "Ukrainian",
+	"mejs.vietnamese": "Vietnamese",
+	"mejs.welsh": "Welsh",
+	"mejs.yiddish": "Yiddish"
+};
+
+},{}],15:[function(_dereq_,module,exports){
+'use strict';
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+if (typeof jQuery !== 'undefined') {
+	_mejs2.default.$ = _window2.default.jQuery = _window2.default.$ = jQuery;
+} else if (typeof Zepto !== 'undefined') {
+	_mejs2.default.$ = _window2.default.Zepto = _window2.default.$ = Zepto;
+} else if (typeof ender !== 'undefined') {
+	_mejs2.default.$ = _window2.default.ender = _window2.default.$ = ender;
+}
+
+},{"3":3,"6":6}],16:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.config = undefined;
+
+var _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; };
+
+var _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; }; }();
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _mediaelement = _dereq_(5);
+
+var _mediaelement2 = _interopRequireDefault(_mediaelement);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _constants = _dereq_(23);
+
+var _general = _dereq_(25);
+
+var _time = _dereq_(28);
+
+var _media = _dereq_(26);
+
+var _dom = _dereq_(24);
+
+var dom = _interopRequireWildcard(_dom);
+
+function _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; } }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+_mejs2.default.mepIndex = 0;
+
+_mejs2.default.players = {};
+
+// default player values
+var config = exports.config = {
+	// url to poster (to fix iOS 3.x)
+	poster: '',
+	// When the video is ended, show the poster.
+	showPosterWhenEnded: false,
+	// When the video is paused, show the poster.
+	showPosterWhenPaused: false,
+	// Default if the <video width> is not specified
+	defaultVideoWidth: 480,
+	// Default if the <video height> is not specified
+	defaultVideoHeight: 270,
+	// If set, overrides <video width>
+	videoWidth: -1,
+	// If set, overrides <video height>
+	videoHeight: -1,
+	// Default if the user doesn't specify
+	defaultAudioWidth: 400,
+	// Default if the user doesn't specify
+	defaultAudioHeight: 40,
+	// Default amount to move back when back key is pressed
+	defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
+		return media.duration * 0.05;
+	},
+	// Default amount to move forward when forward key is pressed
+	defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
+		return media.duration * 0.05;
+	},
+	// Set dimensions via JS instead of CSS
+	setDimensions: true,
+	// Width of audio player
+	audioWidth: -1,
+	// Height of audio player
+	audioHeight: -1,
+	// Initial volume when the player starts (overridden by user cookie)
+	startVolume: 0.8,
+	// Useful for <audio> player loops
+	loop: false,
+	// Rewind to beginning when media ends
+	autoRewind: true,
+	// Resize to media dimensions
+	enableAutosize: true,
+	/*
+  * Time format to use. Default: 'mm:ss'
+  * Supported units:
+  *   h: hour
+  *   m: minute
+  *   s: second
+  *   f: frame count
+  * When using 'hh', 'mm', 'ss' or 'ff' we always display 2 digits.
+  * If you use 'h', 'm', 's' or 'f' we display 1 digit if possible.
+  *
+  * Example to display 75 seconds:
+  * Format 'mm:ss': 01:15
+  * Format 'm:ss': 1:15
+  * Format 'm:s': 1:15
+  */
+	timeFormat: '',
+	// Force the hour marker (##:00:00)
+	alwaysShowHours: false,
+	// Show framecount in timecode (##:00:00:00)
+	showTimecodeFrameCount: false,
+	// Used when showTimecodeFrameCount is set to true
+	framesPerSecond: 25,
+	// Hide controls when playing and mouse is not over the video
+	alwaysShowControls: false,
+	// Display the video control when media is loading
+	hideVideoControlsOnLoad: false,
+	// Display the video controls when media is paused
+	hideVideoControlsOnPause: false,
+	// Enable click video element to toggle play/pause
+	clickToPlayPause: true,
+	// Time in ms to hide controls
+	controlsTimeoutDefault: 1500,
+	// Time in ms to trigger the timer when mouse moves
+	controlsTimeoutMouseEnter: 2500,
+	// Time in ms to trigger the timer when mouse leaves
+	controlsTimeoutMouseLeave: 1000,
+	// Force iPad's native controls
+	iPadUseNativeControls: false,
+	// Force iPhone's native controls
+	iPhoneUseNativeControls: false,
+	// Force Android's native controls
+	AndroidUseNativeControls: false,
+	// Features to show
+	features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
+	// Only for dynamic
+	isVideo: true,
+	// Stretching modes (auto, fill, responsive, none)
+	stretching: 'auto',
+	// Prefix class names on elements
+	classPrefix: 'mejs__',
+	// Turn keyboard support on and off for this instance
+	enableKeyboard: true,
+	// When this player starts, it will pause other players
+	pauseOtherPlayers: true,
+	// Number of decimal places to show if frames are shown
+	secondsDecimalLength: 0,
+	// Array of keyboard actions such as play/pause
+	keyActions: [{
+		keys: [32, // SPACE
+		179 // GOOGLE play/pause button
+		],
+		action: function action(player, media) {
+
+			if (!_constants.IS_FIREFOX) {
+				if (media.paused || media.ended) {
+					media.play();
+				} else {
+					media.pause();
+				}
+			}
+		}
+	}, {
+		keys: [38], // UP
+		action: function action(player, media) {
+
+			if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) {
+				player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = '';
+			}
+			if (player.isVideo) {
+				player.showControls();
+				player.startControlsTimer();
+			}
+
+			var newVolume = Math.min(media.volume + 0.1, 1);
+			media.setVolume(newVolume);
+			if (newVolume > 0) {
+				media.setMuted(false);
+			}
+		}
+	}, {
+		keys: [40], // DOWN
+		action: function action(player, media) {
+
+			if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) {
+				player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = '';
+			}
+
+			if (player.isVideo) {
+				player.showControls();
+				player.startControlsTimer();
+			}
+
+			var newVolume = Math.max(media.volume - 0.1, 0);
+			media.setVolume(newVolume);
+
+			if (newVolume <= 0.1) {
+				media.setMuted(true);
+			}
+		}
+	}, {
+		keys: [37, // LEFT
+		227 // Google TV rewind
+		],
+		action: function action(player, media) {
+			if (!isNaN(media.duration) && media.duration > 0) {
+				if (player.isVideo) {
+					player.showControls();
+					player.startControlsTimer();
+				}
+
+				// 5%
+				var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);
+				media.setCurrentTime(newTime);
+			}
+		}
+	}, {
+		keys: [39, // RIGHT
+		228 // Google TV forward
+		],
+		action: function action(player, media) {
+
+			if (!isNaN(media.duration) && media.duration > 0) {
+				if (player.isVideo) {
+					player.showControls();
+					player.startControlsTimer();
+				}
+
+				// 5%
+				var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);
+				media.setCurrentTime(newTime);
+			}
+		}
+	}, {
+		keys: [70], // F
+		action: function action(player, media, key, event) {
+			if (!event.ctrlKey) {
+				if (typeof player.enterFullScreen !== 'undefined') {
+					if (player.isFullScreen) {
+						player.exitFullScreen();
+					} else {
+						player.enterFullScreen();
+					}
+				}
+			}
+		}
+	}, {
+		keys: [77], // M
+		action: function action(player) {
+
+			player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = '';
+			if (player.isVideo) {
+				player.showControls();
+				player.startControlsTimer();
+			}
+			if (player.media.muted) {
+				player.setMuted(false);
+			} else {
+				player.setMuted(true);
+			}
+		}
+	}]
+};
+
+_mejs2.default.MepDefaults = config;
+
+/**
+ * Wrap a MediaElement object in player controls
+ *
+ * @constructor
+ * @param {HTMLElement|String} node
+ * @param {Object} o
+ * @return {?MediaElementPlayer}
+ */
+
+var MediaElementPlayer = function () {
+	function MediaElementPlayer(node, o) {
+		_classCallCheck(this, MediaElementPlayer);
+
+		var t = this,
+		    element = typeof node === 'string' ? _document2.default.getElementById(node) : node;
+
+		t.hasFocus = false;
+
+		t.controlsAreVisible = true;
+
+		t.controlsEnabled = true;
+
+		t.controlsTimer = null;
+
+		// enforce object, even without "new" (via John Resig)
+		if (!(t instanceof MediaElementPlayer)) {
+			return new MediaElementPlayer(element, o);
+		}
+
+		// these will be reset after the MediaElement.success fires
+		// t.media will be the fake node to emulate all HTML5 events, methods, etc
+		// t.node will be the node to be restored
+		t.node = t.media = element;
+
+		if (!t.node) {
+			return;
+		}
+
+		// check for existing player
+		if (t.media.player !== undefined) {
+			return t.media.player;
+		}
+
+		// try to get options from data-mejsoptions
+		if (o === undefined) {
+			o = t.node.getAttribute('data-mejsoptions');
+		}
+
+		// extend default options
+		t.options = Object.assign({}, config, o);
+
+		if (!t.options.timeFormat) {
+			// Generate the time format according to options
+			t.options.timeFormat = 'mm:ss';
+			if (t.options.alwaysShowHours) {
+				t.options.timeFormat = 'hh:mm:ss';
+			}
+			if (t.options.showTimecodeFrameCount) {
+				t.options.timeFormat += ':ff';
+			}
+		}
+
+		(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
+
+		// unique ID
+		t.id = 'mep_' + _mejs2.default.mepIndex++;
+
+		// add to player array (for focus events)
+		_mejs2.default.players[t.id] = t;
+
+		// start up
+		var meOptions = Object.assign({}, t.options, {
+			success: function success(media, domNode) {
+				t._meReady(media, domNode);
+			},
+			error: function error(e) {
+				t._handleError(e);
+			}
+		}),
+		    tagName = t.node.tagName.toLowerCase();
+
+		// get video from src or href?
+		t.isDynamic = tagName !== 'audio' && tagName !== 'video';
+		t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
+
+		// use native controls in iPad, iPhone, and Android
+		if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
+
+			// add controls and stop
+			t.node.setAttribute('controls', true);
+
+			// override Apple's autoplay override for iPads
+			if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
+				t.play();
+			}
+		} else if ((t.isVideo || !t.isVideo && t.options.features.length) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
+
+			// DESKTOP: use MediaElementPlayer controls
+
+			// remove native controls
+			t.node.removeAttribute('controls');
+			var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
+			// insert description for screen readers
+			var offscreen = _document2.default.createElement('span');
+			offscreen.className = t.options.classPrefix + 'offscreen';
+			offscreen.innerText = videoPlayerTitle;
+			t.media.parentNode.insertBefore(offscreen, t.media);
+
+			// build container
+			t.container = _document2.default.createElement('div');
+			t.container.id = t.id;
+			t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
+			t.container.tabIndex = 0;
+			t.container.setAttribute('role', 'application');
+			t.container.setAttribute('aria-label', videoPlayerTitle);
+			t.container.innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'clear"></div>') + '</div>';
+			t.container.addEventListener('focus', function (e) {
+				if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
+					t.showControls(true);
+					// In versions older than IE11, the focus causes the playbar to be displayed
+					// if user clicks on the Play/Pause button in the control bar once it attempts
+					// to hide it
+					if (!_constants.HAS_MS_NATIVE_FULLSCREEN) {
+						// If e.relatedTarget appears before container, send focus to play button,
+						// else send focus to last control button.
+						var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
+						    button = t.container.querySelector(btnSelector);
+
+						button.focus();
+					}
+				}
+			});
+			t.node.parentNode.insertBefore(t.container, t.node);
+
+			// When no elements in controls, hide bar completely
+			if (!t.options.features.length) {
+				t.container.style.background = 'transparent';
+				t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
+			}
+
+			if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) {
+				// outer container
+				t.outerContainer = t.media.parentNode;
+
+				var wrapper = _document2.default.createElement('div');
+				wrapper.className = t.options.classPrefix + 'fill-container';
+				t.container.parentNode.insertBefore(wrapper, t.container);
+				wrapper.appendChild(t.container);
+			}
+
+			// add classes for user and content
+			if (_constants.IS_ANDROID) {
+				dom.addClass(t.container, t.options.classPrefix + 'android');
+			}
+			if (_constants.IS_IOS) {
+				dom.addClass(t.container, t.options.classPrefix + 'ios');
+			}
+			if (_constants.IS_IPAD) {
+				dom.addClass(t.container, t.options.classPrefix + 'ipad');
+			}
+			if (_constants.IS_IPHONE) {
+				dom.addClass(t.container, t.options.classPrefix + 'iphone');
+			}
+			dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
+
+			// move the <video/video> tag into the right spot
+			t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
+
+			// needs to be assigned here, after iOS remap
+			t.media.player = t;
+
+			// find parts
+			t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls');
+			t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers');
+
+			// determine the size
+
+			/* size priority:
+    (1) videoWidth (forced),
+    (2) style="width;height;"
+    (3) width attribute,
+    (4) defaultVideoWidth (for unspecified cases)
+    */
+
+			var tagType = t.isVideo ? 'video' : 'audio',
+			    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
+
+			if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
+				t.width = t.options[tagType + 'Width'];
+			} else if (t.node.style.width !== '' && t.node.style.width !== null) {
+				t.width = t.node.style.width;
+			} else if (t.node.getAttribute('width')) {
+				t.width = t.node.getAttribute('width');
+			} else {
+				t.width = t.options['default' + capsTagName + 'Width'];
+			}
+
+			if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
+				t.height = t.options[tagType + 'Height'];
+			} else if (t.node.style.height !== '' && t.node.style.height !== null) {
+				t.height = t.node.style.height;
+			} else if (t.node.getAttribute('height')) {
+				t.height = t.node.getAttribute('height');
+			} else {
+				t.height = t.options['default' + capsTagName + 'Height'];
+			}
+
+			t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
+
+			// set the size, while we wait for the plugins to load below
+			t.setPlayerSize(t.width, t.height);
+
+			// create MediaElementShim
+			meOptions.pluginWidth = t.width;
+			meOptions.pluginHeight = t.height;
+		}
+		// Hide media completely for audio that doesn't have any features
+		else if (!t.isVideo && !t.options.features.length) {
+				t.node.style.display = 'none';
+			}
+
+		// create MediaElement shim
+		new _mediaelement2.default(t.media, meOptions);
+
+		if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
+			// controls are shown when loaded
+			var event = (0, _general.createEvent)('controlsshown', t.container);
+			t.container.dispatchEvent(event);
+		}
+
+		return t;
+	}
+
+	_createClass(MediaElementPlayer, [{
+		key: 'showControls',
+		value: function showControls(doAnimation) {
+			var t = this;
+
+			doAnimation = doAnimation === undefined || doAnimation;
+
+			if (t.controlsAreVisible) {
+				return;
+			}
+
+			if (doAnimation) {
+				(function () {
+					dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
+					dom.fadeIn(t.controls, 200, function () {
+						var event = (0, _general.createEvent)('controlsshown', t.container);
+						t.container.dispatchEvent(event);
+					});
+
+					// any additional controls people might add and want to hide
+					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
+
+					var _loop = function _loop(i, total) {
+						dom.fadeIn(controls[i], 200, function () {
+							dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
+						});
+					};
+
+					for (var i = 0, total = controls.length; i < total; i++) {
+						_loop(i, total);
+					}
+				})();
+			} else {
+				dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
+				t.controls.style.display = '';
+
+				// any additional controls people might add and want to hide
+				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
+				for (var i = 0, total = controls.length; i < total; i++) {
+					dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
+					controls[i].style.display = '';
+				}
+
+				var event = (0, _general.createEvent)('controlsshown', t.container);
+				t.container.dispatchEvent(event);
+			}
+
+			t.controlsAreVisible = true;
+			t.setControlsSize();
+		}
+	}, {
+		key: 'hideControls',
+		value: function hideControls(doAnimation, forceHide) {
+			var t = this;
+
+			doAnimation = doAnimation === undefined || doAnimation;
+
+			if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.keyboardAction || t.media.paused && t.media.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.media.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.media.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.media.readyState || t.media.ended)) {
+				return;
+			}
+
+			if (doAnimation) {
+				(function () {
+					// fade out main controls
+					dom.fadeOut(t.controls, 200, function () {
+						dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
+						t.controls.style.display = '';
+						var event = (0, _general.createEvent)('controlshidden', t.container);
+						t.container.dispatchEvent(event);
+					});
+
+					// any additional controls people might add and want to hide
+					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
+
+					var _loop2 = function _loop2(i, total) {
+						dom.fadeOut(controls[i], 200, function () {
+							dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
+							controls[i].style.display = '';
+						});
+					};
+
+					for (var i = 0, total = controls.length; i < total; i++) {
+						_loop2(i, total);
+					}
+				})();
+			} else {
+
+				// hide main controls
+				dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
+				t.controls.style.display = '';
+
+				// hide others
+				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
+				for (var i = 0, total = controls.length; i < total; i++) {
+					dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
+					controls[i].style.display = '';
+				}
+
+				var event = (0, _general.createEvent)('controlshidden', t.container);
+				t.container.dispatchEvent(event);
+			}
+
+			t.controlsAreVisible = false;
+		}
+	}, {
+		key: 'startControlsTimer',
+		value: function startControlsTimer(timeout) {
+
+			var t = this;
+
+			timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
+
+			t.killControlsTimer('start');
+
+			t.controlsTimer = setTimeout(function () {
+				t.hideControls();
+				t.killControlsTimer('hide');
+			}, timeout);
+		}
+	}, {
+		key: 'killControlsTimer',
+		value: function killControlsTimer() {
+
+			var t = this;
+
+			if (t.controlsTimer !== null) {
+				clearTimeout(t.controlsTimer);
+				delete t.controlsTimer;
+				t.controlsTimer = null;
+			}
+		}
+	}, {
+		key: 'disableControls',
+		value: function disableControls() {
+			var t = this;
+
+			t.killControlsTimer();
+			t.controlsEnabled = true;
+			t.hideControls(false, true);
+		}
+	}, {
+		key: 'enableControls',
+		value: function enableControls() {
+			var t = this;
+
+			t.controlsEnabled = true;
+			t.showControls(false);
+		}
+
+		/**
+   * Set up all controls and events
+   *
+   * @param media
+   * @param domNode
+   * @private
+   */
+
+	}, {
+		key: '_meReady',
+		value: function _meReady(media, domNode) {
+
+			var t = this,
+			    autoplayAttr = domNode.getAttribute('autoplay'),
+			    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
+			    isNative = media.rendererName !== null && media.rendererName.match(/(native|html5)/) !== null;
+
+			if (t.controls) {
+				t.enableControls();
+			}
+
+			if (t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) {
+				t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
+			}
+
+			// make sure it can't create itself again if a plugin reloads
+			if (t.created) {
+				return;
+			}
+
+			t.created = true;
+			t.media = media;
+			t.domNode = domNode;
+
+			if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
+				var _ret5 = function () {
+
+					// In the event that no features are specified for audio,
+					// create only MediaElement instance rather than
+					// doing all the work to create a full player
+					if (!t.isVideo && !t.options.features.length) {
+
+						// force autoplay for HTML5
+						if (autoplay && isNative) {
+							t.play();
+						}
+
+						if (t.options.success) {
+
+							if (typeof t.options.success === 'string') {
+								_window2.default[t.options.success](t.media, t.domNode, t);
+							} else {
+								t.options.success(t.media, t.domNode, t);
+							}
+						}
+
+						return {
+							v: void 0
+						};
+					}
+
+					// two built in features
+					t.buildposter(t, t.controls, t.layers, t.media);
+					t.buildkeyboard(t, t.controls, t.layers, t.media);
+					t.buildoverlays(t, t.controls, t.layers, t.media);
+
+					// grab for use by features
+					t.findTracks();
+
+					// cache container to store control elements' original position
+					t.featurePosition = {};
+
+					// add user-defined features/controls
+					for (var i = 0, total = t.options.features.length; i < total; i++) {
+						var feature = t.options.features[i];
+						if (t['build' + feature]) {
+							try {
+								t['build' + feature](t, t.controls, t.layers, t.media);
+							} catch (e) {
+								// TODO: report control error
+								console.error('error building ' + feature, e);
+							}
+						}
+					}
+
+					var event = (0, _general.createEvent)('controlsready', t.container);
+					t.container.dispatchEvent(event);
+
+					// reset all layers and controls
+					t.setPlayerSize(t.width, t.height);
+					t.setControlsSize();
+
+					// controls fade
+					if (t.isVideo) {
+
+						// create callback here since it needs access to current
+						// MediaElement object
+						t.clickToPlayPauseCallback = function () {
+
+							if (t.options.clickToPlayPause) {
+								var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
+								    pressed = button.getAttribute('aria-pressed');
+
+								if (t.media.paused && pressed) {
+									t.pause();
+								} else if (t.media.paused) {
+									t.play();
+								} else {
+									t.pause();
+								}
+
+								button.setAttribute('aria-pressed', !pressed);
+							}
+						};
+
+						t.createIframeLayer();
+
+						// click to play/pause
+						t.media.addEventListener('click', t.clickToPlayPauseCallback);
+
+						if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
+
+							// for touch devices (iOS, Android)
+							// show/hide without animation on touch
+							t.node.addEventListener('touchstart', function () {
+
+								// toggle controls
+								if (t.controlsAreVisible) {
+									t.hideControls(false);
+								} else {
+									if (t.controlsEnabled) {
+										t.showControls(false);
+									}
+								}
+							});
+						} else {
+
+							// show/hide controls
+							t.container.addEventListener('mouseenter', function () {
+								if (t.controlsEnabled) {
+									if (!t.options.alwaysShowControls) {
+										t.killControlsTimer('enter');
+										t.showControls();
+										t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
+									}
+								}
+							});
+							t.container.addEventListener('mousemove', function () {
+								if (t.controlsEnabled) {
+									if (!t.controlsAreVisible) {
+										t.showControls();
+									}
+									if (!t.options.alwaysShowControls) {
+										t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
+									}
+								}
+							});
+							t.container.addEventListener('mouseleave', function () {
+								if (t.controlsEnabled) {
+									if (!t.media.paused && !t.options.alwaysShowControls) {
+										t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
+									}
+								}
+							});
+						}
+
+						if (t.options.hideVideoControlsOnLoad) {
+							t.hideControls(false);
+						}
+
+						// check for autoplay
+						if (autoplay && !t.options.alwaysShowControls) {
+							t.hideControls();
+						}
+
+						// resizer
+						if (t.options.enableAutosize) {
+							t.media.addEventListener('loadedmetadata', function (e) {
+								// if the <video height> was not set and the options.videoHeight was not set
+								// then resize to the real dimensions
+								if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && e.target !== null && !isNaN(e.target.videoHeight)) {
+									t.setPlayerSize(e.target.videoWidth, e.target.videoHeight);
+									t.setControlsSize();
+									t.media.setSize(e.target.videoWidth, e.target.videoHeight);
+								}
+							});
+						}
+					}
+
+					// EVENTS
+
+					// FOCUS: when a video starts playing, it takes focus from other players (possibly pausing them)
+					t.media.addEventListener('play', function () {
+						t.hasFocus = true;
+
+						// go through all other players
+						for (var playerIndex in _mejs2.default.players) {
+							if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
+								var p = _mejs2.default.players[playerIndex];
+
+								if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
+									p.pause();
+									p.hasFocus = false;
+								}
+							}
+						}
+					});
+
+					// ended for all
+					t.media.addEventListener('ended', function () {
+						if (t.options.autoRewind) {
+							try {
+								t.media.setCurrentTime(0);
+								// Fixing an Android stock browser bug, where "seeked" isn't fired correctly after
+								// ending the video and jumping to the beginning
+								setTimeout(function () {
+									t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading').parentNode.style.display = 'none';
+								}, 20);
+							} catch (exp) {
+								
+							}
+						}
+
+						if (typeof t.media.stop === 'function') {
+							t.media.stop();
+						} else {
+							t.media.pause();
+						}
+
+						if (t.setProgressRail) {
+							t.setProgressRail();
+						}
+						if (t.setCurrentRail) {
+							t.setCurrentRail();
+						}
+
+						if (t.options.loop) {
+							t.play();
+						} else if (!t.options.alwaysShowControls && t.controlsEnabled) {
+							t.showControls();
+						}
+					});
+
+					// resize on the first play
+					t.media.addEventListener('loadedmetadata', function () {
+
+						(0, _time.calculateTimeFormat)(t.duration, t.options, t.options.framesPerSecond || 25);
+
+						if (t.updateDuration) {
+							t.updateDuration();
+						}
+						if (t.updateCurrent) {
+							t.updateCurrent();
+						}
+
+						if (!t.isFullScreen) {
+							t.setPlayerSize(t.width, t.height);
+							t.setControlsSize();
+						}
+					});
+
+					// Only change the time format when necessary
+					var duration = null;
+					t.media.addEventListener('timeupdate', function () {
+						if (duration !== t.media.duration) {
+							duration = t.media.duration;
+							(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
+
+							// make sure to fill in and resize the controls (e.g., 00:00 => 01:13:15
+							if (t.updateDuration) {
+								t.updateDuration();
+							}
+							if (t.updateCurrent) {
+								t.updateCurrent();
+							}
+							t.setControlsSize();
+						}
+					});
+
+					t.container.addEventListener('focusout', function (e) {
+						setTimeout(function () {
+							//FF is working on supporting focusout https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+							if (e.relatedTarget) {
+								if (t.keyboardAction && !e.relatedTarget.closest('.mejs-container')) {
+									t.keyboardAction = false;
+									if (t.isVideo && !t.options.alwaysShowControls) {
+										t.hideControls(true);
+									}
+								}
+							}
+						}, 0);
+					});
+
+					// webkit has trouble doing this without a delay
+					setTimeout(function () {
+						t.setPlayerSize(t.width, t.height);
+						t.setControlsSize();
+					}, 0);
+
+					// adjust controls whenever window sizes (used to be in fullscreen only)
+					t.globalBind('resize', function () {
+
+						// don't resize for fullscreen mode
+						if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
+							t.setPlayerSize(t.width, t.height);
+						}
+
+						// always adjust controls
+						t.setControlsSize();
+					});
+
+					// Disable focus outline to improve look-and-feel for regular users
+					t.globalBind('click', function (e) {
+						if (e.target.matches('.' + t.options.classPrefix + 'container')) {
+							dom.addClass(e.target, t.options.classPrefix + 'container-keyboard-inactive');
+						} else if (e.target.closest('.' + t.options.classPrefix + 'container')) {
+							dom.addClass(e.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive');
+						}
+					});
+
+					// Enable focus outline for Accessibility purposes
+					t.globalBind('keydown', function (e) {
+						if (e.target.matches('.' + t.options.classPrefix + 'container')) {
+							dom.removeClass(e.target, t.options.classPrefix + 'container-keyboard-inactive');
+						} else if (e.target.closest('.' + t.options.classPrefix + 'container')) {
+							dom.removeClass(event.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive');
+						}
+					});
+				}();
+
+				if ((typeof _ret5 === 'undefined' ? 'undefined' : _typeof(_ret5)) === "object") return _ret5.v;
+			}
+
+			// force autoplay for HTML5
+			if (autoplay && isNative) {
+				t.play();
+			}
+
+			if (t.options.success) {
+
+				if (typeof t.options.success === 'string') {
+					_window2.default[t.options.success](t.media, t.domNode, t);
+				} else {
+					t.options.success(t.media, t.domNode, t);
+				}
+			}
+		}
+
+		/**
+   *
+   * @param {Event} e
+   * @private
+   */
+
+	}, {
+		key: '_handleError',
+		value: function _handleError(e) {
+			var t = this;
+
+			if (t.controls) {
+				t.disableControls();
+			}
+
+			var play = t.layers.querySelector('.' + t.options.classPrefix + 'overlay-play');
+
+			if (play) {
+				play.style.display = 'none';
+			}
+
+			// Tell user that the file cannot be played
+			if (t.options.error) {
+				t.options.error(e);
+			}
+		}
+	}, {
+		key: 'setPlayerSize',
+		value: function setPlayerSize(width, height) {
+			var t = this;
+
+			if (!t.options.setDimensions) {
+				return false;
+			}
+
+			if (typeof width !== 'undefined') {
+				t.width = width;
+			}
+
+			if (typeof height !== 'undefined') {
+				t.height = height;
+			}
+
+			if (typeof FB !== 'undefined' && t.isVideo) {
+				FB.Event.subscribe('xfbml.ready', function () {
+					var target = t.media.firstChild;
+
+					t.width = parseFloat(target.offsetWidth);
+					t.height = parseFloat(target.offsetHeight);
+					t.setDimensions(t.width, t.height);
+					return false;
+				});
+
+				var target = t.media.firstChild;
+
+				if (target.length) {
+					t.width = target.offsetWidth;
+					t.height = target.offsetHeight;
+				}
+			}
+
+			// check stretching modes
+			switch (t.options.stretching) {
+				case 'fill':
+					// The 'fill' effect only makes sense on video; for audio we will set the dimensions
+					if (t.isVideo) {
+						t.setFillMode();
+					} else {
+						t.setDimensions(t.width, t.height);
+					}
+					break;
+				case 'responsive':
+					t.setResponsiveMode();
+					break;
+				case 'none':
+					t.setDimensions(t.width, t.height);
+					break;
+				// This is the 'auto' mode
+				default:
+					if (t.hasFluidMode() === true) {
+						t.setResponsiveMode();
+					} else {
+						t.setDimensions(t.width, t.height);
+					}
+					break;
+			}
+		}
+	}, {
+		key: 'hasFluidMode',
+		value: function hasFluidMode() {
+			var t = this;
+
+			// detect 100% mode - use currentStyle for IE since css() doesn't return percentages
+			return t.height.toString().includes('%') || t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';
+		}
+	}, {
+		key: 'setResponsiveMode',
+		value: function setResponsiveMode() {
+			var t = this,
+			    parent = function () {
+
+				var parentEl = void 0,
+				    el = t.container;
+
+				// traverse parents to find the closest visible one
+				while (el) {
+					parentEl = el.parentElement;
+					if (parentEl && dom.visible(parentEl)) {
+						return parentEl;
+					}
+					el = parentEl;
+				}
+
+				return null;
+			}(),
+			    parentStyles = getComputedStyle(parent, null),
+			    nativeWidth = function () {
+				if (t.isVideo) {
+					if (t.media.videoWidth && t.media.videoWidth > 0) {
+						return t.media.videoWidth;
+					} else if (t.node.getAttribute('width')) {
+						return t.node.getAttribute('width');
+					} else {
+						return t.options.defaultVideoWidth;
+					}
+				} else {
+					return t.options.defaultAudioWidth;
+				}
+			}(),
+			    nativeHeight = function () {
+				if (t.isVideo) {
+					if (t.media.videoHeight && t.media.videoHeight > 0) {
+						return t.media.videoHeight;
+					} else if (t.node.getAttribute('height')) {
+						return t.node.getAttribute('height');
+					} else {
+						return t.options.defaultVideoHeight;
+					}
+				} else {
+					return t.options.defaultAudioHeight;
+				}
+			}(),
+			    aspectRatio = function () {
+				var ratio = 1;
+				if (!t.isVideo) {
+					return ratio;
+				}
+
+				if (t.media.videoWidth && t.media.videoWidth > 0 && t.media.videoHeight && t.media.videoHeight > 0) {
+					ratio = t.height >= t.width ? t.media.videoWidth / t.media.videoHeight : t.media.videoHeight / t.media.videoWidth;
+				} else {
+					ratio = t.initialAspectRatio;
+				}
+
+				if (isNaN(ratio) || ratio < 0.01 || ratio > 100) {
+					ratio = 1;
+				}
+
+				return ratio;
+			}(),
+			    parentHeight = parseFloat(parentStyles.height);
+
+			var newHeight = void 0,
+			    parentWidth = parseFloat(parentStyles.width);
+
+			if (t.isVideo) {
+				// Responsive video is based on width: 100% and height: 100%
+				if (t.height === '100%') {
+					newHeight = parseInt(parentWidth * nativeHeight / nativeWidth, 10);
+				} else {
+					newHeight = t.height >= t.width ? parseInt(parentWidth / aspectRatio, 10) : parseInt(parentWidth * aspectRatio, 10);
+				}
+			} else {
+				newHeight = nativeHeight;
+			}
 
-// version number
-mejs.version = '2.15.1'; 
-
-
-// player number (for missing, same id attr)
-mejs.meIndex = 0;
-
-// media types accepted by plugins
-mejs.plugins = {
-	silverlight: [
-		{version: [3,0], types: ['video/mp4','video/m4v','video/mov','video/wmv','audio/wma','audio/m4a','audio/mp3','audio/wav','audio/mpeg']}
-	],
-	flash: [
-		{version: [9,0,124], types: ['video/mp4','video/m4v','video/mov','video/flv','video/rtmp','video/x-flv','audio/flv','audio/x-flv','audio/mp3','audio/m4a','audio/mpeg', 'video/youtube', 'video/x-youtube', 'application/x-mpegURL']}
-		//,{version: [12,0], types: ['video/webm']} // for future reference (hopefully!)
-	],
-	youtube: [
-		{version: null, types: ['video/youtube', 'video/x-youtube', 'audio/youtube', 'audio/x-youtube']}
-	],
-	vimeo: [
-		{version: null, types: ['video/vimeo', 'video/x-vimeo']}
-	]
-};
+			// If we were unable to compute newHeight, get the container height instead
+			if (isNaN(newHeight)) {
+				newHeight = parentHeight;
+			}
 
-/*
-Utility methods
-*/
-mejs.Utility = {
-	encodeUrl: function(url) {
-		return encodeURIComponent(url); //.replace(/\?/gi,'%3F').replace(/=/gi,'%3D').replace(/&/gi,'%26');
-	},
-	escapeHTML: function(s) {
-		return s.toString().split('&').join('&amp;').split('<').join('&lt;').split('"').join('&quot;');
-	},
-	absolutizeUrl: function(url) {
-		var el = document.createElement('div');
-		el.innerHTML = '<a href="' + this.escapeHTML(url) + '">x</a>';
-		return el.firstChild.href;
-	},
-	getScriptPath: function(scriptNames) {
-		var
-			i = 0,
-			j,
-			codePath = '',
-			testname = '',
-			slashPos,
-			filenamePos,
-			scriptUrl,
-			scriptPath,			
-			scriptFilename,
-			scripts = document.getElementsByTagName('script'),
-			il = scripts.length,
-			jl = scriptNames.length;
-			
-		// go through all <script> tags
-		for (; i < il; i++) {
-			scriptUrl = scripts[i].src;
-			slashPos = scriptUrl.lastIndexOf('/');
-			if (slashPos > -1) {
-				scriptFilename = scriptUrl.substring(slashPos + 1);
-				scriptPath = scriptUrl.substring(0, slashPos + 1);
-			} else {
-				scriptFilename = scriptUrl;
-				scriptPath = '';			
-			}
-			
-			// see if any <script> tags have a file name that matches the 
-			for (j = 0; j < jl; j++) {
-				testname = scriptNames[j];
-				filenamePos = scriptFilename.indexOf(testname);
-				if (filenamePos > -1) {
-					codePath = scriptPath;
-					break;
-				}
+			if (t.container.parentNode.length > 0 && t.container.parentNode.tagName.toLowerCase() === 'body') {
+				parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;
+				newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;
 			}
-			
-			// if we found a path, then break and return it
-			if (codePath !== '') {
-				break;
+
+			if (newHeight && parentWidth) {
+
+				// set outer container size
+				t.container.style.width = parentWidth + 'px';
+				t.container.style.height = newHeight + 'px';
+
+				// set native <video> or <audio> and shims
+				t.node.style.width = '100%';
+				t.node.style.height = '100%';
+
+				// if shim is ready, send the size to the embedded plugin
+				if (t.isVideo && t.media.setSize) {
+					t.media.setSize(parentWidth, newHeight);
+				}
+
+				// set the layers
+				var layerChildren = t.layers.childNodes;
+				for (var i = 0, total = layerChildren.length; i < total; i++) {
+					layerChildren[i].style.width = '100%';
+					layerChildren[i].style.height = '100%';
+				}
 			}
 		}
-		
-		// send the best path back
-		return codePath;
-	},
-	secondsToTimeCode: function(time, forceHours, showFrameCount, fps) {
-		//add framecount
-		if (typeof showFrameCount == 'undefined') {
-		    showFrameCount=false;
-		} else if(typeof fps == 'undefined') {
-		    fps = 25;
-		}
-	
-		var hours = Math.floor(time / 3600) % 24,
-			minutes = Math.floor(time / 60) % 60,
-			seconds = Math.floor(time % 60),
-			frames = Math.floor(((time % 1)*fps).toFixed(3)),
-			result = 
-					( (forceHours || hours > 0) ? (hours < 10 ? '0' + hours : hours) + ':' : '')
-						+ (minutes < 10 ? '0' + minutes : minutes) + ':'
-						+ (seconds < 10 ? '0' + seconds : seconds)
-						+ ((showFrameCount) ? ':' + (frames < 10 ? '0' + frames : frames) : '');
-	
-		return result;
-	},
-	
-	timeCodeToSeconds: function(hh_mm_ss_ff, forceHours, showFrameCount, fps){
-		if (typeof showFrameCount == 'undefined') {
-		    showFrameCount=false;
-		} else if(typeof fps == 'undefined') {
-		    fps = 25;
-		}
-	
-		var tc_array = hh_mm_ss_ff.split(":"),
-			tc_hh = parseInt(tc_array[0], 10),
-			tc_mm = parseInt(tc_array[1], 10),
-			tc_ss = parseInt(tc_array[2], 10),
-			tc_ff = 0,
-			tc_in_seconds = 0;
-		
-		if (showFrameCount) {
-		    tc_ff = parseInt(tc_array[3])/fps;
-		}
-		
-		tc_in_seconds = ( tc_hh * 3600 ) + ( tc_mm * 60 ) + tc_ss + tc_ff;
-		
-		return tc_in_seconds;
-	},
-	
+	}, {
+		key: 'setFillMode',
+		value: function setFillMode() {
+			var t = this,
+			    parent = t.outerContainer;
 
-	convertSMPTEtoSeconds: function (SMPTE) {
-		if (typeof SMPTE != 'string') 
-			return false;
+			var parentStyles = getComputedStyle(parent);
 
-		SMPTE = SMPTE.replace(',', '.');
-		
-		var secs = 0,
-			decimalLen = (SMPTE.indexOf('.') != -1) ? SMPTE.split('.')[1].length : 0,
-			multiplier = 1;
-		
-		SMPTE = SMPTE.split(':').reverse();
-		
-		for (var i = 0; i < SMPTE.length; i++) {
-			multiplier = 1;
-			if (i > 0) {
-				multiplier = Math.pow(60, i); 
-			}
-			secs += Number(SMPTE[i]) * multiplier;
-		}
-		return Number(secs.toFixed(decimalLen));
-	},	
-	
-	/* borrowed from SWFObject: http://code.google.com/p/swfobject/source/browse/trunk/swfobject/src/swfobject.js#474 */
-	removeSwf: function(id) {
-		var obj = document.getElementById(id);
-		if (obj && /object|embed/i.test(obj.nodeName)) {
-			if (mejs.MediaFeatures.isIE) {
-				obj.style.display = "none";
-				(function(){
-					if (obj.readyState == 4) {
-						mejs.Utility.removeObjectInIE(id);
-					} else {
-						setTimeout(arguments.callee, 10);
-					}
-				})();
-			} else {
-				obj.parentNode.removeChild(obj);
+			// Remove the responsive attributes in the event they are there
+			if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
+				t.node.style.height = '';
 			}
-		}
-	},
-	removeObjectInIE: function(id) {
-		var obj = document.getElementById(id);
-		if (obj) {
-			for (var i in obj) {
-				if (typeof obj[i] == "function") {
-					obj[i] = null;
-				}
+			if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {
+				t.node.style.maxWidth = '';
 			}
-			obj.parentNode.removeChild(obj);
-		}		
-	}
-};
-
 
-// Core detector, plugins are added below
-mejs.PluginDetector = {
+			if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {
+				t.node.style.maxHeight = '';
+			}
 
-	// main public function to test a plug version number PluginDetector.hasPluginVersion('flash',[9,0,125]);
-	hasPluginVersion: function(plugin, v) {
-		var pv = this.plugins[plugin];
-		v[1] = v[1] || 0;
-		v[2] = v[2] || 0;
-		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])) ? true : false;
-	},
+			if (t.node.currentStyle) {
+				if (t.node.currentStyle.height === '100%') {
+					t.node.currentStyle.height = '';
+				}
+				if (t.node.currentStyle.maxWidth === '100%') {
+					t.node.currentStyle.maxWidth = '';
+				}
+				if (t.node.currentStyle.maxHeight === '100%') {
+					t.node.currentStyle.maxHeight = '';
+				}
+			}
 
-	// cached values
-	nav: window.navigator,
-	ua: window.navigator.userAgent.toLowerCase(),
+			if (!parseFloat(parentStyles.width)) {
+				parent.style.width = t.media.offsetWidth + 'px';
+			}
 
-	// stored version numbers
-	plugins: [],
+			if (!parseFloat(parentStyles.height)) {
+				parent.style.height = t.media.offsetHeight + 'px';
+			}
 
-	// runs detectPlugin() and stores the version number
-	addPlugin: function(p, pluginName, mimeType, activeX, axDetect) {
-		this.plugins[p] = this.detectPlugin(pluginName, mimeType, activeX, axDetect);
-	},
+			parentStyles = getComputedStyle(parent);
 
-	// get the version number from the mimetype (all but IE) or ActiveX (IE)
-	detectPlugin: function(pluginName, mimeType, activeX, axDetect) {
+			var parentWidth = parseFloat(parentStyles.width),
+			    parentHeight = parseFloat(parentStyles.height);
 
-		var version = [0,0,0],
-			description,
-			i,
-			ax;
+			t.setDimensions('100%', '100%');
 
-		// Firefox, Webkit, Opera
-		if (typeof(this.nav.plugins) != 'undefined' && typeof this.nav.plugins[pluginName] == 'object') {
-			description = this.nav.plugins[pluginName].description;
-			if (description && !(typeof this.nav.mimeTypes != 'undefined' && this.nav.mimeTypes[mimeType] && !this.nav.mimeTypes[mimeType].enabledPlugin)) {
-				version = description.replace(pluginName, '').replace(/^\s+/,'').replace(/\sr/gi,'.').split('.');
-				for (i=0; i<version.length; i++) {
-					version[i] = parseInt(version[i].match(/\d+/), 10);
-				}
+			// This prevents an issue when displaying poster
+			var poster = t.container.querySelector(t.options.classPrefix + 'poster img');
+			if (poster) {
+				poster.style.display = '';
 			}
-		// Internet Explorer / ActiveX
-		} else if (typeof(window.ActiveXObject) != 'undefined') {
-			try {
-				ax = new ActiveXObject(activeX);
-				if (ax) {
-					version = axDetect(ax);
+
+			// calculate new width and height
+			var targetElement = t.container.querySelectorAll('object, embed, iframe, video'),
+			    initHeight = t.height,
+			    initWidth = t.width,
+
+			// scale to the target width
+			scaleX1 = parentWidth,
+			    scaleY1 = initHeight * parentWidth / initWidth,
+
+			// scale to the target height
+			scaleX2 = initWidth * parentHeight / initHeight,
+			    scaleY2 = parentHeight,
+
+			// now figure out which one we should use
+			bScaleOnWidth = scaleX2 > parentWidth === false,
+			    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
+			    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
+			    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
+			    height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';
+
+			for (var i = 0, total = targetElement.length; i < total; i++) {
+				targetElement[i].style.height = height;
+				targetElement[i].style.width = width;
+				if (t.media.setSize) {
+					t.media.setSize(width, height);
 				}
+
+				targetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px';
+				targetElement[i].style.marginTop = 0;
 			}
-			catch (e) { }
 		}
-		return version;
-	}
-};
+	}, {
+		key: 'setDimensions',
+		value: function setDimensions(width, height) {
+			var t = this;
 
-// Add Flash detection
-mejs.PluginDetector.addPlugin('flash','Shockwave Flash','application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash', function(ax) {
-	// adapted from SWFObject
-	var version = [],
-		d = ax.GetVariable("$version");
-	if (d) {
-		d = d.split(" ")[1].split(",");
-		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
-	}
-	return version;
-});
+			width = (0, _general.isString)(width) && width.includes('%') ? width : parseFloat(width) + 'px';
+			height = (0, _general.isString)(height) && height.includes('%') ? height : parseFloat(height) + 'px';
 
-// Add Silverlight detection
-mejs.PluginDetector.addPlugin('silverlight','Silverlight Plug-In','application/x-silverlight-2','AgControl.AgControl', function (ax) {
-	// Silverlight cannot report its version number to IE
-	// but it does have a isVersionSupported function, so we have to loop through it to get a version number.
-	// adapted from http://www.silverlightversion.com/
-	var v = [0,0,0,0],
-		loopMatch = function(ax, v, i, n) {
-			while(ax.isVersionSupported(v[0]+ "."+ v[1] + "." + v[2] + "." + v[3])){
-				v[i]+=n;
-			}
-			v[i] -= n;
-		};
-	loopMatch(ax, v, 0, 1);
-	loopMatch(ax, v, 1, 1);
-	loopMatch(ax, v, 2, 10000); // the third place in the version number is usually 5 digits (4.0.xxxxx)
-	loopMatch(ax, v, 2, 1000);
-	loopMatch(ax, v, 2, 100);
-	loopMatch(ax, v, 2, 10);
-	loopMatch(ax, v, 2, 1);
-	loopMatch(ax, v, 3, 1);
-
-	return v;
-});
-// add adobe acrobat
-/*
-PluginDetector.addPlugin('acrobat','Adobe Acrobat','application/pdf','AcroPDF.PDF', function (ax) {
-	var version = [],
-		d = ax.GetVersions().split(',')[0].split('=')[1].split('.');
+			t.container.style.width = width;
+			t.container.style.height = height;
 
-	if (d) {
-		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
-	}
-	return version;
-});
-*/
-// necessary detection (fixes for <IE9)
-mejs.MediaFeatures = {
-	init: function() {
-		var
-			t = this,
-			d = document,
-			nav = mejs.PluginDetector.nav,
-			ua = mejs.PluginDetector.ua.toLowerCase(),
-			i,
-			v,
-			html5Elements = ['source','track','audio','video'];
-
-		// detect browsers (only the ones that have some kind of quirk we need to work around)
-		t.isiPad = (ua.match(/ipad/i) !== null);
-		t.isiPhone = (ua.match(/iphone/i) !== null);
-		t.isiOS = t.isiPhone || t.isiPad;
-		t.isAndroid = (ua.match(/android/i) !== null);
-		t.isBustedAndroid = (ua.match(/android 2\.[12]/) !== null);
-		t.isBustedNativeHTTPS = (location.protocol === 'https:' && (ua.match(/android [12]\./) !== null || ua.match(/macintosh.* version.* safari/) !== null));
-		t.isIE = (nav.appName.toLowerCase().indexOf("microsoft") != -1 || nav.appName.toLowerCase().match(/trident/gi) !== null);
-		t.isChrome = (ua.match(/chrome/gi) !== null);
-		t.isChromium = (ua.match(/chromium/gi) !== null);
-		t.isFirefox = (ua.match(/firefox/gi) !== null);
-		t.isWebkit = (ua.match(/webkit/gi) !== null);
-		t.isGecko = (ua.match(/gecko/gi) !== null) && !t.isWebkit && !t.isIE;
-		t.isOpera = (ua.match(/opera/gi) !== null);
-		t.hasTouch = ('ontouchstart' in window); //  && window.ontouchstart != null); // this breaks iOS 7
-		
-		// borrowed from Modernizr
-		t.svg = !! document.createElementNS &&
-				!! document.createElementNS('http://www.w3.org/2000/svg','svg').createSVGRect;
-
-		// create HTML5 media elements for IE before 9, get a <video> element for fullscreen detection
-		for (i=0; i<html5Elements.length; i++) {
-			v = document.createElement(html5Elements[i]);
-		}
-		
-		t.supportsMediaTag = (typeof v.canPlayType !== 'undefined' || t.isBustedAndroid);
-
-		// Fix for IE9 on Windows 7N / Windows 7KN (Media Player not installer)
-		try{
-			v.canPlayType("video/mp4");
-		}catch(e){
-			t.supportsMediaTag = false;
-		}
-
-		// detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
-		
-		// iOS
-		t.hasSemiNativeFullScreen = (typeof v.webkitEnterFullscreen !== 'undefined');
-		
-		// W3C
-		t.hasNativeFullscreen = (typeof v.requestFullscreen !== 'undefined');
-		
-		// webkit/firefox/IE11+
-		t.hasWebkitNativeFullScreen = (typeof v.webkitRequestFullScreen !== 'undefined');
-		t.hasMozNativeFullScreen = (typeof v.mozRequestFullScreen !== 'undefined');
-		t.hasMsNativeFullScreen = (typeof v.msRequestFullscreen !== 'undefined');
-		
-		t.hasTrueNativeFullScreen = (t.hasWebkitNativeFullScreen || t.hasMozNativeFullScreen || t.hasMsNativeFullScreen);
-		t.nativeFullScreenEnabled = t.hasTrueNativeFullScreen;
-		
-		// Enabled?
-		if (t.hasMozNativeFullScreen) {
-			t.nativeFullScreenEnabled = document.mozFullScreenEnabled;
-		} else if (t.hasMsNativeFullScreen) {
-			t.nativeFullScreenEnabled = document.msFullscreenEnabled;		
-		}
-		
-		if (t.isChrome) {
-			t.hasSemiNativeFullScreen = false;
-		}
-		
-		if (t.hasTrueNativeFullScreen) {
-			
-			t.fullScreenEventName = '';
-			if (t.hasWebkitNativeFullScreen) { 
-				t.fullScreenEventName = 'webkitfullscreenchange';
-				
-			} else if (t.hasMozNativeFullScreen) {
-				t.fullScreenEventName = 'mozfullscreenchange';
-				
-			} else if (t.hasMsNativeFullScreen) {
-				t.fullScreenEventName = 'MSFullscreenChange';
+			var layers = t.layers.childNodes;
+			for (var i = 0, total = layers.length; i < total; i++) {
+				layers[i].style.width = width;
+				layers[i].style.height = height;
 			}
-			
-			t.isFullScreen = function() {
-				if (t.hasMozNativeFullScreen) {
-					return d.mozFullScreen;
-				
-				} else if (t.hasWebkitNativeFullScreen) {
-					return d.webkitIsFullScreen;
-				
-				} else if (t.hasMsNativeFullScreen) {
-					return d.msFullscreenElement !== null;
-				}
+		}
+	}, {
+		key: 'setControlsSize',
+		value: function setControlsSize() {
+			var t = this;
+
+			// skip calculation if hidden
+			if (!dom.visible(t.container) || !t.rail || !dom.visible(t.rail)) {
+				return;
 			}
-					
-			t.requestFullScreen = function(el) {
-		
-				if (t.hasWebkitNativeFullScreen) {
-					el.webkitRequestFullScreen();
-					
-				} else if (t.hasMozNativeFullScreen) {
-					el.mozRequestFullScreen();
 
-				} else if (t.hasMsNativeFullScreen) {
-					el.msRequestFullscreen();
+			var railStyles = getComputedStyle(t.rail),
+			    totalStyles = getComputedStyle(t.total),
+			    railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight),
+			    totalMargin = parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) || 0;
 
-				}
+			var siblingsWidth = 0;
+
+			var siblings = dom.siblings(t.rail, function (el) {
+				return el !== t.rail;
+			}),
+			    total = siblings.length;
+			for (var i = 0; i < total; i++) {
+				siblingsWidth += siblings[i].offsetWidth;
 			}
-			
-			t.cancelFullScreen = function() {				
-				if (t.hasWebkitNativeFullScreen) {
-					document.webkitCancelFullScreen();
-					
-				} else if (t.hasMozNativeFullScreen) {
-					document.mozCancelFullScreen();
-					
-				} else if (t.hasMsNativeFullScreen) {
-					document.msExitFullscreen();
-					
-				}
-			}	
-			
-		}
-		
-		
-		// OS X 10.5 can't do this even if it says it can :(
-		if (t.hasSemiNativeFullScreen && ua.match(/mac os x 10_5/i)) {
-			t.hasNativeFullScreen = false;
-			t.hasSemiNativeFullScreen = false;
-		}
-		
-	}
-};
-mejs.MediaFeatures.init();
 
-/*
-extension methods to <video> or <audio> object to bring it into parity with PluginMediaElement (see below)
-*/
-mejs.HtmlMediaElement = {
-	pluginType: 'native',
-	isFullScreen: false,
+			siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
 
-	setCurrentTime: function (time) {
-		this.currentTime = time;
-	},
+			// Substract the width of the feature siblings from time rail
+			var controlsWidth = parseFloat(t.controls.offsetWidth);
+			t.rail.style.width = (siblingsWidth > controlsWidth ? 0 : controlsWidth - siblingsWidth) + 'px';
 
-	setMuted: function (muted) {
-		this.muted = muted;
-	},
+			var event = (0, _general.createEvent)('controlsresize', t.container);
+			t.container.dispatchEvent(event);
+		}
 
-	setVolume: function (volume) {
-		this.volume = volume;
-	},
+		/**
+   * Add featured control element and cache its position in case features are reset
+   *
+   * @param {HTMLElement} element
+   * @param {String} key
+   */
 
-	// for parity with the plugin versions
-	stop: function () {
-		this.pause();
-	},
+	}, {
+		key: 'addControlElement',
+		value: function addControlElement(element, key) {
 
-	// This can be a url string
-	// or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}]
-	setSrc: function (url) {
-		
-		// Fix for IE9 which can't set .src when there are <source> elements. Awesome, right?
-		var 
-			existingSources = this.getElementsByTagName('source');
-		while (existingSources.length > 0){
-			this.removeChild(existingSources[0]);
-		}
-	
-		if (typeof url == 'string') {
-			this.src = url;
-		} else {
-			var i, media;
+			var t = this;
 
-			for (i=0; i<url.length; i++) {
-				media = url[i];
-				if (this.canPlayType(media.type)) {
-					this.src = media.src;
-					break;
+			if (t.featurePosition[key] !== undefined) {
+				var child = t.controls.childNodes[t.featurePosition[key] - 1];
+				child.parentNode.insertBefore(element, child.nextSibling);
+			} else {
+				t.controls.appendChild(element);
+				var children = t.controls.childNodes;
+				for (var i = 0, total = children.length; i < total; i++) {
+					if (element == children[i]) {
+						t.featurePosition[key] = i;
+						break;
+					}
 				}
 			}
 		}
-	},
 
-	setVideoSize: function (width, height) {
-		this.width = width;
-		this.height = height;
-	}
-};
+		/**
+   * Append layer to manipulate `<iframe>` elements safely.
+   *
+   * This allows the user to trigger events properly given that mouse/click don't get lost in the `<iframe>`.
+   */
 
-/*
-Mimics the <video/audio> element by calling Flash's External Interface or Silverlights [ScriptableMember]
-*/
-mejs.PluginMediaElement = function (pluginid, pluginType, mediaUrl) {
-	this.id = pluginid;
-	this.pluginType = pluginType;
-	this.src = mediaUrl;
-	this.events = {};
-	this.attributes = {};
-};
+	}, {
+		key: 'createIframeLayer',
+		value: function createIframeLayer() {
 
-// JavaScript values and ExternalInterface methods that match HTML5 video properties methods
-// http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html
-// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html
-mejs.PluginMediaElement.prototype = {
+			var t = this;
 
-	// special
-	pluginElement: null,
-	pluginType: '',
-	isFullScreen: false,
+			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.match(/iframe/i) !== null && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
 
-	// not implemented :(
-	playbackRate: -1,
-	defaultPlaybackRate: -1,
-	seekable: [],
-	played: [],
+				var layer = _document2.default.createElement('div'),
+				    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
 
-	// HTML5 read-only properties
-	paused: true,
-	ended: false,
-	seeking: false,
-	duration: 0,
-	error: null,
-	tagName: '',
-
-	// HTML5 get/set properties, but only set (updated by event handlers)
-	muted: false,
-	volume: 1,
-	currentTime: 0,
-
-	// HTML5 methods
-	play: function () {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-				this.pluginApi.playVideo();
-			} else {
-				this.pluginApi.playMedia();
-			}
-			this.paused = false;
-		}
-	},
-	load: function () {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-			} else {
-				this.pluginApi.loadMedia();
+				layer.id = t.media.id + '-iframe-overlay';
+				layer.className = t.options.classPrefix + 'iframe-overlay';
+				layer.addEventListener('click', function (e) {
+					if (t.options.clickToPlayPause) {
+						if (t.media.paused) {
+							t.media.play();
+						} else {
+							t.media.pause();
+						}
+
+						e.preventDefault();
+						e.stopPropagation();
+					}
+				});
+
+				target.parentNode.insertBefore(layer, target);
 			}
-			
-			this.paused = false;
 		}
-	},
-	pause: function () {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-				this.pluginApi.pauseVideo();
-			} else {
-				this.pluginApi.pauseMedia();
-			}			
-			
-			
-			this.paused = true;
-		}
-	},
-	stop: function () {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-				this.pluginApi.stopVideo();
-			} else {
-				this.pluginApi.stopMedia();
-			}	
-			this.paused = true;
+	}, {
+		key: 'resetSize',
+		value: function resetSize() {
+			var t = this;
+			// webkit has trouble doing this without a delay
+			setTimeout(function () {
+				t.setPlayerSize(t.width, t.height);
+				t.setControlsSize();
+			}, 50);
 		}
-	},
-	canPlayType: function(type) {
-		var i,
-			j,
-			pluginInfo,
-			pluginVersions = mejs.plugins[this.pluginType];
-
-		for (i=0; i<pluginVersions.length; i++) {
-			pluginInfo = pluginVersions[i];
-
-			// test if user has the correct plugin version
-			if (mejs.PluginDetector.hasPluginVersion(this.pluginType, pluginInfo.version)) {
-
-				// test for plugin playback types
-				for (j=0; j<pluginInfo.types.length; j++) {
-					// find plugin that can play the type
-					if (type == pluginInfo.types[j]) {
-						return 'probably';
-					}
-				}
+	}, {
+		key: 'setPoster',
+		value: function setPoster(url) {
+			var t = this,
+			    posterDiv = t.container.querySelector('.' + t.options.classPrefix + 'poster');
+
+			var posterImg = posterDiv.querySelector('img');
+
+			if (!posterImg) {
+				posterImg = _document2.default.createElement('img');
+				posterImg.className = t.options.classPrefix + 'poster-img';
+				posterImg.width = '100%';
+				posterImg.height = '100%';
+				posterDiv.appendChild(posterImg);
 			}
-		}
 
-		return '';
-	},
-	
-	positionFullscreenButton: function(x,y,visibleAndAbove) {
-		if (this.pluginApi != null && this.pluginApi.positionFullscreenButton) {
-			this.pluginApi.positionFullscreenButton(Math.floor(x),Math.floor(y),visibleAndAbove);
+			posterImg.setAttribute('src', url);
+			posterDiv.style.backgroundImage = 'url("' + url + '")';
 		}
-	},
-	
-	hideFullscreenButton: function() {
-		if (this.pluginApi != null && this.pluginApi.hideFullscreenButton) {
-			this.pluginApi.hideFullscreenButton();
-		}		
-	},	
-	
-
-	// custom methods since not all JavaScript implementations support get/set
-
-	// This can be a url string
-	// or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}]
-	setSrc: function (url) {
-		if (typeof url == 'string') {
-			this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(url));
-			this.src = mejs.Utility.absolutizeUrl(url);
-		} else {
-			var i, media;
+	}, {
+		key: 'changeSkin',
+		value: function changeSkin(className) {
+			var t = this;
 
-			for (i=0; i<url.length; i++) {
-				media = url[i];
-				if (this.canPlayType(media.type)) {
-					this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(media.src));
-					this.src = mejs.Utility.absolutizeUrl(url);
-					break;
+			t.container.className = t.options.classPrefix + 'container ' + className;
+			t.setPlayerSize(t.width, t.height);
+			t.setControlsSize();
+		}
+	}, {
+		key: 'globalBind',
+		value: function globalBind(events, callback) {
+			var t = this,
+			    doc = t.node ? t.node.ownerDocument : _document2.default;
+
+			events = (0, _general.splitEvents)(events, t.id);
+			if (events.d) {
+				var eventList = events.d.split(' ');
+				for (var i = 0, total = eventList.length; i < total; i++) {
+					eventList[i].split('.').reduce(function (part, e) {
+						doc.addEventListener(e, callback, false);
+						return e;
+					}, '');
+				}
+			}
+			if (events.w) {
+				var _eventList = events.w.split(' ');
+				for (var _i = 0, _total = _eventList.length; _i < _total; _i++) {
+					_eventList[_i].split('.').reduce(function (part, e) {
+						_window2.default.addEventListener(e, callback, false);
+						return e;
+					}, '');
 				}
 			}
 		}
+	}, {
+		key: 'globalUnbind',
+		value: function globalUnbind(events, callback) {
 
-	},
-	setCurrentTime: function (time) {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-				this.pluginApi.seekTo(time);
-			} else {
-				this.pluginApi.setCurrentTime(time);
-			}				
-			
-			
-			
-			this.currentTime = time;
-		}
-	},
-	setVolume: function (volume) {
-		if (this.pluginApi != null) {
-			// same on YouTube and MEjs
-			if (this.pluginType == 'youtube') {
-				this.pluginApi.setVolume(volume * 100);
-			} else {
-				this.pluginApi.setVolume(volume);
+			var t = this,
+			    doc = t.node ? t.node.ownerDocument : _document2.default;
+
+			events = (0, _general.splitEvents)(events, t.id);
+			if (events.d) {
+				var eventList = events.d.split(' ');
+				for (var i = 0, total = eventList.length; i < total; i++) {
+					eventList[i].split('.').reduce(function (part, e) {
+						doc.removeEventListener(e, callback, false);
+						return e;
+					}, '');
+				}
 			}
-			this.volume = volume;
-		}
-	},
-	setMuted: function (muted) {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube') {
-				if (muted) {
-					this.pluginApi.mute();
-				} else {
-					this.pluginApi.unMute();
+			if (events.w) {
+				var _eventList2 = events.d.split(' ');
+				for (var _i2 = 0, _total2 = _eventList2.length; _i2 < _total2; _i2++) {
+					_eventList2[_i2].split('.').reduce(function (part, e) {
+						_window2.default.removeEventListener(e, callback, false);
+						return e;
+					}, '');
 				}
-				this.muted = muted;
-				this.dispatchEvent('volumechange');
-			} else {
-				this.pluginApi.setMuted(muted);
 			}
-			this.muted = muted;
 		}
-	},
+	}, {
+		key: 'buildposter',
+		value: function buildposter(player, controls, layers, media) {
+
+			var t = this,
+			    poster = _document2.default.createElement('div');
+
+			poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
+			layers.appendChild(poster);
 
-	// additional non-HTML5 methods
-	setVideoSize: function (width, height) {
-		
-		//if (this.pluginType == 'flash' || this.pluginType == 'silverlight') {
-			if (this.pluginElement && this.pluginElement.style) {
-				this.pluginElement.style.width = width + 'px';
-				this.pluginElement.style.height = height + 'px';
+			var posterUrl = player.media.getAttribute('poster');
+
+			// priority goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster)
+			if (player.options.poster !== '') {
+				posterUrl = player.options.poster;
 			}
-			if (this.pluginApi != null && this.pluginApi.setVideoSize) {
-				this.pluginApi.setVideoSize(width, height);
+
+			// second, try the real poster
+			if (posterUrl) {
+				t.setPoster(posterUrl);
+			} else {
+				poster.style.display = 'none';
 			}
-		//}
-	},
 
-	setFullscreen: function (fullscreen) {
-		if (this.pluginApi != null && this.pluginApi.setFullscreen) {
-			this.pluginApi.setFullscreen(fullscreen);
-		}
-	},
-	
-	enterFullScreen: function() {
-		if (this.pluginApi != null && this.pluginApi.setFullscreen) {
-			this.setFullscreen(true);
-		}		
-		
-	},
-	
-	exitFullScreen: function() {
-		if (this.pluginApi != null && this.pluginApi.setFullscreen) {
-			this.setFullscreen(false);
-		}
-	},	
+			media.addEventListener('play', function () {
+				poster.style.display = 'none';
+			});
 
-	// start: fake events
-	addEventListener: function (eventName, callback, bubble) {
-		this.events[eventName] = this.events[eventName] || [];
-		this.events[eventName].push(callback);
-	},
-	removeEventListener: function (eventName, callback) {
-		if (!eventName) { this.events = {}; return true; }
-		var callbacks = this.events[eventName];
-		if (!callbacks) return true;
-		if (!callback) { this.events[eventName] = []; return true; }
-		for (var i = 0; i < callbacks.length; i++) {
-			if (callbacks[i] === callback) {
-				this.events[eventName].splice(i, 1);
-				return true;
+			media.addEventListener('playing', function () {
+				poster.style.display = 'none';
+			});
+
+			if (player.options.showPosterWhenEnded && player.options.autoRewind) {
+				media.addEventListener('ended', function () {
+					poster.style.display = '';
+				});
 			}
-		}
-		return false;
-	},	
-	dispatchEvent: function (eventName) {
-		var i,
-			args,
-			callbacks = this.events[eventName];
 
-		if (callbacks) {
-			args = Array.prototype.slice.call(arguments, 1);
-			for (i = 0; i < callbacks.length; i++) {
-				callbacks[i].apply(null, args);
+			media.addEventListener('error', function () {
+				poster.style.display = 'none';
+			});
+
+			if (player.options.showPosterWhenPaused) {
+				media.addEventListener('pause', function () {
+					// To avoid displaying the poster when video ended, since it
+					// triggers a pause event as well
+					if (!media.ended) {
+						poster.style.display = '';
+					}
+				});
 			}
 		}
-	},
-	// end: fake events
-	
-	// fake DOM attribute methods
-	hasAttribute: function(name){
-		return (name in this.attributes);  
-	},
-	removeAttribute: function(name){
-		delete this.attributes[name];
-	},
-	getAttribute: function(name){
-		if (this.hasAttribute(name)) {
-			return this.attributes[name];
+	}, {
+		key: 'buildoverlays',
+		value: function buildoverlays(player, controls, layers, media) {
+
+			if (!player.isVideo) {
+				return;
+			}
+
+			var t = this,
+			    loading = _document2.default.createElement('div'),
+			    error = _document2.default.createElement('div'),
+
+			// this needs to come last so it's on top
+			bigPlay = _document2.default.createElement('div'),
+			    buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
+
+			loading.style.display = 'none'; // start out hidden
+			loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
+			loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
+			layers.appendChild(loading);
+
+			error.style.display = 'none';
+			error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
+			error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>';
+			layers.appendChild(error);
+
+			bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
+			bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0"' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
+			bigPlay.addEventListener('click', function () {
+				// Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay
+				// started and immediately stopped the video
+				if (t.options.clickToPlayPause) {
+
+					var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
+					    pressed = button.getAttribute('aria-pressed');
+
+					if (media.paused) {
+						media.play();
+					} else {
+						media.pause();
+					}
+
+					button.setAttribute('aria-pressed', !!pressed);
+				}
+			});
+			layers.appendChild(bigPlay);
+
+			if (t.media.rendererName !== null && (t.media.rendererName.match(/(youtube|facebook)/) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) {
+				bigPlay.style.display = 'none';
+			}
+
+			// show/hide big play button
+			media.addEventListener('play', function () {
+				bigPlay.style.display = 'none';
+				loading.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+				error.style.display = 'none';
+			});
+
+			media.addEventListener('playing', function () {
+				bigPlay.style.display = 'none';
+				loading.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+				error.style.display = 'none';
+			});
+
+			media.addEventListener('seeking', function () {
+				bigPlay.style.display = 'none';
+				loading.style.display = '';
+				if (buffer) {
+					buffer.style.display = '';
+				}
+			});
+
+			media.addEventListener('seeked', function () {
+				bigPlay.style.display = '';
+				loading.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = '';
+				}
+			});
+
+			media.addEventListener('pause', function () {
+				loading.style.display = 'none';
+				if (!_constants.IS_STOCK_ANDROID) {
+					bigPlay.style.display = '';
+				}
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+			});
+
+			media.addEventListener('waiting', function () {
+				loading.style.display = '';
+				if (buffer) {
+					buffer.style.display = '';
+				}
+			});
+
+			// show/hide loading
+			media.addEventListener('loadeddata', function () {
+				loading.style.display = '';
+				if (buffer) {
+					buffer.style.display = '';
+				}
+
+				// Firing the 'canplay' event after a timeout which isn't getting fired on some Android 4.1 devices
+				// (https://github.com/johndyer/mediaelement/issues/1305)
+				if (_constants.IS_ANDROID) {
+					media.canplayTimeout = setTimeout(function () {
+						if (_document2.default.createEvent) {
+							var evt = _document2.default.createEvent('HTMLEvents');
+							evt.initEvent('canplay', true, true);
+							return media.dispatchEvent(evt);
+						}
+					}, 300);
+				}
+			});
+			media.addEventListener('canplay', function () {
+				loading.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+				// Clear timeout inside 'loadeddata' to prevent 'canplay' from firing twice
+				clearTimeout(media.canplayTimeout);
+			});
+
+			// error handling
+			media.addEventListener('error', function (e) {
+				t._handleError(e);
+				loading.style.display = 'none';
+				bigPlay.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+				error.style.display = 'block';
+				error.querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = e.message;
+			});
+
+			media.addEventListener('keydown', function (e) {
+				t.onkeydown(player, media, e);
+			});
 		}
-		return '';
-	},
-	setAttribute: function(name, value){
-		this.attributes[name] = value;
-	},
+	}, {
+		key: 'buildkeyboard',
+		value: function buildkeyboard(player, controls, layers, media) {
 
-	remove: function() {
-		mejs.Utility.removeSwf(this.pluginElement.id);
-		mejs.MediaPluginBridge.unregisterPluginElement(this.pluginElement.id);
-	}
-};
+			var t = this;
 
-// Handles calls from Flash/Silverlight and reports them as native <video/audio> events and properties
-mejs.MediaPluginBridge = {
+			t.container.addEventListener('keydown', function () {
+				t.keyboardAction = true;
+			});
 
-	pluginMediaElements:{},
-	htmlMediaElements:{},
+			// listen for key presses
+			t.globalBind('keydown', function (event) {
+				var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
+				    target = t.media.closest('.' + t.options.classPrefix + 'container');
+				t.hasFocus = !!(container && target && container.id === target.id);
+				return t.onkeydown(player, media, event);
+			});
 
-	registerPluginElement: function (id, pluginMediaElement, htmlMediaElement) {
-		this.pluginMediaElements[id] = pluginMediaElement;
-		this.htmlMediaElements[id] = htmlMediaElement;
-	},
+			// check if someone clicked outside a player region, then kill its focus
+			t.globalBind('click', function (event) {
+				t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
+			});
+		}
+	}, {
+		key: 'onkeydown',
+		value: function onkeydown(player, media, e) {
 
-	unregisterPluginElement: function (id) {
-		delete this.pluginMediaElements[id];
-		delete this.htmlMediaElements[id];
-	},
+			if (player.hasFocus && player.options.enableKeyboard) {
+				// find a matching key
+				for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
+					var keyAction = player.options.keyActions[i];
 
-	// when Flash/Silverlight is ready, it calls out to this method
-	initPlugin: function (id) {
+					for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
+						if (e.keyCode === keyAction.keys[j]) {
+							keyAction.action(player, media, e.keyCode, e);
+							e.preventDefault();
+							e.stopPropagation();
+						}
+					}
+				}
+			}
 
-		var pluginMediaElement = this.pluginMediaElements[id],
-			htmlMediaElement = this.htmlMediaElements[id];
+			return true;
+		}
+	}, {
+		key: 'play',
+		value: function play() {
+			var t = this;
 
-		if (pluginMediaElement) {
-			// find the javascript bridge
-			switch (pluginMediaElement.pluginType) {
-				case "flash":
-					pluginMediaElement.pluginElement = pluginMediaElement.pluginApi = document.getElementById(id);
-					break;
-				case "silverlight":
-					pluginMediaElement.pluginElement = document.getElementById(pluginMediaElement.id);
-					pluginMediaElement.pluginApi = pluginMediaElement.pluginElement.Content.MediaElementJS;
-					break;
+			// only load if the current time is 0 to ensure proper playing
+			if (t.media.getCurrentTime() <= 0) {
+				t.load();
 			}
-	
-			if (pluginMediaElement.pluginApi != null && pluginMediaElement.success) {
-				pluginMediaElement.success(pluginMediaElement, htmlMediaElement);
+			t.media.play();
+		}
+	}, {
+		key: 'pause',
+		value: function pause() {
+			try {
+				this.media.pause();
+			} catch (e) {
+				
 			}
 		}
-	},
+	}, {
+		key: 'load',
+		value: function load() {
+			var t = this;
 
-	// receives events from Flash/Silverlight and sends them out as HTML5 media events
-	// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html
-	fireEvent: function (id, eventName, values) {
-
-		var
-			e,
-			i,
-			bufferedTime,
-			pluginMediaElement = this.pluginMediaElements[id];
-
-		if(!pluginMediaElement){
-            return;
-        }
-        
-		// fake event object to mimic real HTML media event.
-		e = {
-			type: eventName,
-			target: pluginMediaElement
-		};
+			if (!t.isLoaded) {
+				t.media.load();
+			}
 
-		// attach all values to element and event object
-		for (i in values) {
-			pluginMediaElement[i] = values[i];
-			e[i] = values[i];
+			t.isLoaded = true;
 		}
+	}, {
+		key: 'setMuted',
+		value: function setMuted(muted) {
+			this.media.setMuted(muted);
+		}
+	}, {
+		key: 'setCurrentTime',
+		value: function setCurrentTime(time) {
+			this.media.setCurrentTime(time);
+		}
+	}, {
+		key: 'getCurrentTime',
+		value: function getCurrentTime() {
+			return this.media.currentTime;
+		}
+	}, {
+		key: 'setVolume',
+		value: function setVolume(volume) {
+			this.media.setVolume(volume);
+		}
+	}, {
+		key: 'getVolume',
+		value: function getVolume() {
+			return this.media.volume;
+		}
+	}, {
+		key: 'setSrc',
+		value: function setSrc(src) {
+			var t = this,
+			    layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
 
-		// fake the newer W3C buffered TimeRange (loaded and total have been removed)
-		bufferedTime = values.bufferedTime || 0;
-
-		e.target.buffered = e.buffered = {
-			start: function(index) {
-				return 0;
-			},
-			end: function (index) {
-				return bufferedTime;
-			},
-			length: 1
-		};
+			if (layer) {
+				layer.remove();
+			}
 
-		pluginMediaElement.dispatchEvent(e.type, e);
-	}
-};
+			t.media.setSrc(src);
 
-/*
-Default options
-*/
-mejs.MediaElementDefaults = {
-	// allows testing on HTML5, flash, silverlight
-	// auto: attempts to detect what the browser can do
-	// auto_plugin: prefer plugins and then attempt native HTML5
-	// native: forces HTML5 playback
-	// shim: disallows HTML5, will attempt either Flash or Silverlight
-	// none: forces fallback view
-	mode: 'auto',
-	// remove or reorder to change plugin priority and availability
-	plugins: ['flash','silverlight','youtube','vimeo'],
-	// shows debug errors on screen
-	enablePluginDebug: false,
-	// use plugin for browsers that have trouble with Basic Authentication on HTTPS sites
-	httpsBasicAuthSite: false,
-	// overrides the type specified, useful for dynamic instantiation
-	type: '',
-	// path to Flash and Silverlight plugins
-	pluginPath: mejs.Utility.getScriptPath(['mediaelement.js','mediaelement.min.js','mediaelement-and-player.js','mediaelement-and-player.min.js']),
-	// name of flash file
-	flashName: 'flashmediaelement.swf',
-	// streamer for RTMP streaming
-	flashStreamer: '',
-	// turns on the smoothing filter in Flash
-	enablePluginSmoothing: false,
-	// enabled pseudo-streaming (seek) on .mp4 files
-	enablePseudoStreaming: false,
-	// start query parameter sent to server for pseudo-streaming
-	pseudoStreamingStartQueryParam: 'start',
-	// name of silverlight file
-	silverlightName: 'silverlightmediaelement.xap',
-	// default if the <video width> is not specified
-	defaultVideoWidth: 480,
-	// default if the <video height> is not specified
-	defaultVideoHeight: 270,
-	// overrides <video width>
-	pluginWidth: -1,
-	// overrides <video height>
-	pluginHeight: -1,
-	// additional plugin variables in 'key=value' form
-	pluginVars: [],	
-	// rate in milliseconds for Flash and Silverlight to fire the timeupdate event
-	// larger number is less accurate, but less strain on plugin->JavaScript bridge
-	timerRate: 250,
-	// initial volume for player
-	startVolume: 0.8,
-	success: function () { },
-	error: function () { }
-};
+			t.createIframeLayer();
+		}
+	}, {
+		key: 'remove',
+		value: function remove() {
 
-/*
-Determines if a browser supports the <video> or <audio> element
-and returns either the native element or a Flash/Silverlight version that
-mimics HTML5 MediaElement
-*/
-mejs.MediaElement = function (el, o) {
-	return mejs.HtmlMediaElementShim.create(el,o);
-};
+			var t = this,
+			    rendererName = t.media.rendererName;
 
-mejs.HtmlMediaElementShim = {
-
-	create: function(el, o) {
-		var
-			options = mejs.MediaElementDefaults,
-			htmlMediaElement = (typeof(el) == 'string') ? document.getElementById(el) : el,
-			tagName = htmlMediaElement.tagName.toLowerCase(),
-			isMediaTag = (tagName === 'audio' || tagName === 'video'),
-			src = (isMediaTag) ? htmlMediaElement.getAttribute('src') : htmlMediaElement.getAttribute('href'),
-			poster = htmlMediaElement.getAttribute('poster'),
-			autoplay =  htmlMediaElement.getAttribute('autoplay'),
-			preload =  htmlMediaElement.getAttribute('preload'),
-			controls =  htmlMediaElement.getAttribute('controls'),
-			playback,
-			prop;
-
-		// extend options
-		for (prop in o) {
-			options[prop] = o[prop];
-		}
-
-		// clean up attributes
-		src = 		(typeof src == 'undefined' 	|| src === null || src == '') ? null : src;		
-		poster =	(typeof poster == 'undefined' 	|| poster === null) ? '' : poster;
-		preload = 	(typeof preload == 'undefined' 	|| preload === null || preload === 'false') ? 'none' : preload;
-		autoplay = 	!(typeof autoplay == 'undefined' || autoplay === null || autoplay === 'false');
-		controls = 	!(typeof controls == 'undefined' || controls === null || controls === 'false');
-
-		// test for HTML5 and plugin capabilities
-		playback = this.determinePlayback(htmlMediaElement, options, mejs.MediaFeatures.supportsMediaTag, isMediaTag, src);
-		playback.url = (playback.url !== null) ? mejs.Utility.absolutizeUrl(playback.url) : '';
-
-		if (playback.method == 'native') {
-			// second fix for android
-			if (mejs.MediaFeatures.isBustedAndroid) {
-				htmlMediaElement.src = playback.url;
-				htmlMediaElement.addEventListener('click', function() {
-					htmlMediaElement.play();
-				}, false);
-			}
-		
-			// add methods to native HTMLMediaElement
-			return this.updateNative(playback, options, autoplay, preload);
-		} else if (playback.method !== '') {
-			// create plugin to mimic HTMLMediaElement
-			
-			return this.createPlugin( playback,  options, poster, autoplay, preload, controls);
-		} else {
-			// boo, no HTML5, no Flash, no Silverlight.
-			this.createErrorMessage( playback, options, poster );
-			
-			return this;
-		}
-	},
-	
-	determinePlayback: function(htmlMediaElement, options, supportsMediaTag, isMediaTag, src) {
-		var
-			mediaFiles = [],
-			i,
-			j,
-			k,
-			l,
-			n,
-			type,
-			result = { method: '', url: '', htmlMediaElement: htmlMediaElement, isVideo: (htmlMediaElement.tagName.toLowerCase() != 'audio')},
-			pluginName,
-			pluginVersions,
-			pluginInfo,
-			dummy,
-			media;
-			
-		// STEP 1: Get URL and type from <video src> or <source src>
-
-		// supplied type overrides <video type> and <source type>
-		if (typeof options.type != 'undefined' && options.type !== '') {
-			
-			// accept either string or array of types
-			if (typeof options.type == 'string') {
-				mediaFiles.push({type:options.type, url:src});
-			} else {
-				
-				for (i=0; i<options.type.length; i++) {
-					mediaFiles.push({type:options.type[i], url:src});
-				}
+			// Stop completely media playing
+			if (!t.media.paused) {
+				t.media.pause();
 			}
 
-		// test for src attribute first
-		} else if (src !== null) {
-			type = this.formatType(src, htmlMediaElement.getAttribute('type'));
-			mediaFiles.push({type:type, url:src});
+			var src = t.media.originalNode.getAttribute('src');
+			t.media.setSrc('');
 
-		// then test for <source> elements
-		} else {
-			// test <source> types to see if they are usable
-			for (i = 0; i < htmlMediaElement.childNodes.length; i++) {
-				n = htmlMediaElement.childNodes[i];
-				if (n.nodeType == 1 && n.tagName.toLowerCase() == 'source') {
-					src = n.getAttribute('src');
-					type = this.formatType(src, n.getAttribute('type'));
-					media = n.getAttribute('media');
-
-					if (!media || !window.matchMedia || (window.matchMedia && window.matchMedia(media).matches)) {
-						mediaFiles.push({type:type, url:src});
+			// invoke features cleanup
+			for (var featureIndex in t.options.features) {
+				var feature = t.options.features[featureIndex];
+				if (t['clean' + feature]) {
+					try {
+						t['clean' + feature](t);
+					} catch (e) {
+						// @todo: report control error
+						console.error('error cleaning ' + feature, e);
 					}
 				}
 			}
-		}
-		
-		// in the case of dynamicly created players
-		// check for audio types
-		if (!isMediaTag && mediaFiles.length > 0 && mediaFiles[0].url !== null && this.getTypeFromFile(mediaFiles[0].url).indexOf('audio') > -1) {
-			result.isVideo = false;
-		}
-		
-
-		// STEP 2: Test for playback method
-		
-		// special case for Android which sadly doesn't implement the canPlayType function (always returns '')
-		if (mejs.MediaFeatures.isBustedAndroid) {
-			htmlMediaElement.canPlayType = function(type) {
-				return (type.match(/video\/(mp4|m4v)/gi) !== null) ? 'maybe' : '';
-			};
-		}		
-		
-		// special case for Chromium to specify natively supported video codecs (i.e. WebM and Theora) 
-		if (mejs.MediaFeatures.isChromium) { 
-			htmlMediaElement.canPlayType = function(type) { 
-				return (type.match(/video\/(webm|ogv|ogg)/gi) !== null) ? 'maybe' : ''; 
-			}; 
-		}
 
-		// test for native playback first
-		if (supportsMediaTag && (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'native')  && !(mejs.MediaFeatures.isBustedNativeHTTPS && options.httpsBasicAuthSite === true)) {
-						
-			if (!isMediaTag) {
-
-				// create a real HTML5 Media Element 
-				dummy = document.createElement( result.isVideo ? 'video' : 'audio');			
-				htmlMediaElement.parentNode.insertBefore(dummy, htmlMediaElement);
-				htmlMediaElement.style.display = 'none';
-				
-				// use this one from now on
-				result.htmlMediaElement = htmlMediaElement = dummy;
-			}
-				
-			for (i=0; i<mediaFiles.length; i++) {
-				// normal check
-				if (mediaFiles[i].type == "video/m3u8" || htmlMediaElement.canPlayType(mediaFiles[i].type).replace(/no/, '') !== ''
-					// special case for Mac/Safari 5.0.3 which answers '' to canPlayType('audio/mp3') but 'maybe' to canPlayType('audio/mpeg')
-					|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== ''
-					// special case for m4a supported by detecting mp4 support
-					|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/m4a/,'mp4')).replace(/no/, '') !== '') {
-					result.method = 'native';
-					result.url = mediaFiles[i].url;
-					break;
+			// reset dimensions
+			var nativeWidth = t.node.getAttribute('width'),
+			    nativeHeight = t.node.getAttribute('height');
+			if (nativeWidth) {
+				if (nativeWidth.match('%') === null) {
+					nativeWidth = nativeWidth + 'px';
 				}
-			}			
-			
-			if (result.method === 'native') {
-				if (result.url !== null) {
-					htmlMediaElement.src = result.url;
-				}
-			
-				// if `auto_plugin` mode, then cache the native result but try plugins.
-				if (options.mode !== 'auto_plugin') {
-					return result;
+			} else {
+				nativeWidth = 'auto';
+			}
+			if (nativeHeight) {
+				if (nativeHeight.match('%') === null) {
+					nativeHeight = nativeHeight + 'px';
 				}
+			} else {
+				nativeHeight = 'auto';
 			}
-		}
+			t.node.style.width = nativeWidth;
+			t.node.style.height = nativeHeight;
 
-		// if native playback didn't work, then test plugins
-		if (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'shim') {
-			for (i=0; i<mediaFiles.length; i++) {
-				type = mediaFiles[i].type;
+			// grab video and put it back in place
+			if (!t.isDynamic) {
+				t.node.setAttribute('controls', true);
+				t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
 
-				// test all plugins in order of preference [silverlight, flash]
-				for (j=0; j<options.plugins.length; j++) {
+				// Remove `autoplay` (not worth bringing it back once player is destroyed)
+				delete t.node.autoplay;
 
-					pluginName = options.plugins[j];
-			
-					// test version of plugin (for future features)
-					pluginVersions = mejs.plugins[pluginName];				
-					
-					for (k=0; k<pluginVersions.length; k++) {
-						pluginInfo = pluginVersions[k];
-					
-						// test if user has the correct plugin version
-						
-						// for youtube/vimeo
-						if (pluginInfo.version == null || 
-							
-							mejs.PluginDetector.hasPluginVersion(pluginName, pluginInfo.version)) {
-
-							// test for plugin playback types
-							for (l=0; l<pluginInfo.types.length; l++) {
-								// find plugin that can play the type
-								if (type == pluginInfo.types[l]) {
-									result.method = pluginName;
-									result.url = mediaFiles[i].url;
-									return result;
-								}
-							}
-						}
-					}
+				// Reintegrate file if it can be played
+				if (t.media.canPlayType((0, _media.getTypeFromFile)(src))) {
+					t.node.setAttribute('src', src);
 				}
-			}
-		}
-		
-		// at this point, being in 'auto_plugin' mode implies that we tried plugins but failed.
-		// if we have native support then return that.
-		if (options.mode === 'auto_plugin' && result.method === 'native') {
-			return result;
-		}
 
-		// what if there's nothing to play? just grab the first available
-		if (result.method === '' && mediaFiles.length > 0) {
-			result.url = mediaFiles[0].url;
-		}
-
-		return result;
-	},
-
-	formatType: function(url, type) {
-		var ext;
+				// If <iframe>, remove overlay
+				if (rendererName.match(/iframe/i) !== null) {
+					var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
+					layer.remove();
+				}
 
-		// if no type is supplied, fake it with the extension
-		if (url && !type) {		
-			return this.getTypeFromFile(url);
-		} else {
-			// only return the mime part of the type in case the attribute contains the codec
-			// see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
-			// `video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`
-			
-			if (type && ~type.indexOf(';')) {
-				return type.substr(0, type.indexOf(';')); 
+				var node = t.node.cloneNode(true);
+				t.container.parentNode.insertBefore(node, t.container);
+				t.node.remove();
+				delete t.node;
 			} else {
-				return type;
+				t.container.parentNode.insertBefore(t.node, t.container);
 			}
-		}
-	},
-	
-	getTypeFromFile: function(url) {
-		url = url.split('?')[0];
-		var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
-		return (/(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(ext) ? 'video' : 'audio') + '/' + this.getTypeFromExtension(ext);
-	},
-	
-	getTypeFromExtension: function(ext) {
-		
-		switch (ext) {
-			case 'mp4':
-			case 'm4v':
-			case 'm4a':
-				return 'mp4';
-			case 'webm':
-			case 'webma':
-			case 'webmv':	
-				return 'webm';
-			case 'ogg':
-			case 'oga':
-			case 'ogv':	
-				return 'ogg';
-			default:
-				return ext;
-		}
-	},
-
-	createErrorMessage: function(playback, options, poster) {
-		var 
-			htmlMediaElement = playback.htmlMediaElement,
-			errorContainer = document.createElement('div');
-			
-		errorContainer.className = 'me-cannotplay';
-
-		try {
-			errorContainer.style.width = htmlMediaElement.width + 'px';
-			errorContainer.style.height = htmlMediaElement.height + 'px';
-		} catch (e) {}
-
-    if (options.customError) {
-      errorContainer.innerHTML = options.customError;
-    } else {
-      errorContainer.innerHTML = (poster !== '') ?
-        '<a href="' + playback.url + '"><img src="' + poster + '" width="100%" height="100%" /></a>' :
-        '<a href="' + playback.url + '"><span>' + mejs.i18n.t('Download File') + '</span></a>';
-    }
 
-		htmlMediaElement.parentNode.insertBefore(errorContainer, htmlMediaElement);
-		htmlMediaElement.style.display = 'none';
+			if (typeof t.media.destroy === 'function') {
+				t.media.destroy();
+			}
 
-		options.error(htmlMediaElement);
-	},
+			// Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to
+			// pause a non existent Flash API.
+			delete _mejs2.default.players[t.id];
 
-	createPlugin:function(playback, options, poster, autoplay, preload, controls) {
-		var 
-			htmlMediaElement = playback.htmlMediaElement,
-			width = 1,
-			height = 1,
-			pluginid = 'me_' + playback.method + '_' + (mejs.meIndex++),
-			pluginMediaElement = new mejs.PluginMediaElement(pluginid, playback.method, playback.url),
-			container = document.createElement('div'),
-			specialIEContainer,
-			node,
-			initVars;
-
-		// copy tagName from html media element
-		pluginMediaElement.tagName = htmlMediaElement.tagName
-
-		// copy attributes from html media element to plugin media element
-		for (var i = 0; i < htmlMediaElement.attributes.length; i++) {
-			var attribute = htmlMediaElement.attributes[i];
-			if (attribute.specified == true) {
-				pluginMediaElement.setAttribute(attribute.name, attribute.value);
-			}
-		}
-
-		// check for placement inside a <p> tag (sometimes WYSIWYG editors do this)
-		node = htmlMediaElement.parentNode;
-		while (node !== null && node.tagName.toLowerCase() !== 'body' && node.parentNode != null) {
-			if (node.parentNode.tagName.toLowerCase() === 'p') {
-				node.parentNode.parentNode.insertBefore(node, node.parentNode);
-				break;
+			if (_typeof(t.container) === 'object') {
+				var offscreen = t.container.parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');
+				offscreen.remove();
+				t.container.remove();
 			}
-			node = node.parentNode;
-		}
+			t.globalUnbind();
 
-		if (playback.isVideo) {
-			width = (options.pluginWidth > 0) ? options.pluginWidth : (options.videoWidth > 0) ? options.videoWidth : (htmlMediaElement.getAttribute('width') !== null) ? htmlMediaElement.getAttribute('width') : options.defaultVideoWidth;
-			height = (options.pluginHeight > 0) ? options.pluginHeight : (options.videoHeight > 0) ? options.videoHeight : (htmlMediaElement.getAttribute('height') !== null) ? htmlMediaElement.getAttribute('height') : options.defaultVideoHeight;
-		
-			// in case of '%' make sure it's encoded
-			width = mejs.Utility.encodeUrl(width);
-			height = mejs.Utility.encodeUrl(height);
-		
-		} else {
-			if (options.enablePluginDebug) {
-				width = 320;
-				height = 240;
-			}
+			delete t.media.player;
 		}
+	}]);
 
-		// register plugin
-		pluginMediaElement.success = options.success;
-		mejs.MediaPluginBridge.registerPluginElement(pluginid, pluginMediaElement, htmlMediaElement);
+	return MediaElementPlayer;
+}();
 
-		// add container (must be added to DOM before inserting HTML for IE)
-		container.className = 'me-plugin';
-		container.id = pluginid + '_container';
-		
-		if (playback.isVideo) {
-				htmlMediaElement.parentNode.insertBefore(container, htmlMediaElement);
-		} else {
-				document.body.insertBefore(container, document.body.childNodes[0]);
-		}
-
-		// flash/silverlight vars
-		initVars = [
-			'id=' + pluginid,
-			'isvideo=' + ((playback.isVideo) ? "true" : "false"),
-			'autoplay=' + ((autoplay) ? "true" : "false"),
-			'preload=' + preload,
-			'width=' + width,
-			'startvolume=' + options.startVolume,
-			'timerrate=' + options.timerRate,
-			'flashstreamer=' + options.flashStreamer,
-			'height=' + height,
-      'pseudostreamstart=' + options.pseudoStreamingStartQueryParam];
-
-		if (playback.url !== null) {
-			if (playback.method == 'flash') {
-				initVars.push('file=' + mejs.Utility.encodeUrl(playback.url));
-			} else {
-				initVars.push('file=' + playback.url);
-			}
-		}
-		if (options.enablePluginDebug) {
-			initVars.push('debug=true');
-		}
-		if (options.enablePluginSmoothing) {
-			initVars.push('smoothing=true');
-		}
-    if (options.enablePseudoStreaming) {
-      initVars.push('pseudostreaming=true');
-    }
-		if (controls) {
-			initVars.push('controls=true'); // shows controls in the plugin if desired
-		}
-		if (options.pluginVars) {
-			initVars = initVars.concat(options.pluginVars);
-		}		
-
-		switch (playback.method) {
-			case 'silverlight':
-				container.innerHTML =
-'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="' + pluginid + '" name="' + pluginid + '" width="' + width + '" height="' + height + '" class="mejs-shim">' +
-'<param name="initParams" value="' + initVars.join(',') + '" />' +
-'<param name="windowless" value="true" />' +
-'<param name="background" value="black" />' +
-'<param name="minRuntimeVersion" value="3.0.0.0" />' +
-'<param name="autoUpgrade" value="true" />' +
-'<param name="source" value="' + options.pluginPath + options.silverlightName + '" />' +
-'</object>';
-					break;
+_window2.default.MediaElementPlayer = MediaElementPlayer;
 
-			case 'flash':
-
-				if (mejs.MediaFeatures.isIE) {
-					specialIEContainer = document.createElement('div');
-					container.appendChild(specialIEContainer);
-					specialIEContainer.outerHTML =
-'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' +
-'id="' + pluginid + '" width="' + width + '" height="' + height + '" class="mejs-shim">' +
-'<param name="movie" value="' + options.pluginPath + options.flashName + '?x=' + (new Date()) + '" />' +
-'<param name="flashvars" value="' + initVars.join('&amp;') + '" />' +
-'<param name="quality" value="high" />' +
-'<param name="bgcolor" value="#000000" />' +
-'<param name="wmode" value="transparent" />' +
-'<param name="allowScriptAccess" value="always" />' +
-'<param name="allowFullScreen" value="true" />' +
-'<param name="scale" value="default" />' + 
-'</object>';
+exports.default = MediaElementPlayer;
 
-				} else {
+// turn into plugin
 
-					container.innerHTML =
-'<embed id="' + pluginid + '" name="' + pluginid + '" ' +
-'play="true" ' +
-'loop="false" ' +
-'quality="high" ' +
-'bgcolor="#000000" ' +
-'wmode="transparent" ' +
-'allowScriptAccess="always" ' +
-'allowFullScreen="true" ' +
-'type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" ' +
-'src="' + options.pluginPath + options.flashName + '" ' +
-'flashvars="' + initVars.join('&') + '" ' +
-'width="' + width + '" ' +
-'height="' + height + '" ' +
-'scale="default"' + 
-'class="mejs-shim"></embed>';
-				}
-				break;
-			
-			case 'youtube':
-			
-				
-				var videoId;
-				// youtu.be url from share button
-				if (playback.url.lastIndexOf("youtu.be") != -1) {
-					videoId = playback.url.substr(playback.url.lastIndexOf('/')+1);
-					if (videoId.indexOf('?') != -1) {
-						videoId = videoId.substr(0, videoId.indexOf('?'));
+(function ($) {
+
+	if (typeof $ !== 'undefined') {
+		$.fn.mediaelementplayer = function (options) {
+			if (options === false) {
+				this.each(function () {
+					var player = $(this).data('mediaelementplayer');
+					if (player) {
+						player.remove();
 					}
-				}
-				else {
-					videoId = playback.url.substr(playback.url.lastIndexOf('=')+1);
-				}
-				youtubeSettings = {
-						container: container,
-						containerId: container.id,
-						pluginMediaElement: pluginMediaElement,
-						pluginId: pluginid,
-						videoId: videoId,
-						height: height,
-						width: width	
-					};				
-				
-				if (mejs.PluginDetector.hasPluginVersion('flash', [10,0,0]) ) {
-					mejs.YouTubeApi.createFlash(youtubeSettings);
-				} else {
-					mejs.YouTubeApi.enqueueIframe(youtubeSettings);		
-				}
-				
-				break;
-			
-			// DEMO Code. Does NOT work.
-			case 'vimeo':
-				var player_id = pluginid + "_player";
-				pluginMediaElement.vimeoid = playback.url.substr(playback.url.lastIndexOf('/')+1);
-				
-				container.innerHTML ='<iframe src="//player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?api=1&portrait=0&byline=0&title=0&player_id=' + player_id + '" width="' + width +'" height="' + height +'" frameborder="0" class="mejs-shim" id="' + player_id + '"></iframe>';
-				if (typeof($f) == 'function') { // froogaloop available
-					var player = $f(container.childNodes[0]);
-					player.addEvent('ready', function() {
-						$.extend( player, {
-							playVideo: function() {
-								player.api( 'play' );
-							}, 
-							stopVideo: function() {
-								player.api( 'unload' );
-							}, 
-							pauseVideo: function() {
-								player.api( 'pause' );
-							}, 
-							seekTo: function( seconds ) {
-								player.api( 'seekTo', seconds );
-							}, 
-							setVolume: function( volume ) {
-								player.api( 'setVolume', volume );
-							}, 
-							setMuted: function( muted ) {
-								if( muted ) {
-									player.lastVolume = player.api( 'getVolume' );
-									player.api( 'setVolume', 0 );
-								} else {
-									player.api( 'setVolume', player.lastVolume );
-									delete player.lastVolume;
-								}
-							}
-						});
+					$(this).removeData('mediaelementplayer');
+				});
+			} else {
+				this.each(function () {
+					$(this).data('mediaelementplayer', new MediaElementPlayer(this, options));
+				});
+			}
+			return this;
+		};
 
-						function createEvent(player, pluginMediaElement, eventName, e) {
-							var obj = {
-								type: eventName,
-								target: pluginMediaElement
-							};
-							if (eventName == 'timeupdate') {
-								pluginMediaElement.currentTime = obj.currentTime = e.seconds;
-								pluginMediaElement.duration = obj.duration = e.duration;
-							}
-							pluginMediaElement.dispatchEvent(obj.type, obj);
-						}
+		$(_document2.default).ready(function () {
+			// auto enable using JSON attribute
+			$('.' + config.classPrefix + 'player').mediaelementplayer();
+		});
+	}
+})(_mejs2.default.$);
 
-						player.addEvent('play', function() {
-							createEvent(player, pluginMediaElement, 'play');
-							createEvent(player, pluginMediaElement, 'playing');
-						});
+},{"2":2,"23":23,"24":24,"25":25,"26":26,"28":28,"3":3,"4":4,"5":5,"6":6}],17:[function(_dereq_,module,exports){
+'use strict';
 
-						player.addEvent('pause', function() {
-							createEvent(player, pluginMediaElement, 'pause');
-						});
+var _window = _dereq_(3);
 
-						player.addEvent('finish', function() {
-							createEvent(player, pluginMediaElement, 'ended');
-						});
+var _window2 = _interopRequireDefault(_window);
 
-						player.addEvent('playProgress', function(e) {
-							createEvent(player, pluginMediaElement, 'timeupdate', e);
-						});
+var _document = _dereq_(2);
 
-						pluginMediaElement.pluginElement = container;
-						pluginMediaElement.pluginApi = player;
+var _document2 = _interopRequireDefault(_document);
 
-						// init mejs
-						mejs.MediaPluginBridge.initPlugin(pluginid);
-					});
-				}
-				else {
-					console.warn("You need to include froogaloop for vimeo to work");
-				}
-				break;			
-		}
-		// hide original element
-		htmlMediaElement.style.display = 'none';
-		// prevent browser from autoplaying when using a plugin
-		htmlMediaElement.removeAttribute('autoplay');
+var _mejs = _dereq_(6);
 
-		// FYI: options.success will be fired by the MediaPluginBridge
-		
-		return pluginMediaElement;
-	},
+var _mejs2 = _interopRequireDefault(_mejs);
 
-	updateNative: function(playback, options, autoplay, preload) {
-		
-		var htmlMediaElement = playback.htmlMediaElement,
-			m;
-		
-		
-		// add methods to video object to bring it into parity with Flash Object
-		for (m in mejs.HtmlMediaElement) {
-			htmlMediaElement[m] = mejs.HtmlMediaElement[m];
-		}
-
-		/*
-		Chrome now supports preload="none"
-		if (mejs.MediaFeatures.isChrome) {
-		
-			// special case to enforce preload attribute (Chrome doesn't respect this)
-			if (preload === 'none' && !autoplay) {
-			
-				// forces the browser to stop loading (note: fails in IE9)
-				htmlMediaElement.src = '';
-				htmlMediaElement.load();
-				htmlMediaElement.canceledPreload = true;
-
-				htmlMediaElement.addEventListener('play',function() {
-					if (htmlMediaElement.canceledPreload) {
-						htmlMediaElement.src = playback.url;
-						htmlMediaElement.load();
-						htmlMediaElement.play();
-						htmlMediaElement.canceledPreload = false;
-					}
-				}, false);
-			// for some reason Chrome forgets how to autoplay sometimes.
-			} else if (autoplay) {
-				htmlMediaElement.load();
-				htmlMediaElement.play();
-			}
-		}
-		*/
+var _renderer = _dereq_(7);
 
-		// fire success code
-		options.success(htmlMediaElement, htmlMediaElement);
-		
-		return htmlMediaElement;
-	}
-};
+var _general = _dereq_(25);
 
-/*
- - test on IE (object vs. embed)
- - determine when to use iframe (Firefox, Safari, Mobile) vs. Flash (Chrome, IE)
- - fullscreen?
-*/
+var _media = _dereq_(26);
 
-// YouTube Flash and Iframe API
-mejs.YouTubeApi = {
-	isIframeStarted: false,
-	isIframeLoaded: false,
-	loadIframeApi: function() {
-		if (!this.isIframeStarted) {
-			var tag = document.createElement('script');
-			tag.src = "//www.youtube.com/player_api";
-			var firstScriptTag = document.getElementsByTagName('script')[0];
-			firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
-			this.isIframeStarted = true;
-		}
-	},
-	iframeQueue: [],
-	enqueueIframe: function(yt) {
-		
-		if (this.isLoaded) {
-			this.createIframe(yt);
-		} else {
-			this.loadIframeApi();
-			this.iframeQueue.push(yt);
-		}
-	},
-	createIframe: function(settings) {
-		
-		var
-		pluginMediaElement = settings.pluginMediaElement,	
-		player = new YT.Player(settings.containerId, {
-			height: settings.height,
-			width: settings.width,
-			videoId: settings.videoId,
-			playerVars: {controls:0},
-			events: {
-				'onReady': function() {
-					
-					// hook up iframe object to MEjs
-					settings.pluginMediaElement.pluginApi = player;
-					
-					// init mejs
-					mejs.MediaPluginBridge.initPlugin(settings.pluginId);
-					
-					// create timer
-					setInterval(function() {
-						mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
-					}, 250);					
-				},
-				'onStateChange': function(e) {
-					
-					mejs.YouTubeApi.handleStateChange(e.data, player, pluginMediaElement);
-					
-				}
-			}
-		});
-	},
-	
-	createEvent: function (player, pluginMediaElement, eventName) {
-		var obj = {
-			type: eventName,
-			target: pluginMediaElement
-		};
+var _constants = _dereq_(23);
 
-		if (player && player.getDuration) {
-			
-			// time 
-			pluginMediaElement.currentTime = obj.currentTime = player.getCurrentTime();
-			pluginMediaElement.duration = obj.duration = player.getDuration();
-			
-			// state
-			obj.paused = pluginMediaElement.paused;
-			obj.ended = pluginMediaElement.ended;			
-			
-			// sound
-			obj.muted = player.isMuted();
-			obj.volume = player.getVolume() / 100;
-			
-			// progress
-			obj.bytesTotal = player.getVideoBytesTotal();
-			obj.bufferedBytes = player.getVideoBytesLoaded();
-			
-			// fake the W3C buffered TimeRange
-			var bufferedTime = obj.bufferedBytes / obj.bytesTotal * obj.duration;
-			
-			obj.target.buffered = obj.buffered = {
-				start: function(index) {
-					return 0;
-				},
-				end: function (index) {
-					return bufferedTime;
-				},
-				length: 1
-			};
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-		}
-		
-		// send event up the chain
-		pluginMediaElement.dispatchEvent(obj.type, obj);
-	},	
-	
-	iFrameReady: function() {
-		
-		this.isLoaded = true;
-		this.isIframeLoaded = true;
-		
-		while (this.iframeQueue.length > 0) {
-			var settings = this.iframeQueue.pop();
-			this.createIframe(settings);
-		}	
-	},
-	
-	// FLASH!
-	flashPlayers: {},
-	createFlash: function(settings) {
-		
-		this.flashPlayers[settings.pluginId] = settings;
-		
-		/*
-		settings.container.innerHTML =
-			'<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid=' + settings.pluginId  + '&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0" ' +
-				'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; " class="mejs-shim">' +
-				'<param name="allowScriptAccess" value="always">' +
-				'<param name="wmode" value="transparent">' +
-			'</object>';
-		*/
-
-		var specialIEContainer,
-			youtubeUrl = '//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid=' + settings.pluginId  + '&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0';
-			
-		if (mejs.MediaFeatures.isIE) {
-			
-			specialIEContainer = document.createElement('div');
-			settings.container.appendChild(specialIEContainer);
-			specialIEContainer.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' +
-'id="' + settings.pluginId + '" width="' + settings.width + '" height="' + settings.height + '" class="mejs-shim">' +
-	'<param name="movie" value="' + youtubeUrl + '" />' +
-	'<param name="wmode" value="transparent" />' +
-	'<param name="allowScriptAccess" value="always" />' +
-	'<param name="allowFullScreen" value="true" />' +
-'</object>';
+/**
+ * Native M(PEG)-Dash renderer
+ *
+ * Uses dash.js, a reference client implementation for the playback of M(PEG)-DASH via Javascript and compliant browsers.
+ * It relies on HTML5 video and MediaSource Extensions for playback.
+ * This renderer integrates new events associated with mpd files.
+ * @see https://github.com/Dash-Industry-Forum/dash.js
+ *
+ */
+var NativeDash = {
+	/**
+  * @type {Boolean}
+  */
+	isMediaLoaded: false,
+	/**
+  * @type {Array}
+  */
+	creationQueue: [],
+
+	/**
+  * Create a queue to prepare the loading of an DASH source
+  *
+  * @param {Object} settings - an object with settings needed to load an DASH player instance
+  */
+	prepareSettings: function prepareSettings(settings) {
+		if (NativeDash.isLoaded) {
+			NativeDash.createInstance(settings);
 		} else {
-		settings.container.innerHTML =
-			'<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="' + youtubeUrl + '" ' +
-				'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; " class="mejs-shim">' +
-				'<param name="allowScriptAccess" value="always">' +
-				'<param name="wmode" value="transparent">' +
-			'</object>';
-		}		
-		
-	},
-	
-	flashReady: function(id) {
-		var
-			settings = this.flashPlayers[id],
-			player = document.getElementById(id),
-			pluginMediaElement = settings.pluginMediaElement;
-		
-		// hook up and return to MediaELementPlayer.success	
-		pluginMediaElement.pluginApi = 
-		pluginMediaElement.pluginElement = player;
-		mejs.MediaPluginBridge.initPlugin(id);
-		
-		// load the youtube video
-		player.cueVideoById(settings.videoId);
-		
-		var callbackName = settings.containerId + '_callback';
-		
-		window[callbackName] = function(e) {
-			mejs.YouTubeApi.handleStateChange(e, player, pluginMediaElement);
-		}
-		
-		player.addEventListener('onStateChange', callbackName);
-		
-		setInterval(function() {
-			mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
-		}, 250);
-		
-		mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'canplay');
+			NativeDash.loadScript(settings);
+			NativeDash.creationQueue.push(settings);
+		}
 	},
-	
-	handleStateChange: function(youTubeState, player, pluginMediaElement) {
-		switch (youTubeState) {
-			case -1: // not started
-				pluginMediaElement.paused = true;
-				pluginMediaElement.ended = true;
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'loadedmetadata');
-				//createYouTubeEvent(player, pluginMediaElement, 'loadeddata');
-				break;
-			case 0:
-				pluginMediaElement.paused = false;
-				pluginMediaElement.ended = true;
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'ended');
-				break;
-			case 1:
-				pluginMediaElement.paused = false;
-				pluginMediaElement.ended = false;				
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'play');
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'playing');
-				break;
-			case 2:
-				pluginMediaElement.paused = true;
-				pluginMediaElement.ended = false;				
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'pause');
-				break;
-			case 3: // buffering
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'progress');
-				break;
-			case 5:
-				// cued?
-				break;						
-			
-		}			
-		
-	}
-}
-// IFRAME
-function onYouTubePlayerAPIReady() {
-	mejs.YouTubeApi.iFrameReady();
-}
-// FLASH
-function onYouTubePlayerReady(id) {
-	mejs.YouTubeApi.flashReady(id);
-}
 
-window.mejs = mejs;
-window.MediaElement = mejs.MediaElement;
+	/**
+  * Load dash.mediaplayer.js script on the header of the document
+  *
+  * @param {Object} settings - an object with settings needed to load an DASH player instance
+  */
+	loadScript: function loadScript(settings) {
 
-/*!
- * Adds Internationalization and localization to mediaelement.
- *
- * This file does not contain translations, you have to add the manually.
- * The schema is always the same: me-i18n-locale-[ISO_639-1 Code].js
- *
- * Examples are provided both for german and chinese translation.
- *
- *
- * What is the concept beyond i18n?
- *   http://en.wikipedia.org/wiki/Internationalization_and_localization
- *
- * What langcode should i use?
- *   http://en.wikipedia.org/wiki/ISO_639-1
- *
- *
- * License?
- *
- *   The i18n file uses methods from the Drupal project (drupal.js):
- *     - i18n.methods.t() (modified)
- *     - i18n.methods.checkPlain() (full copy)
- *
- *   The Drupal project is (like mediaelementjs) licensed under GPLv2.
- *    - http://drupal.org/licensing/faq/#q1
- *    - https://github.com/johndyer/mediaelement
- *    - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- *
- * @author
- *   Tim Latz (latz.tim@gmail.com)
- *
- *
- * @params
- *  - context - document, iframe ..
- *  - exports - CommonJS, window ..
- *
- */
-;(function(context, exports, undefined) {
-    "use strict";
-    var i18n = {
-        "locale": {
-            "language" : '',
-            "strings" : {}
-        },
-        "methods" : {}
-    };
-// start i18n
-
-
-    /**
-     * Get language, fallback to browser's language if empty
-     */
-    i18n.getLanguage = function () {
-        var language = i18n.locale.language || window.navigator.userLanguage || window.navigator.language;
-        // convert to iso 639-1 (2-letters, lower case)
-        return language.substr(0, 2).toLowerCase();
-    };
-
-    // i18n fixes for compatibility with WordPress
-    if ( typeof mejsL10n != 'undefined' ) {
-        i18n.locale.language = mejsL10n.language;
-    }
+		// Skip script loading since it is already loaded
+		if (typeof dashjs !== 'undefined') {
+			NativeDash.createInstance(settings);
+		} else if (!NativeDash.isScriptLoaded) {
+			(function () {
 
+				settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.dashjs.org/latest/dash.mediaplayer.min.js';
 
+				var script = _document2.default.createElement('script'),
+				    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
 
-    /**
-     * Encode special characters in a plain-text string for display as HTML.
-     */
-    i18n.methods.checkPlain = function (str) {
-        var character, regex,
-        replace = {
-            '&': '&amp;',
-            '"': '&quot;',
-            '<': '&lt;',
-            '>': '&gt;'
-        };
-        str = String(str);
-        for (character in replace) {
-            if (replace.hasOwnProperty(character)) {
-                regex = new RegExp(character, 'g');
-                str = str.replace(regex, replace[character]);
-            }
-        }
-        return str;
-    };
-
-    /**
-     * Translate strings to the page language or a given language.
-     *
-     *
-     * @param str
-     *   A string containing the English string to translate.
-     *
-     * @param options
-     *   - 'context' (defaults to the default context): The context the source string
-     *     belongs to.
-     *
-     * @return
-     *   The translated string, escaped via i18n.methods.checkPlain()
-     */
-    i18n.methods.t = function (str, options) {
-
-        // Fetch the localized version of the string.
-        if (i18n.locale.strings && i18n.locale.strings[options.context] && i18n.locale.strings[options.context][str]) {
-            str = i18n.locale.strings[options.context][str];
-        }
-
-        return i18n.methods.checkPlain(str);
-    };
-
-
-    /**
-     * Wrapper for i18n.methods.t()
-     *
-     * @see i18n.methods.t()
-     * @throws InvalidArgumentException
-     */
-    i18n.t = function(str, options) {
-
-        if (typeof str === 'string' && str.length > 0) {
-
-            // check every time due language can change for
-            // different reasons (translation, lang switcher ..)
-            var language = i18n.getLanguage();
-
-            options = options || {
-                "context" : language
-            };
-
-            return i18n.methods.t(str, options);
-        }
-        else {
-            throw {
-                "name" : 'InvalidArgumentException',
-                "message" : 'First argument is either not a string or empty.'
-            };
-        }
-    };
-
-// end i18n
-    exports.i18n = i18n;
-}(document, mejs));
-
-// i18n fixes for compatibility with WordPress
-;(function(exports, undefined) {
-
-    "use strict";
-
-    if ( typeof mejsL10n != 'undefined' ) {
-        exports[mejsL10n.language] = mejsL10n.strings;
-    }
+				var done = false;
 
-}(mejs.i18n.locale.strings));
+				script.src = settings.options.path;
 
-/*!
- * This is a i18n.locale language object.
- *
- * German translation by Tim Latz, latz.tim@gmail.com
- *
- * @author
- *   Tim Latz (latz.tim@gmail.com)
- *
- * @see
- *   me-i18n.js
- *
- * @params
- *  - exports - CommonJS, window ..
- */
-;(function(exports, undefined) {
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function () {
+					if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
+						done = true;
+						NativeDash.mediaReady();
+						script.onload = script.onreadystatechange = null;
+					}
+				};
+
+				firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
 
-    "use strict";
+				NativeDash.isScriptLoaded = true;
+			})();
+		}
+	},
 
-    if (typeof exports.de === 'undefined') {
-        exports.de = {
-            "Fullscreen" : "Vollbild",
-            "Go Fullscreen" : "Vollbild an",
-            "Turn off Fullscreen" : "Vollbild aus",
-            "Close" : "Schließen"
-        };
-    }
+	/**
+  * Process queue of DASH player creation
+  *
+  */
+	mediaReady: function mediaReady() {
 
-}(mejs.i18n.locale.strings));
-/*!
- * This is a i18n.locale language object.
- *
- * Traditional chinese translation by Tim Latz, latz.tim@gmail.com
- *
- * @author
- *   Tim Latz (latz.tim@gmail.com)
- *
- * @see
- *   me-i18n.js
- *
- * @params
- *  - exports - CommonJS, window ..
- */
-;(function(exports, undefined) {
+		NativeDash.isLoaded = true;
+		NativeDash.isScriptLoaded = true;
 
-    "use strict";
+		while (NativeDash.creationQueue.length > 0) {
+			var settings = NativeDash.creationQueue.pop();
+			NativeDash.createInstance(settings);
+		}
+	},
 
-    if (typeof exports.zh === 'undefined') {
-        exports.zh = {
-            "Fullscreen" : "全螢幕",
-            "Go Fullscreen" : "全屏模式",
-            "Turn off Fullscreen" : "退出全屏模式",
-            "Close" : "關閉"
-        };
-    }
+	/**
+  * Create a new instance of DASH player and trigger a custom event to initialize it
+  *
+  * @param {Object} settings - an object with settings needed to instantiate DASH object
+  */
+	createInstance: function createInstance(settings) {
 
-}(mejs.i18n.locale.strings));
+		var player = dashjs.MediaPlayer().create();
+		_window2.default['__ready__' + settings.id](player);
+	}
+};
 
+var DashNativeRenderer = {
+	name: 'native_dash',
 
-/*!
- * MediaElementPlayer
- * http://mediaelementjs.com/
- *
- * Creates a controller bar for HTML5 <video> add <audio> tags
- * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
- *
- * Copyright 2010-2013, John Dyer (http://j.hn/)
- * License: MIT
- *
- */
-if (typeof jQuery != 'undefined') {
-	mejs.$ = jQuery;
-} else if (typeof ender != 'undefined') {
-	mejs.$ = ender;
-}
-(function ($) {
+	options: {
+		prefix: 'native_dash',
+		dash: {
+			// Special config: used to set the local path/URL of dash.js player library
+			path: '//cdn.dashjs.org/latest/dash.mediaplayer.min.js',
+			debug: false
+		}
+	},
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {Boolean}
+  */
+	canPlayType: function canPlayType(type) {
+		return _constants.HAS_MSE && ['application/dash+xml'].includes(type);
+	},
 
-	// default player values
-	mejs.MepDefaults = {
-		// url to poster (to fix iOS 3.x)
-		poster: '',
-		// When the video is ended, we can show the poster.
-		showPosterWhenEnded: false,
-		// default if the <video width> is not specified
-		defaultVideoWidth: 480,
-		// default if the <video height> is not specified
-		defaultVideoHeight: 270,
-		// if set, overrides <video width>
-		videoWidth: -1,
-		// if set, overrides <video height>
-		videoHeight: -1,
-		// default if the user doesn't specify
-		defaultAudioWidth: 400,
-		// default if the user doesn't specify
-		defaultAudioHeight: 30,
-
-		// default amount to move back when back key is pressed
-		defaultSeekBackwardInterval: function(media) {
-			return (media.duration * 0.05);
-		},
-		// default amount to move forward when forward key is pressed
-		defaultSeekForwardInterval: function(media) {
-			return (media.duration * 0.05);
-		},
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var originalNode = mediaElement.originalNode,
+		    id = mediaElement.id + '_' + options.prefix,
+		    preload = originalNode.getAttribute('preload'),
+		    autoplay = originalNode.autoplay;
+
+		var node = null,
+		    dashPlayer = null;
+
+		node = originalNode.cloneNode(true);
+		options = Object.assign(options, mediaElement.options);
+
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			node['get' + capName] = function () {
+				return dashPlayer !== null ? node[propName] : null;
+			};
 
-		// set dimensions via JS instead of CSS
-		setDimensions: true,
-
-		// width of audio player
-		audioWidth: -1,
-		// height of audio player
-		audioHeight: -1,
-		// initial volume when the player starts (overrided by user cookie)
-		startVolume: 0.8,
-		// useful for <audio> player loops
-		loop: false,
-		// rewind to beginning when media ends
-                autoRewind: true,
-		// resize to media dimensions
-		enableAutosize: true,
-		// forces the hour marker (##:00:00)
-		alwaysShowHours: false,
-
-		// show framecount in timecode (##:00:00:00)
-		showTimecodeFrameCount: false,
-		// used when showTimecodeFrameCount is set to true
-		framesPerSecond: 25,
-
-		// automatically calculate the width of the progress bar based on the sizes of other elements
-		autosizeProgress : true,
-		// Hide controls when playing and mouse is not over the video
-		alwaysShowControls: false,
-		// Display the video control
-		hideVideoControlsOnLoad: false,
-		// Enable click video element to toggle play/pause
-		clickToPlayPause: true,
-		// force iPad's native controls
-		iPadUseNativeControls: false,
-		// force iPhone's native controls
-		iPhoneUseNativeControls: false,
-		// force Android's native controls
-		AndroidUseNativeControls: false,
-		// features to show
-		features: ['playpause','current','progress','duration','tracks','volume','fullscreen'],
-		// only for dynamic
-		isVideo: true,
-
-		// turns keyboard support on and off for this instance
-		enableKeyboard: true,
-
-		// whenthis player starts, it will pause other players
-		pauseOtherPlayers: true,
-
-		// array of keyboard actions such as play pause
-		keyActions: [
-				{
-						keys: [
-								32, // SPACE
-								179 // GOOGLE play/pause button
-							  ],
-						action: function(player, media) {
-								if (media.paused || media.ended) {
-										player.play();
-								} else {
-										player.pause();
-								}
-						}
-				},
-				{
-						keys: [38], // UP
-						action: function(player, media) {
-								player.container.find('.mejs-volume-slider').css('display','block');
-								if (player.isVideo) {
-										player.showControls();
-										player.startControlsTimer();
-								}
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					if (dashPlayer !== null) {
+						if (propName === 'src') {
 
-								var newVolume = Math.min(media.volume + 0.1, 1);
-								media.setVolume(newVolume);
+							dashPlayer.attachSource(value);
+							if (autoplay) {
+								node.play();
+							}
 						}
-				},
-				{
-						keys: [40], // DOWN
-						action: function(player, media) {
-								player.container.find('.mejs-volume-slider').css('display','block');
-								if (player.isVideo) {
-										player.showControls();
-										player.startControlsTimer();
-								}
 
-								var newVolume = Math.max(media.volume - 0.1, 0);
-								media.setVolume(newVolume);
-						}
-				},
-				{
-						keys: [
-								37, // LEFT
-								227 // Google TV rewind
-						],
-						action: function(player, media) {
-								if (!isNaN(media.duration) && media.duration > 0) {
-										if (player.isVideo) {
-												player.showControls();
-												player.startControlsTimer();
-										}
-
-										// 5%
-										var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);
-										media.setCurrentTime(newTime);
-								}
-						}
-				},
-				{
-						keys: [
-								39, // RIGHT
-								228 // Google TV forward
-						],
-						action: function(player, media) {
-								if (!isNaN(media.duration) && media.duration > 0) {
-										if (player.isVideo) {
-												player.showControls();
-												player.startControlsTimer();
-										}
-
-										// 5%
-										var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);
-										media.setCurrentTime(newTime);
-								}
-						}
-				},
-				{
-						keys: [70], // F
-						action: function(player, media) {
-								if (typeof player.enterFullScreen != 'undefined') {
-										if (player.isFullScreen) {
-												player.exitFullScreen();
-										} else {
-												player.enterFullScreen();
-										}
-								}
-						}
-				},
-				{
-						keys: [77], // M
-						action: function(player, media) {
-								player.container.find('.mejs-volume-slider').css('display','block');
-								if (player.isVideo) {
-										player.showControls();
-										player.startControlsTimer();
-								}
-								if (player.media.muted) {
-										player.setMuted(false);
-								} else {
-										player.setMuted(true);
-								}
-						}
+						node[propName] = value;
+					}
 				}
-		]
-	};
+			};
+		};
 
-	mejs.mepIndex = 0;
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
 
-	mejs.players = {};
+		// Initial method to register all M-Dash events
+		_window2.default['__ready__' + id] = function (_dashPlayer) {
 
-	// wraps a MediaElement object in player controls
-	mejs.MediaElementPlayer = function(node, o) {
-		// enforce object, even without "new" (via John Resig)
-		if ( !(this instanceof mejs.MediaElementPlayer) ) {
-			return new mejs.MediaElementPlayer(node, o);
-		}
+			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
 
-		var t = this;
+			dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug);
+			dashPlayer.setAutoPlay(preload && preload === 'auto' || autoplay);
+			dashPlayer.setScheduleWhilePaused(preload && preload === 'auto' || autoplay);
 
-		// these will be reset after the MediaElement.success fires
-		t.$media = t.$node = $(node);
-		t.node = t.media = t.$media[0];
+			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+			    dashEvents = dashjs.MediaPlayer.events,
+			    assignEvents = function assignEvents(eventName) {
 
-		// check for existing player
-		if (typeof t.node.player != 'undefined') {
-			return t.node.player;
-		} else {
-			// attach player to DOM node for reference
-			t.node.player = t;
-		}
+				if (eventName === 'loadedmetadata') {
+					dashPlayer.initialize(node, node.src, false);
+				}
 
+				node.addEventListener(eventName, function (e) {
+					var event = _document2.default.createEvent('HTMLEvents');
+					event.initEvent(e.type, e.bubbles, e.cancelable);
+					mediaElement.dispatchEvent(event);
+				});
+			};
 
-		// try to get options from data-mejsoptions
-		if (typeof o == 'undefined') {
-			o = t.$node.data('mejsoptions');
+			for (var _i = 0, _total = events.length; _i < _total; _i++) {
+				assignEvents(events[_i]);
+			}
+
+			/**
+    * Custom M(PEG)-DASH events
+    *
+    * These events can be attached to the original node using addEventListener and the name of the event,
+    * not using dashjs.MediaPlayer.events object
+    * @see http://cdn.dashjs.org/latest/jsdoc/MediaPlayerEvents.html
+    */
+			var assignMdashEvents = function assignMdashEvents(e) {
+				var event = (0, _general.createEvent)(e.type, node);
+				event.data = e;
+				mediaElement.dispatchEvent(event);
+
+				if (e.type.toLowerCase() === 'error') {
+					console.error(e);
+				}
+			};
+
+			for (var eventType in dashEvents) {
+				if (dashEvents.hasOwnProperty(eventType)) {
+					dashPlayer.on(dashEvents[eventType], assignMdashEvents);
+				}
+			}
+		};
+
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
+			}
 		}
 
-		// extend default options
-		t.options = $.extend({},mejs.MepDefaults,o);
+		node.setAttribute('id', id);
 
-		// unique ID
-		t.id = 'mep_' + mejs.mepIndex++;
+		originalNode.parentNode.insertBefore(node, originalNode);
+		originalNode.autoplay = false;
+		originalNode.style.display = 'none';
 
-		// add to player array (for focus events)
-		mejs.players[t.id] = t;
+		NativeDash.prepareSettings({
+			options: options.dash,
+			id: id
+		});
 
-		// start up
-		t.init();
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
+		};
 
-		return t;
-	};
+		node.hide = function () {
+			node.pause();
+			node.style.display = 'none';
+			return node;
+		};
+
+		node.show = function () {
+			node.style.display = '';
+			return node;
+		};
 
-	// actual player
-	mejs.MediaElementPlayer.prototype = {
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
 
-		hasFocus: false,
+		return node;
+	}
+};
 
-		controlsAreVisible: true,
+/**
+ * Register Native M(PEG)-Dash type based on URL structure
+ *
+ */
+_media.typeChecks.push(function (url) {
+	url = url.toLowerCase();
+	return url.includes('.mpd') ? 'application/dash+xml' : null;
+});
 
-		init: function() {
+_renderer.renderer.add(DashNativeRenderer);
 
-			var
-				t = this,
-				mf = mejs.MediaFeatures,
-				// options for MediaElement (shim)
-				meOptions = $.extend(true, {}, t.options, {
-					success: function(media, domNode) { t.meReady(media, domNode); },
-					error: function(e) { t.handleError(e);}
-				}),
-				tagName = t.media.tagName.toLowerCase();
+},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],18:[function(_dereq_,module,exports){
+'use strict';
 
-			t.isDynamic = (tagName !== 'audio' && tagName !== 'video');
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.PluginDetector = undefined;
 
-			if (t.isDynamic) {
-				// get video from src or href?
-				t.isVideo = t.options.isVideo;
-			} else {
-				t.isVideo = (tagName !== 'audio' && t.options.isVideo);
-			}
+var _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; };
 
-			// use native controls in iPad, iPhone, and Android
-			if ((mf.isiPad && t.options.iPadUseNativeControls) || (mf.isiPhone && t.options.iPhoneUseNativeControls)) {
+var _window = _dereq_(3);
 
-				// add controls and stop
-				t.$media.attr('controls', 'controls');
+var _window2 = _interopRequireDefault(_window);
 
-				// attempt to fix iOS 3 bug
-				//t.$media.removeAttr('poster');
-                                // no Issue found on iOS3 -ttroxell
+var _document = _dereq_(2);
 
-				// override Apple's autoplay override for iPads
-				if (mf.isiPad && t.media.getAttribute('autoplay') !== null) {
-					t.play();
-				}
+var _document2 = _interopRequireDefault(_document);
 
-			} else if (mf.isAndroid && t.options.AndroidUseNativeControls) {
+var _mejs = _dereq_(6);
 
-				// leave default player
+var _mejs2 = _interopRequireDefault(_mejs);
 
-			} else {
+var _i18n = _dereq_(4);
 
-				// DESKTOP: use MediaElementPlayer controls
+var _i18n2 = _interopRequireDefault(_i18n);
 
-				// remove native controls
-				t.$media.removeAttr('controls');
+var _renderer = _dereq_(7);
 
-				// build container
-				t.container =
-					$('<div id="' + t.id + '" class="mejs-container ' + (mejs.MediaFeatures.svg ? 'svg' : 'no-svg') + '">'+
-						'<div class="mejs-inner">'+
-							'<div class="mejs-mediaelement"></div>'+
-							'<div class="mejs-layers"></div>'+
-							'<div class="mejs-controls"></div>'+
-							'<div class="mejs-clear"></div>'+
-						'</div>' +
-					'</div>')
-					.addClass(t.$media[0].className)
-					.insertBefore(t.$media);
+var _general = _dereq_(25);
 
-				// add classes for user and content
-				t.container.addClass(
-					(mf.isAndroid ? 'mejs-android ' : '') +
-					(mf.isiOS ? 'mejs-ios ' : '') +
-					(mf.isiPad ? 'mejs-ipad ' : '') +
-					(mf.isiPhone ? 'mejs-iphone ' : '') +
-					(t.isVideo ? 'mejs-video ' : 'mejs-audio ')
-				);
+var _constants = _dereq_(23);
 
+var _media = _dereq_(26);
 
-				// move the <video/video> tag into the right spot
-				if (mf.isiOS) {
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-					// sadly, you can't move nodes in iOS, so we have to destroy and recreate it!
-					var $newMedia = t.$media.clone();
+/**
+ * Shim that falls back to Flash if a media type is not supported.
+ *
+ * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE),
+ * will play using Flash.
+ */
 
-					t.container.find('.mejs-mediaelement').append($newMedia);
+/**
+ * Core detector, plugins are added below
+ *
+ */
+var PluginDetector = exports.PluginDetector = {
+	/**
+  * Cached version numbers
+  * @type {Array}
+  */
+	plugins: [],
 
-					t.$media.remove();
-					t.$node = t.$media = $newMedia;
-					t.node = t.media = $newMedia[0]
+	/**
+  * Test a plugin version number
+  * @param {String} plugin - In this scenario 'flash' will be tested
+  * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision)
+  * @return {Boolean}
+  */
+	hasPluginVersion: function hasPluginVersion(plugin, v) {
+		var pv = PluginDetector.plugins[plugin];
+		v[1] = v[1] || 0;
+		v[2] = v[2] || 0;
+		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];
+	},
 
-				} else {
+	/**
+  * Detect plugin and store its version number
+  *
+  * @see PluginDetector.detectPlugin
+  * @param {String} p
+  * @param {String} pluginName
+  * @param {String} mimeType
+  * @param {String} activeX
+  * @param {Function} axDetect
+  */
+	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
+		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
+	},
 
-					// normal way of moving it into place (doesn't work on iOS)
-					t.container.find('.mejs-mediaelement').append(t.$media);
+	/**
+  * Obtain version number from the mime-type (all but IE) or ActiveX (IE)
+  *
+  * @param {String} pluginName
+  * @param {String} mimeType
+  * @param {String} activeX
+  * @param {Function} axDetect
+  * @return {int[]}
+  */
+	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
+
+		var version = [0, 0, 0],
+		    description = void 0,
+		    ax = void 0;
+
+		// Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed
+		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
+			description = _constants.NAV.plugins[pluginName].description;
+			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
+				version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
+				for (var i = 0, total = version.length; i < total; i++) {
+					version[i] = parseInt(version[i].match(/\d+/), 10);
+				}
+			}
+			// Internet Explorer / ActiveX
+		} else if (_window2.default.ActiveXObject !== undefined) {
+			try {
+				ax = new ActiveXObject(activeX);
+				if (ax) {
+					version = axDetect(ax);
 				}
+			} catch (e) {
+				
+			}
+		}
+		return version;
+	}
+};
 
-				// find parts
-				t.controls = t.container.find('.mejs-controls');
-				t.layers = t.container.find('.mejs-layers');
+/**
+ * Add Flash detection
+ *
+ */
+PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
+	// adapted from SWFObject
+	var version = [],
+	    d = ax.GetVariable("$version");
 
-				// determine the size
+	if (d) {
+		d = d.split(" ")[1].split(",");
+		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
+	}
+	return version;
+});
 
-				/* size priority:
-					(1) videoWidth (forced),
-					(2) style="width;height;"
-					(3) width attribute,
-					(4) defaultVideoWidth (for unspecified cases)
-				*/
+var FlashMediaElementRenderer = {
+
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var flash = {};
+
+		// store main variable
+		flash.options = options;
+		flash.id = mediaElement.id + '_' + flash.options.prefix;
+		flash.mediaElement = mediaElement;
+
+		// insert data
+		flash.flashState = {};
+		flash.flashApi = null;
+		flash.flashApiStack = [];
+
+		// mediaElements for get/set
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+
+			// add to flash state that we will store
+			flash.flashState[propName] = null;
+
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			flash['get' + capName] = function () {
+
+				if (flash.flashApi !== null) {
+
+					if (flash.flashApi['get_' + propName] !== undefined) {
+						var _ret = function () {
+							var value = flash.flashApi['get_' + propName]();
+
+							// special case for buffered to conform to HTML5's newest
+							if (propName === 'buffered') {
+								return {
+									v: {
+										start: function start() {
+											return 0;
+										},
+										end: function end() {
+											return value;
+										},
+										length: 1
+									}
+								};
+							}
 
-				var tagType = (t.isVideo ? 'video' : 'audio'),
-					capsTagName = tagType.substring(0,1).toUpperCase() + tagType.substring(1);
+							return {
+								v: value
+							};
+						}();
 
+						if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
+					} else {
+						return null;
+					}
+				} else {
+					return null;
+				}
+			};
 
+			flash['set' + capName] = function (value) {
+				if (propName === 'src') {
+					value = (0, _media.absolutizeUrl)(value);
+				}
 
-				if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
-					t.width = t.options[tagType + 'Width'];
-				} else if (t.media.style.width !== '' && t.media.style.width !== null) {
-					t.width = t.media.style.width;
-				} else if (t.media.getAttribute('width') !== null) {
-					t.width = t.$media.attr('width');
+				// send value to Flash
+				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
+					flash.flashApi['set_' + propName](value);
 				} else {
-					t.width = t.options['default' + capsTagName + 'Width'];
+					// store for after "READY" event fires
+					flash.flashApiStack.push({
+						type: 'set',
+						propName: propName,
+						value: value
+					});
 				}
+			};
+		};
+
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
+
+		// add mediaElements for native methods
+		var methods = _mejs2.default.html5media.methods,
+		    assignMethods = function assignMethods(methodName) {
+
+			// run the method on the native HTMLMediaElement
+			flash[methodName] = function () {
+
+				if (flash.flashApi !== null) {
 
-				if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
-					t.height = t.options[tagType + 'Height'];
-				} else if (t.media.style.height !== '' && t.media.style.height !== null) {
-					t.height = t.media.style.height;
-				} else if (t.$media[0].getAttribute('height') !== null) {
-					t.height = t.$media.attr('height');
+					// send call up to Flash ExternalInterface API
+					if (flash.flashApi['fire_' + methodName]) {
+						try {
+							flash.flashApi['fire_' + methodName]();
+						} catch (e) {
+							
+						}
+					} else {
+						
+					}
 				} else {
-					t.height = t.options['default' + capsTagName + 'Height'];
+					// store for after "READY" event fires
+					flash.flashApiStack.push({
+						type: 'call',
+						methodName: methodName
+					});
 				}
+			};
+		};
+		methods.push('stop');
+		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
+			assignMethods(methods[_i]);
+		}
 
-				// set the size, while we wait for the plugins to load below
-				t.setPlayerSize(t.width, t.height);
+		// give initial events like in others renderers
+		var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay', 'error'];
 
-				// create MediaElementShim
-				meOptions.pluginWidth = t.width;
-				meOptions.pluginHeight = t.height;
-			}
+		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
+			var event = (0, _general.createEvent)(initEvents[_i2], flash);
+			mediaElement.dispatchEvent(event);
+		}
+
+		// add a ready method that Flash can call to
+		_window2.default['__ready__' + flash.id] = function () {
+
+			flash.flashReady = true;
+			flash.flashApi = _document2.default.getElementById('__' + flash.id);
 
-			// create MediaElement shim
-			mejs.MediaElement(t.$media[0], meOptions);
+			// do call stack
+			if (flash.flashApiStack.length) {
+				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
 
-			if (typeof(t.container) != 'undefined' && t.controlsAreVisible){
-			    // controls are shown when loaded
-			    t.container.trigger('controlsshown');
+					var stackItem = flash.flashApiStack[_i3];
+
+					if (stackItem.type === 'set') {
+						var propName = stackItem.propName,
+						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+						flash['set' + capName](stackItem.value);
+					} else if (stackItem.type === 'call') {
+						flash[stackItem.methodName]();
+					}
+				}
 			}
-		},
+		};
 
-		showControls: function(doAnimation) {
-			var t = this;
+		_window2.default['__event__' + flash.id] = function (eventName, message) {
 
-			doAnimation = typeof doAnimation == 'undefined' || doAnimation;
+			var event = (0, _general.createEvent)(eventName, flash);
+			event.message = message || '';
 
-			if (t.controlsAreVisible)
-				return;
+			// send event from Flash up to the mediaElement
+			flash.mediaElement.dispatchEvent(event);
+		};
 
-			if (doAnimation) {
-				t.controls
-					.css('visibility','visible')
-					.stop(true, true).fadeIn(200, function() {
-					      t.controlsAreVisible = true;
-					      t.container.trigger('controlsshown');
-					});
+		// insert Flash object
+		flash.flashWrapper = _document2.default.createElement('div');
 
-				// any additional controls people might add and want to hide
-				t.container.find('.mejs-control')
-					.css('visibility','visible')
-					.stop(true, true).fadeIn(200, function() {t.controlsAreVisible = true;});
+		// If the access script flag does not have any of the valid values, set to `sameDomain` by default
+		if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) {
+			flash.options.shimScriptAccess = 'sameDomain';
+		}
 
-			} else {
-				t.controls
-					.css('visibility','visible')
-					.css('display','block');
+		var autoplay = mediaElement.originalNode.autoplay,
+		    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess],
+		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
+		    flashHeight = isVideo ? mediaElement.originalNode.height : 1,
+		    flashWidth = isVideo ? mediaElement.originalNode.width : 1;
 
-				// any additional controls people might add and want to hide
-				t.container.find('.mejs-control')
-					.css('visibility','visible')
-					.css('display','block');
+		if (mediaElement.originalNode.getAttribute('src')) {
+			flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
+		}
 
-				t.controlsAreVisible = true;
-				t.container.trigger('controlsshown');
-			}
+		if (flash.options.enablePseudoStreaming === true) {
+			flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
+			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
+		}
 
-			t.setControlsSize();
+		mediaElement.appendChild(flash.flashWrapper);
 
-		},
+		if (mediaElement.originalNode !== null) {
+			mediaElement.originalNode.style.display = 'none';
+		}
 
-		hideControls: function(doAnimation) {
-			var t = this;
+		var settings = [];
 
-			doAnimation = typeof doAnimation == 'undefined' || doAnimation;
+		if (_constants.IS_IE) {
+			var specialIEContainer = _document2.default.createElement('div');
+			flash.flashWrapper.appendChild(specialIEContainer);
 
-			if (!t.controlsAreVisible || t.options.alwaysShowControls)
-				return;
+			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 + '"'];
 
-			if (doAnimation) {
-				// fade out main controls
-				t.controls.stop(true, true).fadeOut(200, function() {
-					$(this)
-						.css('visibility','hidden')
-						.css('display','block');
-
-					t.controlsAreVisible = false;
-					t.container.trigger('controlshidden');
-				});
+			if (!isVideo) {
+				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
+			}
 
-				// any additional controls people might add and want to hide
-				t.container.find('.mejs-control').stop(true, true).fadeOut(200, function() {
-					$(this)
-						.css('visibility','hidden')
-						.css('display','block');
-				});
-			} else {
+			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>';
+		} else {
 
-				// hide main controls
-				t.controls
-					.css('visibility','hidden')
-					.css('display','block');
+			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('&') + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
 
-				// hide others
-				t.container.find('.mejs-control')
-					.css('visibility','hidden')
-					.css('display','block');
+			if (!isVideo) {
+				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
+			}
+
+			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
+		}
+
+		flash.flashNode = flash.flashWrapper.lastChild;
 
-				t.controlsAreVisible = false;
-				t.container.trigger('controlshidden');
+		flash.hide = function () {
+			if (isVideo) {
+				flash.flashNode.style.position = 'absolute';
+				flash.flashNode.style.width = '1px';
+				flash.flashNode.style.height = '1px';
+				try {
+					flash.flashNode.style.clip = 'rect(0 0 0 0);';
+				} catch (e) {
+					
+				}
 			}
-		},
+		};
+		flash.show = function () {
+			if (isVideo) {
+				flash.flashNode.style.position = '';
+				flash.flashNode.style.width = '';
+				flash.flashNode.style.height = '';
+				try {
+					flash.flashNode.style.clip = '';
+				} catch (e) {
+					
+				}
+			}
+		};
+		flash.setSize = function (width, height) {
+			flash.flashNode.style.width = width + 'px';
+			flash.flashNode.style.height = height + 'px';
 
-		controlsTimer: null,
+			if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
+				flash.flashApi.fire_setSize(width, height);
+			}
+		};
 
-		startControlsTimer: function(timeout) {
+		flash.destroy = function () {
+			flash.flashNode.remove();
+		};
 
-			var t = this;
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
+					flash.setSrc(mediaFiles[_i4].src);
+					break;
+				}
+			}
+		}
 
-			timeout = typeof timeout != 'undefined' ? timeout : 1500;
+		return flash;
+	}
+};
 
-			t.killControlsTimer('start');
+var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
 
-			t.controlsTimer = setTimeout(function() {
-				//
-				t.hideControls();
-				t.killControlsTimer('hide');
-			}, timeout);
-		},
+if (hasFlash) {
 
-		killControlsTimer: function(src) {
+	/**
+  * Register media type based on URL structure if Flash is detected
+  *
+  */
+	_media.typeChecks.push(function (url) {
 
-			var t = this;
+		url = url.toLowerCase();
 
-			if (t.controlsTimer !== null) {
-				clearTimeout(t.controlsTimer);
-				delete t.controlsTimer;
-				t.controlsTimer = null;
+		if (url.startsWith('rtmp')) {
+			if (url.includes('.mp3')) {
+				return 'audio/rtmp';
+			} else {
+				return 'video/rtmp';
 			}
+		} else if (url.includes('.oga') || url.includes('.ogg')) {
+			return 'audio/ogg';
+		} else if (url.includes('.m3u8')) {
+			return 'application/x-mpegURL';
+		} else if (url.includes('.mpd')) {
+			return 'application/dash+xml';
+		} else if (url.includes('.flv')) {
+			return 'video/flv';
+		} else {
+			return null;
+		}
+	});
+
+	// VIDEO
+	var FlashMediaElementVideoRenderer = {
+		name: 'flash_video',
+
+		options: {
+			prefix: 'flash_video',
+			filename: 'mediaelement-flash-video.swf',
+			enablePseudoStreaming: false,
+			// start query parameter sent to server for pseudo-streaming
+			pseudoStreamingStartQueryParam: 'start',
+			// pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV)
+			pseudoStreamingType: 'byte'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase());
 		},
 
-		controlsEnabled: true,
+		create: FlashMediaElementRenderer.create
 
-		disableControls: function() {
-			var t= this;
+	};
+	_renderer.renderer.add(FlashMediaElementVideoRenderer);
 
-			t.killControlsTimer();
-			t.hideControls(false);
-			this.controlsEnabled = false;
+	// HLS
+	var FlashMediaElementHlsVideoRenderer = {
+		name: 'flash_hls',
+
+		options: {
+			prefix: 'flash_hls',
+			filename: 'mediaelement-flash-video-hls.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
 		},
 
-		enableControls: function() {
-			var t= this;
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
 
-			t.showControls(false);
+	// M(PEG)-DASH
+	var FlashMediaElementMdashVideoRenderer = {
+		name: 'flash_dash',
 
-			t.controlsEnabled = true;
+		options: {
+			prefix: 'flash_dash',
+			filename: 'mediaelement-flash-video-mdash.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['application/dash+xml'].includes(type.toLowerCase());
+		},
+
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
+
+	// AUDIO
+	var FlashMediaElementAudioRenderer = {
+		name: 'flash_audio',
+
+		options: {
+			prefix: 'flash_audio',
+			filename: 'mediaelement-flash-audio.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['audio/mp3'].includes(type.toLowerCase());
 		},
 
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementAudioRenderer);
 
-		// Sets up all controls and events
-		meReady: function(media, domNode) {
+	// AUDIO - ogg
+	var FlashMediaElementAudioOggRenderer = {
+		name: 'flash_audio_ogg',
 
+		options: {
+			prefix: 'flash_audio_ogg',
+			filename: 'mediaelement-flash-audio-ogg.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase());
+		},
 
-			var t = this,
-				mf = mejs.MediaFeatures,
-				autoplayAttr = domNode.getAttribute('autoplay'),
-				autoplay = !(typeof autoplayAttr == 'undefined' || autoplayAttr === null || autoplayAttr === 'false'),
-				featureIndex,
-				feature;
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
+}
 
-			// make sure it can't create itself again if a plugin reloads
-			if (t.created) {
-				return;
-			} else {
-				t.created = true;
-			}
+},{"2":2,"23":23,"25":25,"26":26,"3":3,"4":4,"6":6,"7":7}],19:[function(_dereq_,module,exports){
+'use strict';
 
-			t.media = media;
-			t.domNode = domNode;
+var _window = _dereq_(3);
 
-			if (!(mf.isAndroid && t.options.AndroidUseNativeControls) && !(mf.isiPad && t.options.iPadUseNativeControls) && !(mf.isiPhone && t.options.iPhoneUseNativeControls)) {
+var _window2 = _interopRequireDefault(_window);
 
-				// two built in features
-				t.buildposter(t, t.controls, t.layers, t.media);
-				t.buildkeyboard(t, t.controls, t.layers, t.media);
-				t.buildoverlays(t, t.controls, t.layers, t.media);
+var _document = _dereq_(2);
 
-				// grab for use by features
-				t.findTracks();
+var _document2 = _interopRequireDefault(_document);
 
-				// add user-defined features/controls
-				for (featureIndex in t.options.features) {
-					feature = t.options.features[featureIndex];
-					if (t['build' + feature]) {
-						try {
-							t['build' + feature](t, t.controls, t.layers, t.media);
-						} catch (e) {
-							// TODO: report control error
-							//throw e;
-							
-							
-						}
-					}
-				}
+var _mejs = _dereq_(6);
 
-				t.container.trigger('controlsready');
+var _mejs2 = _interopRequireDefault(_mejs);
 
-				// reset all layers and controls
-				t.setPlayerSize(t.width, t.height);
-				t.setControlsSize();
+var _renderer = _dereq_(7);
 
+var _general = _dereq_(25);
 
-				// controls fade
-				if (t.isVideo) {
+var _constants = _dereq_(23);
 
-					if (mejs.MediaFeatures.hasTouch) {
+var _media = _dereq_(26);
 
-						// for touch devices (iOS, Android)
-						// show/hide without animation on touch
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-						t.$media.bind('touchstart', function() {
+/**
+ * Native FLV renderer
+ *
+ * Uses flv.js, which is a JavaScript library which implements mechanisms to play flv files inspired by flv.js.
+ * It relies on HTML5 video and MediaSource Extensions for playback.
+ * Currently, it can only play files with the same origin.
+ *
+ * @see https://github.com/Bilibili/flv.js
+ *
+ */
+var NativeFlv = {
+	/**
+  * @type {Boolean}
+  */
+	isMediaStarted: false,
+	/**
+  * @type {Boolean}
+  */
+	isMediaLoaded: false,
+	/**
+  * @type {Array}
+  */
+	creationQueue: [],
+
+	/**
+  * Create a queue to prepare the loading of an FLV source
+  * @param {Object} settings - an object with settings needed to load an FLV player instance
+  */
+	prepareSettings: function prepareSettings(settings) {
+		if (NativeFlv.isLoaded) {
+			NativeFlv.createInstance(settings);
+		} else {
+			NativeFlv.loadScript(settings);
+			NativeFlv.creationQueue.push(settings);
+		}
+	},
 
+	/**
+  * Load flv.js script on the header of the document
+  *
+  * @param {Object} settings - an object with settings needed to load an FLV player instance
+  */
+	loadScript: function loadScript(settings) {
 
-							// toggle controls
-							if (t.controlsAreVisible) {
-								t.hideControls(false);
-							} else {
-								if (t.controlsEnabled) {
-									t.showControls(false);
-								}
-							}
-						});
+		// Skip script loading since it is already loaded
+		if (typeof flvjs !== 'undefined') {
+			NativeFlv.createInstance(settings);
+		} else if (!NativeFlv.isMediaStarted) {
+			(function () {
 
-					} else {
+				settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.1.0/flv.min.js';
 
-						// create callback here since it needs access to current
-						// MediaElement object
-						t.clickToPlayPauseCallback = function() {
-							//
+				var script = _document2.default.createElement('script'),
+				    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
 
-							if (t.options.clickToPlayPause) {
-								if (t.media.paused) {
-									t.play();
-								} else {
-									t.pause();
-								}
-							}
-						};
+				var done = false;
 
-			            // click to play/pause
-			            t.media.addEventListener('click', t.clickToPlayPauseCallback, false);
+				script.src = settings.options.path;
 
-						// show/hide controls
-						t.container
-							.bind('mouseenter mouseover', function () {
-								if (t.controlsEnabled) {
-									if (!t.options.alwaysShowControls ) {
-										t.killControlsTimer('enter');
-										t.showControls();
-										t.startControlsTimer(2500);
-									}
-								}
-							})
-							.bind('mousemove', function() {
-								if (t.controlsEnabled) {
-									if (!t.controlsAreVisible) {
-										t.showControls();
-									}
-									if (!t.options.alwaysShowControls) {
-										t.startControlsTimer(2500);
-									}
-								}
-							})
-							.bind('mouseleave', function () {
-								if (t.controlsEnabled) {
-									if (!t.media.paused && !t.options.alwaysShowControls) {
-										t.startControlsTimer(1000);
-									}
-								}
-							});
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function () {
+					if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
+						done = true;
+						NativeFlv.mediaReady();
+						script.onload = script.onreadystatechange = null;
 					}
+				};
 
-					if(t.options.hideVideoControlsOnLoad) {
-						t.hideControls(false);
-					}
+				firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
+				NativeFlv.isMediaStarted = true;
+			})();
+		}
+	},
 
-					// check for autoplay
-					if (autoplay && !t.options.alwaysShowControls) {
-						t.hideControls();
-					}
+	/**
+  * Process queue of FLV player creation
+  *
+  */
+	mediaReady: function mediaReady() {
+		NativeFlv.isLoaded = true;
+		NativeFlv.isMediaLoaded = true;
+
+		while (NativeFlv.creationQueue.length > 0) {
+			var settings = NativeFlv.creationQueue.pop();
+			NativeFlv.createInstance(settings);
+		}
+	},
 
-					// resizer
-					if (t.options.enableAutosize) {
-						t.media.addEventListener('loadedmetadata', function(e) {
-							// if the <video height> was not set and the options.videoHeight was not set
-							// then resize to the real dimensions
-							if (t.options.videoHeight <= 0 && t.domNode.getAttribute('height') === null && !isNaN(e.target.videoHeight)) {
-								t.setPlayerSize(e.target.videoWidth, e.target.videoHeight);
-								t.setControlsSize();
-								t.media.setVideoSize(e.target.videoWidth, e.target.videoHeight);
-							}
-						}, false);
-					}
-				}
+	/**
+  * Create a new instance of FLV player and trigger a custom event to initialize it
+  *
+  * @param {Object} settings - an object with settings needed to instantiate FLV object
+  */
+	createInstance: function createInstance(settings) {
+		var player = flvjs.createPlayer(settings.options);
+		_window2.default['__ready__' + settings.id](player);
+	}
+};
 
-				// EVENTS
+var FlvNativeRenderer = {
+	name: 'native_flv',
+
+	options: {
+		prefix: 'native_flv',
+		flv: {
+			// Special config: used to set the local path/URL of flv.js library
+			path: '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.1.0/flv.min.js',
+			// To modify more elements from FLV player,
+			// see https://github.com/Bilibili/flv.js/blob/master/docs/api.md#config
+			cors: true
+		}
+	},
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {Boolean}
+  */
+	canPlayType: function canPlayType(type) {
+		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].includes(type);
+	},
 
-				// FOCUS: when a video starts playing, it takes focus from other players (possibily pausing them)
-				media.addEventListener('play', function() {
-					var playerIndex;
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
 
-					// go through all other players
-					for (playerIndex in mejs.players) {
-						var p = mejs.players[playerIndex];
-						if (p.id != t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
-							p.pause();
-						}
-						p.hasFocus = false;
-					}
+		var originalNode = mediaElement.originalNode,
+		    id = mediaElement.id + '_' + options.prefix;
 
-					t.hasFocus = true;
-				},false);
+		var node = null,
+		    flvPlayer = null;
 
+		node = originalNode.cloneNode(true);
+		options = Object.assign(options, mediaElement.options);
 
-				// ended for all
-				t.media.addEventListener('ended', function (e) {
-					if(t.options.autoRewind) {
-						try{
-							t.media.setCurrentTime(0);
-						} catch (exp) {
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
-						}
-					}
-					t.media.pause();
+			node['get' + capName] = function () {
+				return flvPlayer !== null ? node[propName] : null;
+			};
 
-					if (t.setProgressRail) {
-						t.setProgressRail();
-					}
-					if (t.setCurrentRail) {
-						t.setCurrentRail();
-					}
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					if (flvPlayer !== null) {
+						node[propName] = value;
 
-					if (t.options.loop) {
-						t.play();
-					} else if (!t.options.alwaysShowControls && t.controlsEnabled) {
-						t.showControls();
+						if (propName === 'src') {
+							flvPlayer.unload();
+							flvPlayer.detachMediaElement();
+							flvPlayer.attachMediaElement(node);
+							flvPlayer.load();
+						}
 					}
-				}, false);
+				}
+			};
+		};
 
-				// resize on the first play
-				t.media.addEventListener('loadedmetadata', function(e) {
-					if (t.updateDuration) {
-						t.updateDuration();
-					}
-					if (t.updateCurrent) {
-						t.updateCurrent();
-					}
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
 
-					if (!t.isFullScreen) {
-						t.setPlayerSize(t.width, t.height);
-						t.setControlsSize();
-					}
-				}, false);
+		// Initial method to register all FLV events
+		_window2.default['__ready__' + id] = function (_flvPlayer) {
 
+			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
 
-				// webkit has trouble doing this without a delay
-				setTimeout(function () {
-					t.setPlayerSize(t.width, t.height);
-					t.setControlsSize();
-				}, 50);
+			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+			    assignEvents = function assignEvents(eventName) {
 
-				// adjust controls whenever window sizes (used to be in fullscreen only)
-				t.globalBind('resize', function() {
+				if (eventName === 'loadedmetadata') {
 
-					// don't resize for fullscreen mode
-					if ( !(t.isFullScreen || (mejs.MediaFeatures.hasTrueNativeFullScreen && document.webkitIsFullScreen)) ) {
-						t.setPlayerSize(t.width, t.height);
-					}
+					flvPlayer.unload();
+					flvPlayer.detachMediaElement();
+					flvPlayer.attachMediaElement(node);
+					flvPlayer.load();
+				}
 
-					// always adjust controls
-					t.setControlsSize();
+				node.addEventListener(eventName, function (e) {
+					var event = _document2.default.createEvent('HTMLEvents');
+					event.initEvent(e.type, e.bubbles, e.cancelable);
+					mediaElement.dispatchEvent(event);
 				});
+			};
 
-				// TEMP: needs to be moved somewhere else
-				if (t.media.pluginType == 'youtube' && t.options.autoplay) {
-				//LOK-Soft: added t.options.autoplay to if -- I can only guess this is for hiding play button when autoplaying youtube, general hiding play button layer causes missing button on player load
-					t.container.find('.mejs-overlay-play').hide();
-				}
+			for (var _i = 0, _total = events.length; _i < _total; _i++) {
+				assignEvents(events[_i]);
 			}
+		};
 
-			// force autoplay for HTML5
-			if (autoplay && media.pluginType == 'native') {
-				t.play();
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
 			}
+		}
 
+		node.setAttribute('id', id);
 
-			if (t.options.success) {
+		originalNode.parentNode.insertBefore(node, originalNode);
+		originalNode.autoplay = false;
+		originalNode.style.display = 'none';
 
-				if (typeof t.options.success == 'string') {
-					window[t.options.success](t.media, t.domNode, t);
-				} else {
-					t.options.success(t.media, t.domNode, t);
-				}
-			}
-		},
+		// Options that cannot be overridden
+		options.flv.type = 'flv';
+		options.flv.url = node.getAttribute('src');
 
-		handleError: function(e) {
-			var t = this;
+		NativeFlv.prepareSettings({
+			options: options.flv,
+			id: id
+		});
 
-			t.controls.hide();
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
+		};
 
-			// Tell user that the file cannot be played
-			if (t.options.error) {
-				t.options.error(e);
+		node.hide = function () {
+			if (flvPlayer !== null) {
+				flvPlayer.pause();
 			}
-		},
+			node.style.display = 'none';
+			return node;
+		};
 
-		setPlayerSize: function(width,height) {
-			var t = this;
+		node.show = function () {
+			node.style.display = '';
+			return node;
+		};
 
-			if( !t.options.setDimensions ) {
-				return false;
+		node.destroy = function () {
+			if (flvPlayer !== null) {
+				flvPlayer.destroy();
 			}
+		};
 
-			if (typeof width != 'undefined') {
-				t.width = width;
-			}
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
 
-			if (typeof height != 'undefined') {
-				t.height = height;
-			}
+		return node;
+	}
+};
 
-			// detect 100% mode - use currentStyle for IE since css() doesn't return percentages
-			if (t.height.toString().indexOf('%') > 0 || t.$node.css('max-width') === '100%' || (t.$node[0].currentStyle && t.$node[0].currentStyle.maxWidth === '100%')) {
+/**
+ * Register Native FLV type based on URL structure
+ *
+ */
+_media.typeChecks.push(function (url) {
+	url = url.toLowerCase();
+	return url.includes('.flv') ? 'video/flv' : null;
+});
 
-				// do we have the native dimensions yet?
-				var nativeWidth = (function() {
-					if (t.isVideo) {
-						if (t.media.videoWidth && t.media.videoWidth > 0) {
-							return t.media.videoWidth;
-						} else if (t.media.getAttribute('width') !== null) {
-							return t.media.getAttribute('width');
-						} else {
-							return t.options.defaultVideoWidth;
-						}
-					} else {
-						return t.options.defaultAudioWidth;
-					}
-				})();
+_renderer.renderer.add(FlvNativeRenderer);
 
-				var nativeHeight = (function() {
-					if (t.isVideo) {
-						if (t.media.videoHeight && t.media.videoHeight > 0) {
-							return t.media.videoHeight;
-						} else if (t.media.getAttribute('height') !== null) {
-							return t.media.getAttribute('height');
-						} else {
-							return t.options.defaultVideoHeight;
-						}
-					} else {
-						return t.options.defaultAudioHeight;
-					}
-				})();
+},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],20:[function(_dereq_,module,exports){
+'use strict';
 
-				var
-					parentWidth = t.container.parent().closest(':visible').width(),
-					parentHeight = t.container.parent().closest(':visible').height(),
-					newHeight = t.isVideo || !t.options.autosizeProgress ? parseInt(parentWidth * nativeHeight/nativeWidth, 10) : nativeHeight;
+var _window = _dereq_(3);
 
-				// When we use percent, the newHeight can't be calculated so we get the container height
-				if(isNaN(newHeight) || ( parentHeight != 0 && newHeight > parentHeight )) {
-					newHeight = parentHeight;
-				}
+var _window2 = _interopRequireDefault(_window);
 
-				if (t.container.parent()[0].tagName.toLowerCase() === 'body') { // && t.container.siblings().count == 0) {
-					parentWidth = $(window).width();
-					newHeight = $(window).height();
-				}
+var _document = _dereq_(2);
 
-				if ( newHeight != 0 && parentWidth != 0 ) {
-					// set outer container size
-					t.container
-						.width(parentWidth)
-						.height(newHeight);
+var _document2 = _interopRequireDefault(_document);
 
-					// set native <video> or <audio> and shims
-					t.$media.add(t.container.find('.mejs-shim'))
-						.width('100%')
-						.height('100%');
+var _mejs = _dereq_(6);
 
-					// if shim is ready, send the size to the embeded plugin
-					if (t.isVideo) {
-						if (t.media.setVideoSize) {
-							t.media.setVideoSize(parentWidth, newHeight);
-						}
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _renderer = _dereq_(7);
+
+var _general = _dereq_(25);
+
+var _constants = _dereq_(23);
+
+var _media = _dereq_(26);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Native HLS renderer
+ *
+ * Uses DailyMotion's hls.js, which is a JavaScript library which implements an HTTP Live Streaming client.
+ * It relies on HTML5 video and MediaSource Extensions for playback.
+ * This renderer integrates new events associated with m3u8 files the same way Flash version of Hls does.
+ * @see https://github.com/dailymotion/hls.js
+ *
+ */
+var NativeHls = {
+	/**
+  * @type {Boolean}
+  */
+	isMediaStarted: false,
+	/**
+  * @type {Boolean}
+  */
+	isMediaLoaded: false,
+	/**
+  * @type {Array}
+  */
+	creationQueue: [],
+
+	/**
+  * Create a queue to prepare the loading of an HLS source
+  *
+  * @param {Object} settings - an object with settings needed to load an HLS player instance
+  */
+	prepareSettings: function prepareSettings(settings) {
+		if (NativeHls.isLoaded) {
+			NativeHls.createInstance(settings);
+		} else {
+			NativeHls.loadScript(settings);
+			NativeHls.creationQueue.push(settings);
+		}
+	},
+
+	/**
+  * Load hls.js script on the header of the document
+  *
+  * @param {Object} settings - an object with settings needed to load an HLS player instance
+  */
+	loadScript: function loadScript(settings) {
+
+		// Skip script loading since it is already loaded
+		if (typeof Hls !== 'undefined') {
+			NativeHls.createInstance(settings);
+		} else if (!NativeHls.isMediaStarted) {
+			(function () {
+
+				settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.jsdelivr.net/hls.js/latest/hls.min.js';
+
+				var script = _document2.default.createElement('script'),
+				    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
+
+				var done = false;
+
+				script.src = settings.options.path;
+
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function () {
+					if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
+						done = true;
+						NativeHls.mediaReady();
+						script.onload = script.onreadystatechange = null;
 					}
+				};
 
-					// set the layers
-					t.layers.children('.mejs-layer')
-						.width('100%')
-						.height('100%');
-				}
+				firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
+				NativeHls.isMediaStarted = true;
+			})();
+		}
+	},
 
+	/**
+  * Process queue of HLS player creation
+  *
+  */
+	mediaReady: function mediaReady() {
+		NativeHls.isLoaded = true;
+		NativeHls.isMediaLoaded = true;
+
+		while (NativeHls.creationQueue.length > 0) {
+			var settings = NativeHls.creationQueue.pop();
+			NativeHls.createInstance(settings);
+		}
+	},
 
-			} else {
+	/**
+  * Create a new instance of HLS player and trigger a custom event to initialize it
+  *
+  * @param {Object} settings - an object with settings needed to instantiate HLS object
+  * @return {Hls}
+  */
+	createInstance: function createInstance(settings) {
+		var player = new Hls(settings.options);
+		_window2.default['__ready__' + settings.id](player);
+		return player;
+	}
+};
 
-				t.container
-					.width(t.width)
-					.height(t.height);
+var HlsNativeRenderer = {
+	name: 'native_hls',
+
+	options: {
+		prefix: 'native_hls',
+		hls: {
+			// Special config: used to set the local path/URL of hls.js library
+			path: '//cdn.jsdelivr.net/hls.js/latest/hls.min.js',
+			// To modify more elements from hls.js,
+			// see https://github.com/dailymotion/hls.js/blob/master/API.md#user-content-fine-tuning
+			autoStartLoad: false,
+			debug: false
+		}
+	},
 
-				t.layers.children('.mejs-layer')
-					.width(t.width)
-					.height(t.height);
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {Boolean}
+  */
+	canPlayType: function canPlayType(type) {
+		return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+	},
 
-			}
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var originalNode = mediaElement.originalNode,
+		    id = mediaElement.id + '_' + options.prefix,
+		    preload = originalNode.getAttribute('preload'),
+		    autoplay = originalNode.autoplay;
+
+		var hlsPlayer = null,
+		    node = null;
+
+		node = originalNode.cloneNode(true);
+		options = Object.assign(options, mediaElement.options);
+		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
+
+		// WRAPPERS for PROPs
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			node['get' + capName] = function () {
+				return hlsPlayer !== null ? node[propName] : null;
+			};
 
-			// special case for big play button so it doesn't go over the controls area
-			var playLayer = t.layers.find('.mejs-overlay-play'),
-				playButton = playLayer.find('.mejs-overlay-button');
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					if (hlsPlayer !== null) {
+						node[propName] = value;
 
-			playLayer.height(t.container.height() - t.controls.height());
-			playButton.css('margin-top', '-' + (playButton.height()/2 - t.controls.height()/2).toString() + 'px'  );
+						if (propName === 'src') {
 
-		},
+							hlsPlayer.destroy();
+							hlsPlayer = NativeHls.createInstance({
+								options: options.hls,
+								id: id
+							});
 
-		setControlsSize: function() {
-			var t = this,
-				usedWidth = 0,
-				railWidth = 0,
-				rail = t.controls.find('.mejs-time-rail'),
-				total = t.controls.find('.mejs-time-total'),
-				current = t.controls.find('.mejs-time-current'),
-				loaded = t.controls.find('.mejs-time-loaded'),
-				others = rail.siblings(),
-				lastControl = others.last(),
-				lastControlPosition = null;
+							hlsPlayer.loadSource(value);
+							hlsPlayer.attachMedia(node);
+						}
+					}
+				}
+			};
+		};
 
-			// skip calculation if hidden
-			if (!t.container.is(':visible') || !rail.length || !rail.is(':visible')) {
-				return;
-			}
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
+
+		// Initial method to register all HLS events
+		_window2.default['__ready__' + id] = function (_hlsPlayer) {
+
+			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
+
+			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+			    hlsEvents = Hls.Events,
+			    assignEvents = function assignEvents(eventName) {
+
+				if (eventName === 'loadedmetadata') {
+
+					hlsPlayer.detachMedia();
+
+					var url = node.src;
+
+					hlsPlayer.loadSource(url);
+					hlsPlayer.attachMedia(node);
+				}
 
+				node.addEventListener(eventName, function (e) {
+					// copy event
+					var event = _document2.default.createEvent('HTMLEvents');
+					event.initEvent(e.type, e.bubbles, e.cancelable);
+					mediaElement.dispatchEvent(event);
+				});
+			};
 
-			// allow the size to come from custom CSS
-			if (t.options && !t.options.autosizeProgress) {
-				// Also, frontends devs can be more flexible
-				// due the opportunity of absolute positioning.
-				railWidth = parseInt(rail.css('width'));
+			for (var _i = 0, _total = events.length; _i < _total; _i++) {
+				assignEvents(events[_i]);
 			}
 
-			// attempt to autosize
-			if (railWidth === 0 || !railWidth) {
+			/**
+    * Custom HLS events
+    *
+    * These events can be attached to the original node using addEventListener and the name of the event,
+    * not using Hls.Events object
+    * @see https://github.com/dailymotion/hls.js/blob/master/src/events.js
+    * @see https://github.com/dailymotion/hls.js/blob/master/src/errors.js
+    * @see https://github.com/dailymotion/hls.js/blob/master/API.md#runtime-events
+    * @see https://github.com/dailymotion/hls.js/blob/master/API.md#errors
+    */
+			var recoverDecodingErrorDate = void 0,
+			    recoverSwapAudioCodecDate = void 0;
+			var assignHlsEvents = function assignHlsEvents(e, data) {
+				var event = (0, _general.createEvent)(e, node);
+				event.data = data;
+				mediaElement.dispatchEvent(event);
+
+				if (e === 'hlsError') {
+					console.warn(e, data);
+
+					// borrowed from http://dailymotion.github.io/hls.js/demo/
+					if (data.fatal) {
+						switch (data.type) {
+							case 'mediaError':
+								var now = new Date().getTime();
+								if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
+									recoverDecodingErrorDate = new Date().getTime();
+									hlsPlayer.recoverMediaError();
+								} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
+									recoverSwapAudioCodecDate = new Date().getTime();
+									console.warn('Attempting to swap Audio Codec and recover from media error');
+									hlsPlayer.swapAudioCodec();
+									hlsPlayer.recoverMediaError();
+								} else {
+									console.error('Cannot recover, last media error recovery failed');
+								}
+								break;
+							case 'networkError':
+								console.error('Network error');
+								break;
+							default:
+								hlsPlayer.destroy();
+								break;
 
-				// find the size of all the other controls besides the rail
-				others.each(function() {
-					var $this = $(this);
-					if ($this.css('position') != 'absolute' && $this.is(':visible')) {
-						usedWidth += $(this).outerWidth(true);
+						}
 					}
-				});
+				}
+			};
 
-				// fit the rail into the remaining space
-				railWidth = t.controls.width() - usedWidth - (rail.outerWidth(true) - rail.width());
+			for (var eventType in hlsEvents) {
+				if (hlsEvents.hasOwnProperty(eventType)) {
+					hlsPlayer.on(hlsEvents[eventType], assignHlsEvents);
+				}
 			}
+		};
 
-			// resize the rail,
-			// but then check if the last control (say, the fullscreen button) got pushed down
-			// this often happens when zoomed
-			do {
-				// outer area
-				rail.width(railWidth);
-				// dark space
-				total.width(railWidth - (total.outerWidth(true) - total.width()));
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
+			}
+		}
 
-				if (lastControl.css('position') != 'absolute') {
-					lastControlPosition = lastControl.position();
-					railWidth--;
+		if (preload !== 'auto' && !autoplay) {
+			node.addEventListener('play', function () {
+				if (hlsPlayer !== null) {
+					hlsPlayer.startLoad();
 				}
-			} while (lastControlPosition != null && lastControlPosition.top > 0 && railWidth > 0);
+			});
 
-			if (t.setProgressRail)
-				t.setProgressRail();
-			if (t.setCurrentRail)
-				t.setCurrentRail();
-		},
+			node.addEventListener('pause', function () {
+				if (hlsPlayer !== null) {
+					hlsPlayer.stopLoad();
+				}
+			});
+		}
 
+		node.setAttribute('id', id);
 
-		buildposter: function(player, controls, layers, media) {
-			var t = this,
-				poster =
-				$('<div class="mejs-poster mejs-layer">' +
-				'</div>')
-					.appendTo(layers),
-				posterUrl = player.$media.attr('poster');
+		originalNode.parentNode.insertBefore(node, originalNode);
+		originalNode.autoplay = false;
+		originalNode.style.display = 'none';
 
-			// prioriy goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster)
-			if (player.options.poster !== '') {
-				posterUrl = player.options.poster;
-			}
+		NativeHls.prepareSettings({
+			options: options.hls,
+			id: id
+		});
 
-			// second, try the real poster
-			if (posterUrl !== '' && posterUrl != null) {
-				t.setPoster(posterUrl);
-			} else {
-				poster.hide();
-			}
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
+		};
 
-			media.addEventListener('play',function() {
-				poster.hide();
-			}, false);
+		node.hide = function () {
+			node.pause();
+			node.style.display = 'none';
+			return node;
+		};
 
-			if(player.options.showPosterWhenEnded && player.options.autoRewind){
-				media.addEventListener('ended',function() {
-					poster.show();
-				}, false);
-			}
-		},
+		node.show = function () {
+			node.style.display = '';
+			return node;
+		};
 
-		setPoster: function(url) {
-			var t = this,
-				posterDiv = t.container.find('.mejs-poster'),
-				posterImg = posterDiv.find('img');
+		node.destroy = function () {
+			if (hlsPlayer !== null) {
+				hlsPlayer.destroy();
+			}
+		};
 
-			if (posterImg.length == 0) {
-				posterImg = $('<img width="100%" height="100%" />').appendTo(posterDiv);
+		node.stop = function () {
+			if (hlsPlayer !== null) {
+				hlsPlayer.stopLoad();
 			}
+		};
 
-			posterImg.attr('src', url);
-			posterDiv.css({'background-image' : 'url(' + url + ')'});
-		},
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
 
-		buildoverlays: function(player, controls, layers, media) {
-            var t = this;
-			if (!player.isVideo)
-				return;
+		return node;
+	}
+};
 
-			var
-			loading =
-				$('<div class="mejs-overlay mejs-layer">'+
-					'<div class="mejs-overlay-loading"><span></span></div>'+
-				'</div>')
-				.hide() // start out hidden
-				.appendTo(layers),
-			error =
-				$('<div class="mejs-overlay mejs-layer">'+
-					'<div class="mejs-overlay-error"></div>'+
-				'</div>')
-				.hide() // start out hidden
-				.appendTo(layers),
-			// this needs to come last so it's on top
-			bigPlay =
-				$('<div class="mejs-overlay mejs-layer mejs-overlay-play">'+
-					'<div class="mejs-overlay-button"></div>'+
-				'</div>')
-				.appendTo(layers)
-				.bind('click', function() {  // Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay started and immediately stopped the video
-					if (t.options.clickToPlayPause) {
-						if (media.paused) {
-							media.play();
-						}
-					}
-				});
+/**
+ * Register Native HLS type based on URL structure
+ *
+ */
+_media.typeChecks.push(function (url) {
+	url = url.toLowerCase();
+	return url.includes('.m3u8') ? 'application/x-mpegURL' : null;
+});
 
-			/*
-			if (mejs.MediaFeatures.isiOS || mejs.MediaFeatures.isAndroid) {
-				bigPlay.remove();
-				loading.remove();
-			}
-			*/
+_renderer.renderer.add(HlsNativeRenderer);
 
+},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],21:[function(_dereq_,module,exports){
+'use strict';
 
-			// show/hide big play button
-			media.addEventListener('play',function() {
-				bigPlay.hide();
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-				error.hide();
-			}, false);
-
-			media.addEventListener('playing', function() {
-				bigPlay.hide();
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-				error.hide();
-			}, false);
-
-			media.addEventListener('seeking', function() {
-				loading.show();
-				controls.find('.mejs-time-buffering').show();
-			}, false);
-
-			media.addEventListener('seeked', function() {
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-			}, false);
-
-			media.addEventListener('pause',function() {
-				if (!mejs.MediaFeatures.isiPhone) {
-					bigPlay.show();
-				}
-			}, false);
+var _window = _dereq_(3);
 
-			media.addEventListener('waiting', function() {
-				loading.show();
-				controls.find('.mejs-time-buffering').show();
-			}, false);
+var _window2 = _interopRequireDefault(_window);
 
+var _document = _dereq_(2);
 
-			// show/hide loading
-			media.addEventListener('loadeddata',function() {
-				// for some reason Chrome is firing this event
-				//if (mejs.MediaFeatures.isChrome && media.getAttribute && media.getAttribute('preload') === 'none')
-				//	return;
-
-				loading.show();
-				controls.find('.mejs-time-buffering').show();
-			}, false);
-			media.addEventListener('canplay',function() {
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-			}, false);
+var _document2 = _interopRequireDefault(_document);
 
-			// error handling
-			media.addEventListener('error',function() {
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-				error.show();
-				error.find('mejs-overlay-error').html("Error loading this resource");
-			}, false);
-
-			media.addEventListener('keydown', function(e) {
-				t.onkeydown(player, media, e);
-			}, false);
-		},
+var _mejs = _dereq_(6);
 
-		buildkeyboard: function(player, controls, layers, media) {
+var _mejs2 = _interopRequireDefault(_mejs);
 
-				var t = this;
+var _renderer = _dereq_(7);
 
-				// listen for key presses
-				t.globalBind('keydown', function(e) {
-					return t.onkeydown(player, media, e);
-				});
+var _general = _dereq_(25);
 
-				// check if someone clicked outside a player region, then kill its focus
-				t.globalBind('click', function(event) {
-					player.hasFocus = $(event.target).closest('.mejs-container').length != 0;
-				});
+var _constants = _dereq_(23);
 
-		},
-		onkeydown: function(player, media, e) {
-			if (player.hasFocus && player.options.enableKeyboard) {
-				// find a matching key
-				for (var i = 0, il = player.options.keyActions.length; i < il; i++) {
-					var keyAction = player.options.keyActions[i];
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-					for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
-						if (e.keyCode == keyAction.keys[j]) {
-							if (typeof(e.preventDefault) == "function") e.preventDefault();
-							keyAction.action(player, media, e.keyCode);
-							return false;
-						}
-					}
-				}
-			}
+/**
+ * Native HTML5 Renderer
+ *
+ * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement.
+ */
+var HtmlMediaElement = {
 
-			return true;
-		},
+	name: 'html5',
 
-		findTracks: function() {
-			var t = this,
-				tracktags = t.$media.find('track');
+	options: {
+		prefix: 'html5'
+	},
 
-			// store for use by plugins
-			t.tracks = [];
-			tracktags.each(function(index, track) {
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {String}
+  */
+	canPlayType: function canPlayType(type) {
+
+		var mediaElement = _document2.default.createElement('video');
+
+		// Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS;
+		// also consider URLs that might have obfuscated URLs
+		if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
+			return 'yes';
+		} else if (mediaElement.canPlayType) {
+			return mediaElement.canPlayType(type).replace(/no/, '');
+		} else {
+			return '';
+		}
+	},
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var id = mediaElement.id + '_' + options.prefix;
+
+		var node = null;
+
+		// CREATE NODE
+		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
+			node = _document2.default.createElement('audio');
+			mediaElement.appendChild(node);
+		} else {
+			node = mediaElement.originalNode;
+		}
 
-				track = $(track);
+		node.setAttribute('id', id);
 
-				t.tracks.push({
-					srclang: (track.attr('srclang')) ? track.attr('srclang').toLowerCase() : '',
-					src: track.attr('src'),
-					kind: track.attr('kind'),
-					label: track.attr('label') || '',
-					entries: [],
-					isLoaded: false
-				});
-			});
-		},
-		changeSkin: function(className) {
-			this.container[0].className = 'mejs-container ' + className;
-			this.setPlayerSize(this.width, this.height);
-			this.setControlsSize();
-		},
-		play: function() {
-			this.load();
-			this.media.play();
-		},
-		pause: function() {
-			try {
-				this.media.pause();
-			} catch (e) {}
-		},
-		load: function() {
-			if (!this.isLoaded) {
-				this.media.load();
-			}
+		// WRAPPERS for PROPs
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
-			this.isLoaded = true;
-		},
-		setMuted: function(muted) {
-			this.media.setMuted(muted);
-		},
-		setCurrentTime: function(time) {
-			this.media.setCurrentTime(time);
-		},
-		getCurrentTime: function() {
-			return this.media.currentTime;
-		},
-		setVolume: function(volume) {
-			this.media.setVolume(volume);
-		},
-		getVolume: function() {
-			return this.media.volume;
-		},
-		setSrc: function(src) {
-			this.media.setSrc(src);
-		},
-		remove: function() {
-			var t = this, featureIndex, feature;
+			node['get' + capName] = function () {
+				return node[propName];
+			};
 
-			// invoke features cleanup
-			for (featureIndex in t.options.features) {
-				feature = t.options.features[featureIndex];
-				if (t['clean' + feature]) {
-					try {
-						t['clean' + feature](t);
-					} catch (e) {
-						// TODO: report control error
-						//throw e;
-						//
-						//
-					}
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					node[propName] = value;
 				}
-			}
-
-			// grab video and put it back in place
-			if (!t.isDynamic) {
-				t.$media.prop('controls', true);
-				// detach events from the video
-				// TODO: detach event listeners better than this;
-				//       also detach ONLY the events attached by this plugin!
-				t.$node.clone().insertBefore(t.container).show();
-				t.$node.remove();
-			} else {
-				t.$node.insertBefore(t.container);
-			}
+			};
+		};
 
-			if (t.media.pluginType !== 'native') {
-				t.media.remove();
-			}
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
 
-			// Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to pause a non existance flash api.
-			delete mejs.players[t.id];
+		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+		    assignEvents = function assignEvents(eventName) {
 
-			if (typeof t.container == 'object') {
-				t.container.remove();
-			}
-			t.globalUnbind();
-			delete t.node.player;
-		}
-	};
+			node.addEventListener(eventName, function (e) {
+				// copy event
 
-	(function(){
-		var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
-
-		function splitEvents(events, id) {
-			// add player ID as an event namespace so it's easier to unbind them all later
-			var ret = {d: [], w: []};
-			$.each((events || '').split(' '), function(k, v){
-				var eventname = v + '.' + id;
-				if (eventname.indexOf('.') === 0) {
-					ret.d.push(eventname);
-					ret.w.push(eventname);
-				}
-				else {
-					ret[rwindow.test(v) ? 'w' : 'd'].push(eventname);
-				}
+				var event = _document2.default.createEvent('HTMLEvents');
+				event.initEvent(e.type, e.bubbles, e.cancelable);
+				mediaElement.dispatchEvent(event);
 			});
-			ret.d = ret.d.join(' ');
-			ret.w = ret.w.join(' ');
-			return ret;
+		};
+
+		for (var _i = 0, _total = events.length; _i < _total; _i++) {
+			assignEvents(events[_i]);
 		}
 
-		mejs.MediaElementPlayer.prototype.globalBind = function(events, data, callback) {
-			var t = this;
-			events = splitEvents(events, t.id);
-			if (events.d) $(document).bind(events.d, data, callback);
-			if (events.w) $(window).bind(events.w, data, callback);
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
 		};
 
-		mejs.MediaElementPlayer.prototype.globalUnbind = function(events, callback) {
-			var t = this;
-			events = splitEvents(events, t.id);
-			if (events.d) $(document).unbind(events.d, callback);
-			if (events.w) $(window).unbind(events.w, callback);
+		node.hide = function () {
+			node.style.display = 'none';
+
+			return node;
 		};
-	})();
 
-	// turn into jQuery plugin
-	if (typeof $ != 'undefined') {
-		$.fn.mediaelementplayer = function (options) {
-			if (options === false) {
-				this.each(function () {
-					var player = $(this).data('mediaelementplayer');
-					if (player) {
-						player.remove();
-					}
-					$(this).removeData('mediaelementplayer');
-				});
-			}
-			else {
-				this.each(function () {
-					$(this).data('mediaelementplayer', new mejs.MediaElementPlayer(this, options));
-				});
-			}
-			return this;
+		node.show = function () {
+			node.style.display = '';
+
+			return node;
 		};
 
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
+			}
+		}
 
-		$(document).ready(function() {
-			// auto enable using JSON attribute
-			$('.mejs-player').mediaelementplayer();
-		});
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
+
+		return node;
 	}
+};
 
-	// push out to window
-	window.MediaElementPlayer = mejs.MediaElementPlayer;
+_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
 
-})(mejs.$);
+_renderer.renderer.add(HtmlMediaElement);
 
-(function($) {
+},{"2":2,"23":23,"25":25,"3":3,"6":6,"7":7}],22:[function(_dereq_,module,exports){
+'use strict';
 
-	$.extend(mejs.MepDefaults, {
-		playpauseText: mejs.i18n.t('Play/Pause')
-	});
+var _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; };
 
-	// PLAY/pause BUTTON
-	$.extend(MediaElementPlayer.prototype, {
-		buildplaypause: function(player, controls, layers, media) {
-			var 
-				t = this,
-				play = 
-				$('<div class="mejs-button mejs-playpause-button mejs-play" >' +
-					'<button type="button" aria-controls="' + t.id + '" title="' + t.options.playpauseText + '" aria-label="' + t.options.playpauseText + '"></button>' +
-				'</div>')
-				.appendTo(controls)
-				.click(function(e) {
-					e.preventDefault();
-				
-					if (media.paused) {
-						media.play();
-					} else {
-						media.pause();
-					}
-					
-					return false;
-				});
+var _window = _dereq_(3);
 
-			media.addEventListener('play',function() {
-				play.removeClass('mejs-play').addClass('mejs-pause');
-			}, false);
-			media.addEventListener('playing',function() {
-				play.removeClass('mejs-play').addClass('mejs-pause');
-			}, false);
+var _window2 = _interopRequireDefault(_window);
 
+var _document = _dereq_(2);
 
-			media.addEventListener('pause',function() {
-				play.removeClass('mejs-pause').addClass('mejs-play');
-			}, false);
-			media.addEventListener('paused',function() {
-				play.removeClass('mejs-pause').addClass('mejs-play');
-			}, false);
-		}
-	});
-	
-})(mejs.$);
+var _document2 = _interopRequireDefault(_document);
 
-(function($) {
+var _mejs = _dereq_(6);
 
-	$.extend(mejs.MepDefaults, {
-		stopText: 'Stop'
-	});
+var _mejs2 = _interopRequireDefault(_mejs);
 
-	// STOP BUTTON
-	$.extend(MediaElementPlayer.prototype, {
-		buildstop: function(player, controls, layers, media) {
-			var t = this,
-				stop = 
-				$('<div class="mejs-button mejs-stop-button mejs-stop">' +
-					'<button type="button" aria-controls="' + t.id + '" title="' + t.options.stopText + '" aria-label="' + t.options.stopText + '"></button>' +
-				'</div>')
-				.appendTo(controls)
-				.click(function() {
-					if (!media.paused) {
-						media.pause();
-					}
-					if (media.currentTime > 0) {
-						media.setCurrentTime(0);
-                        media.pause();
-						controls.find('.mejs-time-current').width('0px');
-						controls.find('.mejs-time-handle').css('left', '0px');
-						controls.find('.mejs-time-float-current').html( mejs.Utility.secondsToTimeCode(0) );
-						controls.find('.mejs-currenttime').html( mejs.Utility.secondsToTimeCode(0) );					
-						layers.find('.mejs-poster').show();
-					}
-				});
-		}
-	});
-	
-})(mejs.$);
-
-(function($) {
-	// progress/loaded bar
-	$.extend(MediaElementPlayer.prototype, {
-		buildprogress: function(player, controls, layers, media) {
-
-			$('<div class="mejs-time-rail">'+
-				'<span class="mejs-time-total">'+
-					'<span class="mejs-time-buffering"></span>'+
-					'<span class="mejs-time-loaded"></span>'+
-					'<span class="mejs-time-current"></span>'+
-					'<span class="mejs-time-handle"></span>'+
-					'<span class="mejs-time-float">' + 
-						'<span class="mejs-time-float-current">00:00</span>' + 
-						'<span class="mejs-time-float-corner"></span>' + 
-					'</span>'+
-				'</span>'+
-			'</div>')
-				.appendTo(controls);
-				controls.find('.mejs-time-buffering').hide();
-
-			var 
-				t = this,
-				total = controls.find('.mejs-time-total'),
-				loaded  = controls.find('.mejs-time-loaded'),
-				current  = controls.find('.mejs-time-current'),
-				handle  = controls.find('.mejs-time-handle'),
-				timefloat  = controls.find('.mejs-time-float'),
-				timefloatcurrent  = controls.find('.mejs-time-float-current'),
-				handleMouseMove = function (e) {
-					// mouse or touch position relative to the object
-					if (e.originalEvent.changedTouches) {
-						var x = e.originalEvent.changedTouches[0].pageX;
-					}else{
-						var x = e.pageX;
-					}
-					
-					var offset = total.offset(),
-						width = total.outerWidth(true),
-						percentage = 0,
-						newTime = 0,
-						pos = 0;
-
-
-					if (media.duration) {
-						if (x < offset.left) {
-							x = offset.left;
-						} else if (x > width + offset.left) {
-							x = width + offset.left;
-						}
-						
-						pos = x - offset.left;
-						percentage = (pos / width);
-						newTime = (percentage <= 0.02) ? 0 : percentage * media.duration;
+var _renderer = _dereq_(7);
 
-						// seek to where the mouse is
-						if (mouseIsDown && newTime !== media.currentTime) {
-							media.setCurrentTime(newTime);
-						}
+var _general = _dereq_(25);
 
-						// position floating time box
-						if (!mejs.MediaFeatures.hasTouch) {
-								timefloat.css('left', pos);
-								timefloatcurrent.html( mejs.Utility.secondsToTimeCode(newTime) );
-								timefloat.show();
-						}
-					}
-				},
-				mouseIsDown = false,
-				mouseIsOver = false;
+var _media = _dereq_(26);
 
-			// handle clicks
-			//controls.find('.mejs-time-rail').delegate('span', 'click', handleMouseMove);
-			total
-				.bind('mousedown touchstart', function (e) {
-					// only handle left clicks or touch
-					if (e.which === 1 || e.which === 0) {
-						mouseIsDown = true;
-						handleMouseMove(e);
-						t.globalBind('mousemove.dur touchmove.dur', function(e) {
-							handleMouseMove(e);
-						});
-						t.globalBind('mouseup.dur touchend.dur', function (e) {
-							mouseIsDown = false;
-							timefloat.hide();
-							t.globalUnbind('.dur');
-						});
-						return false;
-					}
-				})
-				.bind('mouseenter', function(e) {
-					mouseIsOver = true;
-					t.globalBind('mousemove.dur', function(e) {
-						handleMouseMove(e);
-					});
-					if (!mejs.MediaFeatures.hasTouch) {
-						timefloat.show();
-					}
-				})
-				.bind('mouseleave',function(e) {
-					mouseIsOver = false;
-					if (!mouseIsDown) {
-						t.globalUnbind('.dur');
-						timefloat.hide();
-					}
-				});
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-			// loading
-			media.addEventListener('progress', function (e) {
-				player.setProgressRail(e);
-				player.setCurrentRail(e);
-			}, false);
+/**
+ * YouTube renderer
+ *
+ * Uses <iframe> approach and uses YouTube API to manipulate it.
+ * Note: IE6-7 don't have postMessage so don't support <iframe> API, and IE8 doesn't fire the onReady event,
+ * so it doesn't work - not sure if Google problem or not.
+ * @see https://developers.google.com/youtube/iframe_api_reference
+ */
+var YouTubeApi = {
+	/**
+  * @type {Boolean}
+  */
+	isIframeStarted: false,
+	/**
+  * @type {Boolean}
+  */
+	isIframeLoaded: false,
+	/**
+  * @type {Array}
+  */
+	iframeQueue: [],
 
-			// current time
-			media.addEventListener('timeupdate', function(e) {
-				player.setProgressRail(e);
-				player.setCurrentRail(e);
-			}, false);
-			
-			
-			// store for later use
-			t.loaded = loaded;
-			t.total = total;
-			t.current = current;
-			t.handle = handle;
-		},
-		setProgressRail: function(e) {
-
-			var
-				t = this,
-				target = (e != undefined) ? e.target : t.media,
-				percent = null;			
-
-			// newest HTML5 spec has buffered array (FF4, Webkit)
-			if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) {
-				// TODO: account for a real array with multiple values (only Firefox 4 has this so far) 
-				percent = target.buffered.end(0) / target.duration;
-			} 
-			// Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end()
-			// to be anything other than 0. If the byte count is available we use this instead.
-			// Browsers that support the else if do not seem to have the bufferedBytes value and
-			// should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8.
-			else if (target && target.bytesTotal != undefined && target.bytesTotal > 0 && target.bufferedBytes != undefined) {
-				percent = target.bufferedBytes / target.bytesTotal;
-			}
-			// Firefox 3 with an Ogg file seems to go this way
-			else if (e && e.lengthComputable && e.total != 0) {
-				percent = e.loaded/e.total;
-			}
+	/**
+  * Create a queue to prepare the creation of <iframe>
+  *
+  * @param {Object} settings - an object with settings needed to create <iframe>
+  */
+	enqueueIframe: function enqueueIframe(settings) {
 
-			// finally update the progress bar
-			if (percent !== null) {
-				percent = Math.min(1, Math.max(0, percent));
-				// update loaded bar
-				if (t.loaded && t.total) {
-					t.loaded.width(t.total.width() * percent);
-				}
-			}
-		},
-		setCurrentRail: function() {
+		// Check whether YouTube API is already loaded.
+		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
 
-			var t = this;
-		
-			if (t.media.currentTime != undefined && t.media.duration) {
+		if (YouTubeApi.isLoaded) {
+			YouTubeApi.createIframe(settings);
+		} else {
+			YouTubeApi.loadIframeApi();
+			YouTubeApi.iframeQueue.push(settings);
+		}
+	},
 
-				// update bar and handle
-				if (t.total && t.handle) {
-					var 
-						newWidth = Math.round(t.total.width() * t.media.currentTime / t.media.duration),
-						handlePos = newWidth - Math.round(t.handle.outerWidth(true) / 2);
+	/**
+  * Load YouTube API script on the header of the document
+  *
+  */
+	loadIframeApi: function loadIframeApi() {
+		if (!YouTubeApi.isIframeStarted) {
+			var tag = _document2.default.createElement('script');
+			tag.src = '//www.youtube.com/player_api';
+			var firstScriptTag = _document2.default.getElementsByTagName('script')[0];
+			firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+			YouTubeApi.isIframeStarted = true;
+		}
+	},
 
-					t.current.width(newWidth);
-					t.handle.css('left', handlePos);
-				}
-			}
+	/**
+  * Process queue of YouTube <iframe> element creation
+  *
+  */
+	iFrameReady: function iFrameReady() {
 
-		}	
-	});
-})(mejs.$);
-
-(function($) {
-	
-	// options
-	$.extend(mejs.MepDefaults, {
-		duration: -1,
-		timeAndDurationSeparator: '<span> | </span>'
-	});
+		YouTubeApi.isLoaded = true;
+		YouTubeApi.isIframeLoaded = true;
+
+		while (YouTubeApi.iframeQueue.length > 0) {
+			var settings = YouTubeApi.iframeQueue.pop();
+			YouTubeApi.createIframe(settings);
+		}
+	},
 
+	/**
+  * Create a new instance of YouTube API player and trigger a custom event to initialize it
+  *
+  * @param {Object} settings - an object with settings needed to create <iframe>
+  */
+	createIframe: function createIframe(settings) {
+		return new YT.Player(settings.containerId, settings);
+	},
 
-	// current and duration 00:00 / 00:00
-	$.extend(MediaElementPlayer.prototype, {
-		buildcurrent: function(player, controls, layers, media) {
-			var t = this;
-			
-			$('<div class="mejs-time">'+
-					'<span class="mejs-currenttime">' + (player.options.alwaysShowHours ? '00:' : '')
-					+ (player.options.showTimecodeFrameCount? '00:00:00':'00:00')+ '</span>'+
-					'</div>')
-					.appendTo(controls);
-			
-			t.currenttime = t.controls.find('.mejs-currenttime');
-
-			media.addEventListener('timeupdate',function() {
-				player.updateCurrent();
-			}, false);
-		},
+	/**
+  * Extract ID from YouTube's URL to be loaded through API
+  * Valid URL format(s):
+  * - http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
+  * - http://www.youtube.com/v/VIDEO_ID?version=3
+  * - http://youtu.be/Djd6tPrxc08
+  * - http://www.youtube-nocookie.com/watch?feature=player_embedded&v=yyWWXSwtPP0
+  *
+  * @param {String} url
+  * @return {string}
+  */
+	getYouTubeId: function getYouTubeId(url) {
+
+		var youTubeId = '';
+
+		if (url.indexOf('?') > 0) {
+			// assuming: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
+			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
+
+			// if it's http://www.youtube.com/v/VIDEO_ID?version=3
+			if (youTubeId === '') {
+				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
+			}
+		} else {
+			youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
+		}
 
+		return youTubeId;
+	},
 
-		buildduration: function(player, controls, layers, media) {
-			var t = this;
-			
-			if (controls.children().last().find('.mejs-currenttime').length > 0) {
-				$(t.options.timeAndDurationSeparator +
-					'<span class="mejs-duration">' + 
-						(t.options.duration > 0 ? 
-							mejs.Utility.secondsToTimeCode(t.options.duration, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25) :
-				   			((player.options.alwaysShowHours ? '00:' : '') + (player.options.showTimecodeFrameCount? '00:00:00':'00:00')) 
-				   		) + 
-					'</span>')
-					.appendTo(controls.find('.mejs-time'));
-			} else {
+	/**
+  * Get ID from URL with format: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
+  *
+  * @param {String} url
+  * @returns {string}
+  */
+	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
 
-				// add class to current time
-				controls.find('.mejs-currenttime').parent().addClass('mejs-currenttime-container');
-				
-				$('<div class="mejs-time mejs-duration-container">'+
-					'<span class="mejs-duration">' + 
-						(t.options.duration > 0 ? 
-							mejs.Utility.secondsToTimeCode(t.options.duration, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25) :
-				   			((player.options.alwaysShowHours ? '00:' : '') + (player.options.showTimecodeFrameCount? '00:00:00':'00:00')) 
-				   		) + 
-					'</span>' +
-				'</div>')
-				.appendTo(controls);
-			}
-			
-			t.durationD = t.controls.find('.mejs-duration');
-
-			media.addEventListener('timeupdate',function() {
-				player.updateDuration();
-			}, false);
-		},
-		
-		updateCurrent:  function() {
-			var t = this;
+		if (url === undefined || url === null || !url.trim().length) {
+			return null;
+		}
+
+		var parts = url.split('?'),
+		    parameters = parts[1].split('&');
 
-			if (t.currenttime) {
-				t.currenttime.html(mejs.Utility.secondsToTimeCode(t.media.currentTime, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25));
+		var youTubeId = '';
+
+		for (var i = 0, total = parameters.length; i < total; i++) {
+			var paramParts = parameters[i].split('=');
+			if (paramParts[0] === 'v') {
+				youTubeId = paramParts[1];
+				break;
 			}
-		},
-		
-		updateDuration: function() {
-			var t = this;
+		}
+
+		return youTubeId;
+	},
 
-			//Toggle the long video class if the video is longer than an hour.
-			t.container.toggleClass("mejs-long-video", t.media.duration > 3600);
-			
-			if (t.durationD && (t.options.duration > 0 || t.media.duration)) {
-				t.durationD.html(mejs.Utility.secondsToTimeCode(t.options.duration > 0 ? t.options.duration : t.media.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond || 25));
-			}		
+	/**
+  * Get ID from URL with formats
+  *  - http://www.youtube.com/v/VIDEO_ID?version=3
+  *  - http://youtu.be/Djd6tPrxc08
+  * @param {String} url
+  * @return {?String}
+  */
+	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
+
+		if (url === undefined || url === null || !url.trim().length) {
+			return null;
 		}
-	});
 
-})(mejs.$);
+		var parts = url.split('?');
+		url = parts[0];
+		return url.substring(url.lastIndexOf('/') + 1);
+	},
 
-(function($) {
+	/**
+  * Inject `no-cookie` element to URL. Only works with format: http://www.youtube.com/v/VIDEO_ID?version=3
+  * @param {String} url
+  * @return {?String}
+  */
+	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
+		if (url === undefined || url === null || !url.trim().length || !url.includes('//www.youtube')) {
+			return url;
+		}
 
-	$.extend(mejs.MepDefaults, {
-		muteText: mejs.i18n.t('Mute Toggle'),
-		hideVolumeOnTouchDevices: true,
-		
-		audioVolume: 'horizontal',
-		videoVolume: 'vertical'
-	});
+		var parts = url.split('/');
+		parts[2] = parts[2].replace('.com', '-nocookie.com');
+		return parts.join('/');
+	}
+};
 
-	$.extend(MediaElementPlayer.prototype, {
-		buildvolume: function(player, controls, layers, media) {
-				
-			// Android and iOS don't support volume controls
-			if ((mejs.MediaFeatures.isAndroid || mejs.MediaFeatures.isiOS) && this.options.hideVolumeOnTouchDevices)
-				return;
-			
-			var t = this,
-				mode = (t.isVideo) ? t.options.videoVolume : t.options.audioVolume,
-				mute = (mode == 'horizontal') ?
-				
-				// horizontal version
-				$('<div class="mejs-button mejs-volume-button mejs-mute">'+
-					'<button type="button" aria-controls="' + t.id + '" title="' + t.options.muteText + '" aria-label="' + t.options.muteText + '"></button>'+
-				'</div>' +
-				'<div class="mejs-horizontal-volume-slider">'+ // outer background
-					'<div class="mejs-horizontal-volume-total"></div>'+ // line background
-					'<div class="mejs-horizontal-volume-current"></div>'+ // current volume
-					'<div class="mejs-horizontal-volume-handle"></div>'+ // handle
-				'</div>'
-				)
-					.appendTo(controls) :
-				
-				// vertical version
-				$('<div class="mejs-button mejs-volume-button mejs-mute">'+
-					'<button type="button" aria-controls="' + t.id + '" title="' + t.options.muteText + '" aria-label="' + t.options.muteText + '"></button>'+
-					'<div class="mejs-volume-slider">'+ // outer background
-						'<div class="mejs-volume-total"></div>'+ // line background
-						'<div class="mejs-volume-current"></div>'+ // current volume
-						'<div class="mejs-volume-handle"></div>'+ // handle
-					'</div>'+
-				'</div>')
-					.appendTo(controls),
-			volumeSlider = t.container.find('.mejs-volume-slider, .mejs-horizontal-volume-slider'),
-			volumeTotal = t.container.find('.mejs-volume-total, .mejs-horizontal-volume-total'),
-			volumeCurrent = t.container.find('.mejs-volume-current, .mejs-horizontal-volume-current'),
-			volumeHandle = t.container.find('.mejs-volume-handle, .mejs-horizontal-volume-handle'),
-
-			positionVolumeHandle = function(volume, secondTry) {
-
-				if (!volumeSlider.is(':visible') && typeof secondTry == 'undefined') {
-					volumeSlider.show();
-					positionVolumeHandle(volume, true);
-					volumeSlider.hide()
-					return;
-				}
-			
-				// correct to 0-1
-				volume = Math.max(0,volume);
-				volume = Math.min(volume,1);					
-				
-				// ajust mute button style
-				if (volume == 0) {
-					mute.removeClass('mejs-mute').addClass('mejs-unmute');
-				} else {
-					mute.removeClass('mejs-unmute').addClass('mejs-mute');
-				}				
+var YouTubeIframeRenderer = {
+	name: 'youtube_iframe',
+
+	options: {
+		prefix: 'youtube_iframe',
+		/**
+   * Custom configuration for YouTube player
+   *
+   * @see https://developers.google.com/youtube/player_parameters#Parameters
+   * @type {Object}
+   */
+		youtube: {
+			autoplay: 0,
+			controls: 0,
+			disablekb: 1,
+			end: 0,
+			loop: 0,
+			modestbranding: 0,
+			playsinline: 0,
+			rel: 0,
+			showinfo: 0,
+			start: 0,
+			iv_load_policy: 3,
+			// custom to inject `-nocookie` element in URL
+			nocookie: false
+		}
+	},
 
-				// position slider 
-				if (mode == 'vertical') {
-					var 
-					
-						// height of the full size volume slider background
-						totalHeight = volumeTotal.height(),
-						
-						// top/left of full size volume slider background
-						totalPosition = volumeTotal.position(),
-						
-						// the new top position based on the current volume
-						// 70% volume on 100px height == top:30px
-						newTop = totalHeight - (totalHeight * volume);
-	
-					// handle
-					volumeHandle.css('top', Math.round(totalPosition.top + newTop - (volumeHandle.height() / 2)));
-	
-					// show the current visibility
-					volumeCurrent.height(totalHeight - newTop );
-					volumeCurrent.css('top', totalPosition.top + newTop);
-				} else {
-					var 
-					
-						// height of the full size volume slider background
-						totalWidth = volumeTotal.width(),
-						
-						// top/left of full size volume slider background
-						totalPosition = volumeTotal.position(),
-						
-						// the new left position based on the current volume
-						newLeft = totalWidth * volume;
-	
-					// handle
-					volumeHandle.css('left', Math.round(totalPosition.left + newLeft - (volumeHandle.width() / 2)));
-	
-					// rezize the current part of the volume bar
-					volumeCurrent.width( Math.round(newLeft) );
-				}
-			},
-			handleVolumeMove = function(e) {
-				
-				var volume = null,
-					totalOffset = volumeTotal.offset();
-				
-				// calculate the new volume based on the moust position
-				if (mode == 'vertical') {
-				
-					var
-						railHeight = volumeTotal.height(),
-						totalTop = parseInt(volumeTotal.css('top').replace(/px/,''),10),
-						newY = e.pageY - totalOffset.top;
-						
-					volume = (railHeight - newY) / railHeight;
-						
-					// the controls just hide themselves (usually when mouse moves too far up)
-					if (totalOffset.top == 0 || totalOffset.left == 0)
-						return;
-					
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {Boolean}
+  */
+	canPlayType: function canPlayType(type) {
+		return ['video/youtube', 'video/x-youtube'].includes(type);
+	},
+
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		// API objects
+		var youtube = {},
+		    apiStack = [],
+		    readyState = 4;
+
+		var youTubeApi = null,
+		    paused = true,
+		    ended = false,
+		    youTubeIframe = null,
+		    volume = 1;
+
+		youtube.options = options;
+		youtube.id = mediaElement.id + '_' + options.prefix;
+		youtube.mediaElement = mediaElement;
+
+		// wrappers for get/set
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+
+			// add to flash state that we will store
+
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			youtube['get' + capName] = function () {
+				if (youTubeApi !== null) {
+					var value = null;
+
+					// figure out how to get youtube dta here
+
+					var _ret = function () {
+						switch (propName) {
+							case 'currentTime':
+								return {
+									v: youTubeApi.getCurrentTime()
+								};
+
+							case 'duration':
+								return {
+									v: youTubeApi.getDuration()
+								};
+
+							case 'volume':
+								volume = youTubeApi.getVolume() / 100;
+								return {
+									v: volume
+								};
+
+							case 'paused':
+								return {
+									v: paused
+								};
+
+							case 'ended':
+								return {
+									v: ended
+								};
+
+							case 'muted':
+								return {
+									v: youTubeApi.isMuted()
+								};
+
+							case 'buffered':
+								var percentLoaded = youTubeApi.getVideoLoadedFraction(),
+								    duration = youTubeApi.getDuration();
+								return {
+									v: {
+										start: function start() {
+											return 0;
+										},
+										end: function end() {
+											return percentLoaded * duration;
+										},
+										length: 1
+									}
+								};
+							case 'src':
+								return {
+									v: youTubeApi.getVideoUrl()
+								};
+
+							case 'readyState':
+								return {
+									v: readyState
+								};
+						}
+					}();
+
+					if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
+					return value;
 				} else {
-					var
-						railWidth = volumeTotal.width(),
-						newX = e.pageX - totalOffset.left;
-						
-					volume = newX / railWidth;
+					return null;
 				}
-				
-				// ensure the volume isn't outside 0-1
-				volume = Math.max(0,volume);
-				volume = Math.min(volume,1);
-				
-				// position the slider and handle			
-				positionVolumeHandle(volume);
-				
-				// set the media object (this will trigger the volumechanged event)
-				if (volume == 0) {
-					media.setMuted(true);
+			};
+
+			youtube['set' + capName] = function (value) {
+
+				if (youTubeApi !== null) {
+
+					// do something
+					switch (propName) {
+
+						case 'src':
+							var url = typeof value === 'string' ? value : value[0].src,
+							    _videoId = YouTubeApi.getYouTubeId(url);
+
+							if (mediaElement.originalNode.autoplay) {
+								youTubeApi.loadVideoById(_videoId);
+							} else {
+								youTubeApi.cueVideoById(_videoId);
+							}
+							break;
+
+						case 'currentTime':
+							youTubeApi.seekTo(value);
+							break;
+
+						case 'muted':
+							if (value) {
+								youTubeApi.mute();
+							} else {
+								youTubeApi.unMute();
+							}
+							setTimeout(function () {
+								var event = (0, _general.createEvent)('volumechange', youtube);
+								mediaElement.dispatchEvent(event);
+							}, 50);
+							break;
+
+						case 'volume':
+							volume = value;
+							youTubeApi.setVolume(value * 100);
+							setTimeout(function () {
+								var event = (0, _general.createEvent)('volumechange', youtube);
+								mediaElement.dispatchEvent(event);
+							}, 50);
+							break;
+						case 'readyState':
+							var event = (0, _general.createEvent)('canplay', youtube);
+							mediaElement.dispatchEvent(event);
+							break;
+
+						default:
+							
+							break;
+					}
 				} else {
-					media.setMuted(false);
+					// store for after "READY" event fires
+					apiStack.push({ type: 'set', propName: propName, value: value });
 				}
-				media.setVolume(volume);			
-			},
-			mouseIsDown = false,
-			mouseIsOver = false;
+			};
+		};
 
-			// SLIDER
-			
-			mute
-				.hover(function() {
-					volumeSlider.show();
-					mouseIsOver = true;
-				}, function() {
-					mouseIsOver = false;	
-						
-					if (!mouseIsDown && mode == 'vertical')	{
-						volumeSlider.hide();
-					}
-				});
-			
-			volumeSlider
-				.bind('mouseover', function() {
-					mouseIsOver = true;	
-				})
-				.bind('mousedown', function (e) {
-					handleVolumeMove(e);
-					t.globalBind('mousemove.vol', function(e) {
-						handleVolumeMove(e);
-					});
-					t.globalBind('mouseup.vol', function () {
-						mouseIsDown = false;
-						t.globalUnbind('.vol');
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
 
-						if (!mouseIsOver && mode == 'vertical') {
-							volumeSlider.hide();
-						}
-					});
-					mouseIsDown = true;
-						
-					return false;
-				});
+		// add wrappers for native methods
+		var methods = _mejs2.default.html5media.methods,
+		    assignMethods = function assignMethods(methodName) {
 
+			// run the method on the native HTMLMediaElement
+			youtube[methodName] = function () {
 
-			// MUTE button
-			mute.find('button').click(function() {
-				media.setMuted( !media.muted );
-			});
+				if (youTubeApi !== null) {
+
+					// DO method
+					switch (methodName) {
+						case 'play':
+							paused = false;
+							return youTubeApi.playVideo();
+						case 'pause':
+							paused = true;
+							return youTubeApi.pauseVideo();
+						case 'load':
+							return null;
 
-			// listen for volume change events from other sources
-			media.addEventListener('volumechange', function(e) {
-				if (!mouseIsDown) {
-					if (media.muted) {
-						positionVolumeHandle(0);
-						mute.removeClass('mejs-mute').addClass('mejs-unmute');
-					} else {
-						positionVolumeHandle(media.volume);
-						mute.removeClass('mejs-unmute').addClass('mejs-mute');
 					}
+				} else {
+					apiStack.push({ type: 'call', methodName: methodName });
 				}
-			}, false);
+			};
+		};
 
-			if (t.container.is(':visible')) {
-				// set initial volume
-				positionVolumeHandle(player.options.startVolume);
+		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
+			assignMethods(methods[_i]);
+		}
 
-				// mutes the media and sets the volume icon muted if the initial volume is set to 0
-        if (player.options.startVolume === 0) {
-          media.setMuted(true);
-        }
+		// CREATE YouTube
+		var youtubeContainer = _document2.default.createElement('div');
+		youtubeContainer.id = youtube.id;
 
-				// shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements
-				if (media.pluginType === 'native') {
-					media.setVolume(player.options.startVolume);
-				}
-			}
+		// If `nocookie` feature was enabled, modify original URL
+		if (youtube.options.youtube.nocookie) {
+			mediaElement.originalNode.setAttribute('src', YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src));
 		}
-	});
-	
-})(mejs.$);
 
-(function($) {
+		mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
+		mediaElement.originalNode.style.display = 'none';
+
+		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
+		    height = isAudio ? '0' : mediaElement.originalNode.height,
+		    width = isAudio ? '0' : mediaElement.originalNode.width,
+		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
+		    youtubeSettings = {
+			id: youtube.id,
+			containerId: youtubeContainer.id,
+			videoId: videoId,
+			height: height,
+			width: width,
+			playerVars: Object.assign({
+				controls: 0,
+				rel: 0,
+				disablekb: 1,
+				showinfo: 0,
+				modestbranding: 0,
+				html5: 1,
+				playsinline: 0,
+				start: 0,
+				end: 0,
+				iv_load_policy: 3
+			}, youtube.options.youtube),
+			origin: _window2.default.location.host,
+			events: {
+				onReady: function onReady(e) {
+					mediaElement.youTubeApi = youTubeApi = e.target;
+					mediaElement.youTubeState = {
+						paused: true,
+						ended: false
+					};
 
-	$.extend(mejs.MepDefaults, {
-		usePluginFullScreen: true,
-		newWindowCallback: function() { return '';},
-		fullscreenText: mejs.i18n.t('Fullscreen')
-	});
+					// do call stack
+					if (apiStack.length) {
+						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
 
-	$.extend(MediaElementPlayer.prototype, {
+							var stackItem = apiStack[_i2];
 
-		isFullScreen: false,
+							if (stackItem.type === 'set') {
+								var propName = stackItem.propName,
+								    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
-		isNativeFullScreen: false,
+								youtube['set' + capName](stackItem.value);
+							} else if (stackItem.type === 'call') {
+								youtube[stackItem.methodName]();
+							}
+						}
+					}
 
-		isInIframe: false,
+					// a few more events
+					youTubeIframe = youTubeApi.getIframe();
 
-		buildfullscreen: function(player, controls, layers, media) {
+					var events = ['mouseover', 'mouseout'],
+					    assignEvents = function assignEvents(e) {
 
-			if (!player.isVideo)
-				return;
+						var newEvent = (0, _general.createEvent)(e.type, youtube);
+						mediaElement.dispatchEvent(newEvent);
+					};
 
-			player.isInIframe = (window.location != window.parent.location);
+					for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
+						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
+					}
 
-			// native events
-			if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
+					// send init events
+					var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay'];
 
-				// chrome doesn't alays fire this in an iframe
-				var func = function(e) {
-					if (player.isFullScreen) {
-						if (mejs.MediaFeatures.isFullScreen()) {
-							player.isNativeFullScreen = true;
-							// reset the controls once we are fully in full screen
-							player.setControlsSize();
-						} else {
-							player.isNativeFullScreen = false;
-							// when a user presses ESC
-							// make sure to put the player back into place
-							player.exitFullScreen();
-						}
+					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
+						var event = (0, _general.createEvent)(initEvents[_i4], youtube);
+						mediaElement.dispatchEvent(event);
+					}
+				},
+				onStateChange: function onStateChange(e) {
+
+					// translate events
+					var events = [];
+
+					switch (e.data) {
+						case -1:
+							// not started
+							events = ['loadedmetadata'];
+							paused = true;
+							ended = false;
+							break;
+
+						case 0:
+							// YT.PlayerState.ENDED
+							events = ['ended'];
+							paused = false;
+							ended = true;
+
+							youtube.stopInterval();
+							break;
+
+						case 1:
+							// YT.PlayerState.PLAYING
+							events = ['play', 'playing'];
+							paused = false;
+							ended = false;
+
+							youtube.startInterval();
+
+							break;
+
+						case 2:
+							// YT.PlayerState.PAUSED
+							events = ['pause'];
+							paused = true;
+							ended = false;
+
+							youtube.stopInterval();
+							break;
+
+						case 3:
+							// YT.PlayerState.BUFFERING
+							events = ['progress'];
+							ended = false;
+
+							break;
+						case 5:
+							// YT.PlayerState.CUED
+							events = ['loadeddata', 'loadedmetadata', 'canplay'];
+							paused = true;
+							ended = false;
+
+							break;
 					}
-				};
 
-				player.globalBind(mejs.MediaFeatures.fullScreenEventName, func);
+					// send events up
+					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
+						var event = (0, _general.createEvent)(events[_i5], youtube);
+						mediaElement.dispatchEvent(event);
+					}
+				},
+				onError: function onError(e) {
+					var event = (0, _general.createEvent)('error', youtube);
+					event.data = e.data;
+					mediaElement.dispatchEvent(event);
+				}
 			}
+		};
 
-			var t = this,
-				normalHeight = 0,
-				normalWidth = 0,
-				container = player.container,
-				fullscreenBtn =
-					$('<div class="mejs-button mejs-fullscreen-button">' +
-						'<button type="button" aria-controls="' + t.id + '" title="' + t.options.fullscreenText + '" aria-label="' + t.options.fullscreenText + '"></button>' +
-					'</div>')
-					.appendTo(controls);
-
-				if (t.media.pluginType === 'native' || (!t.options.usePluginFullScreen && !mejs.MediaFeatures.isFirefox)) {
-
-					fullscreenBtn.click(function() {
-						var isFullScreen = (mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || player.isFullScreen;
-
-						if (isFullScreen) {
-							player.exitFullScreen();
-						} else {
-							player.enterFullScreen();
-						}
-					});
+		// The following will prevent that in mobile devices, YouTube is displayed in fullscreen when using audio
+		if (isAudio) {
+			youtubeSettings.playerVars.playsinline = 1;
+		}
 
-				} else {
+		// send it off for async loading and creation
+		YouTubeApi.enqueueIframe(youtubeSettings);
 
-					var hideTimeout = null,
-						supportsPointerEvents = (function() {
-							// TAKEN FROM MODERNIZR
-							var element = document.createElement('x'),
-								documentElement = document.documentElement,
-								getComputedStyle = window.getComputedStyle,
-								supports;
-							if(!('pointerEvents' in element.style)){
-								return false;
-							}
-							element.style.pointerEvents = 'auto';
-							element.style.pointerEvents = 'x';
-							documentElement.appendChild(element);
-							supports = getComputedStyle &&
-								getComputedStyle(element, '').pointerEvents === 'auto';
-							documentElement.removeChild(element);
-							return !!supports;
-						})();
-
-					//
-
-					if (supportsPointerEvents && !mejs.MediaFeatures.isOpera) { // opera doesn't allow this :(
-
-						// allows clicking through the fullscreen button and controls down directly to Flash
-
-						/*
-						 When a user puts his mouse over the fullscreen button, the controls are disabled
-						 So we put a div over the video and another one on iether side of the fullscreen button
-						 that caputre mouse movement
-						 and restore the controls once the mouse moves outside of the fullscreen button
-						*/
-
-						var fullscreenIsDisabled = false,
-							restoreControls = function() {
-								if (fullscreenIsDisabled) {
-									// hide the hovers
-									for (var i in hoverDivs) {
-										hoverDivs[i].hide();
-									}
+		youtube.onEvent = function (eventName, player, _youTubeState) {
+			if (_youTubeState !== null && _youTubeState !== undefined) {
+				mediaElement.youTubeState = _youTubeState;
+			}
+		};
 
-									// restore the control bar
-									fullscreenBtn.css('pointer-events', '');
-									t.controls.css('pointer-events', '');
+		youtube.setSize = function (width, height) {
+			if (youTubeApi !== null) {
+				youTubeApi.setSize(width, height);
+			}
+		};
+		youtube.hide = function () {
+			youtube.stopInterval();
+			youtube.pause();
+			if (youTubeIframe) {
+				youTubeIframe.style.display = 'none';
+			}
+		};
+		youtube.show = function () {
+			if (youTubeIframe) {
+				youTubeIframe.style.display = '';
+			}
+		};
+		youtube.destroy = function () {
+			youTubeApi.destroy();
+		};
+		youtube.interval = null;
 
-									// prevent clicks from pausing video
-									t.media.removeEventListener('click', t.clickToPlayPauseCallback);
+		youtube.startInterval = function () {
+			// create timer
+			youtube.interval = setInterval(function () {
 
-									// store for later
-									fullscreenIsDisabled = false;
-								}
-							},
-							hoverDivs = {},
-							hoverDivNames = ['top', 'left', 'right', 'bottom'],
-							i, len,
-							positionHoverDivs = function() {
-								var fullScreenBtnOffsetLeft = fullscreenBtn.offset().left - t.container.offset().left,
-									fullScreenBtnOffsetTop = fullscreenBtn.offset().top - t.container.offset().top,
-									fullScreenBtnWidth = fullscreenBtn.outerWidth(true),
-									fullScreenBtnHeight = fullscreenBtn.outerHeight(true),
-									containerWidth = t.container.width(),
-									containerHeight = t.container.height();
-
-								for (i in hoverDivs) {
-									hoverDivs[i].css({position: 'absolute', top: 0, left: 0}); //, backgroundColor: '#f00'});
-								}
+				var event = (0, _general.createEvent)('timeupdate', youtube);
+				mediaElement.dispatchEvent(event);
+			}, 250);
+		};
+		youtube.stopInterval = function () {
+			if (youtube.interval) {
+				clearInterval(youtube.interval);
+			}
+		};
 
-								// over video, but not controls
-								hoverDivs['top']
-									.width( containerWidth )
-									.height( fullScreenBtnOffsetTop );
-
-								// over controls, but not the fullscreen button
-								hoverDivs['left']
-									.width( fullScreenBtnOffsetLeft )
-									.height( fullScreenBtnHeight )
-									.css({top: fullScreenBtnOffsetTop});
-
-								// after the fullscreen button
-								hoverDivs['right']
-									.width( containerWidth - fullScreenBtnOffsetLeft - fullScreenBtnWidth )
-									.height( fullScreenBtnHeight )
-									.css({top: fullScreenBtnOffsetTop,
-										 left: fullScreenBtnOffsetLeft + fullScreenBtnWidth});
-
-								// under the fullscreen button
-								hoverDivs['bottom']
-									.width( containerWidth )
-									.height( containerHeight - fullScreenBtnHeight - fullScreenBtnOffsetTop )
-									.css({top: fullScreenBtnOffsetTop + fullScreenBtnHeight});
-							};
+		return youtube;
+	}
+};
 
-						t.globalBind('resize', function() {
-							positionHoverDivs();
-						});
+if (_window2.default.postMessage && _typeof(_window2.default.addEventListener)) {
 
-						for (i = 0, len = hoverDivNames.length; i < len; i++) {
-							hoverDivs[hoverDivNames[i]] = $('<div class="mejs-fullscreen-hover" />').appendTo(t.container).mouseover(restoreControls).hide();
-						}
+	_window2.default.onYouTubePlayerAPIReady = function () {
+		YouTubeApi.iFrameReady();
+	};
 
-						// on hover, kill the fullscreen button's HTML handling, allowing clicks down to Flash
-						fullscreenBtn.on('mouseover',function() {
+	_media.typeChecks.push(function (url) {
+		url = url.toLowerCase();
+		return url.includes('//www.youtube') || url.includes('//youtu.be') ? 'video/x-youtube' : null;
+	});
 
-							if (!t.isFullScreen) {
+	_renderer.renderer.add(YouTubeIframeRenderer);
+}
 
-								var buttonPos = fullscreenBtn.offset(),
-									containerPos = player.container.offset();
+},{"2":2,"25":25,"26":26,"3":3,"6":6,"7":7}],23:[function(_dereq_,module,exports){
+'use strict';
 
-								// move the button in Flash into place
-								media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, false);
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.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_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_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
 
-								// allows click through
-								fullscreenBtn.css('pointer-events', 'none');
-								t.controls.css('pointer-events', 'none');
+var _window = _dereq_(3);
 
-								// restore click-to-play
-								t.media.addEventListener('click', t.clickToPlayPauseCallback);
+var _window2 = _interopRequireDefault(_window);
 
-								// show the divs that will restore things
-								for (i in hoverDivs) {
-									hoverDivs[i].show();
-								}
+var _document = _dereq_(2);
 
-								positionHoverDivs();
+var _document2 = _interopRequireDefault(_document);
 
-								fullscreenIsDisabled = true;
-							}
+var _mejs = _dereq_(6);
 
-						});
+var _mejs2 = _interopRequireDefault(_mejs);
 
-						// restore controls anytime the user enters or leaves fullscreen
-						media.addEventListener('fullscreenchange', function(e) {
-							t.isFullScreen = !t.isFullScreen;
-							// don't allow plugin click to pause video - messes with
-							// plugin's controls
-							if (t.isFullScreen) {
-								t.media.removeEventListener('click', t.clickToPlayPauseCallback);
-							} else {
-								t.media.addEventListener('click', t.clickToPlayPauseCallback);
-							}
-							restoreControls();
-						});
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
+var NAV = exports.NAV = _window2.default.navigator;
+var UA = exports.UA = NAV.userAgent.toLowerCase();
 
-						// the mouseout event doesn't work on the fullscren button, because we already killed the pointer-events
-						// so we use the document.mousemove event to restore controls when the mouse moves outside the fullscreen button
+var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null;
+var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null;
+var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD;
+var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null;
+var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null;
+var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
+var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null;
+var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null;
+var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME;
+var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null;
 
-						t.globalBind('mousemove', function(e) {
+var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
+var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
+	var element = _document2.default.createElement('x'),
+	    documentElement = _document2.default.documentElement,
+	    getComputedStyle = _window2.default.getComputedStyle;
 
-							// if the mouse is anywhere but the fullsceen button, then restore it all
-							if (fullscreenIsDisabled) {
+	if (!('pointerEvents' in element.style)) {
+		return false;
+	}
 
-								var fullscreenBtnPos = fullscreenBtn.offset();
+	element.style.pointerEvents = 'auto';
+	element.style.pointerEvents = 'x';
+	documentElement.appendChild(element);
+	var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
+	element.remove();
+	return !!supports;
+}();
 
+// for IE
+var html5Elements = ['source', 'track', 'audio', 'video'];
+var video = void 0;
 
-								if (e.pageY < fullscreenBtnPos.top || e.pageY > fullscreenBtnPos.top + fullscreenBtn.outerHeight(true) ||
-									e.pageX < fullscreenBtnPos.left || e.pageX > fullscreenBtnPos.left + fullscreenBtn.outerWidth(true)
-									) {
+for (var i = 0, total = html5Elements.length; i < total; i++) {
+	video = _document2.default.createElement(html5Elements[i]);
+}
 
-									fullscreenBtn.css('pointer-events', '');
-									t.controls.css('pointer-events', '');
+// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge)
+var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null;
 
-									fullscreenIsDisabled = false;
-								}
-							}
-						});
+// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
 
+// iOS
+var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
 
+// W3C
+var hasNativeFullscreen = video.requestFullscreen !== undefined;
 
-					} else {
+// OS X 10.5 can't do this even if it says it can :(
+if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) {
+	hasNativeFullscreen = false;
+	hasiOSFullScreen = false;
+}
 
-						// the hover state will show the fullscreen button in Flash to hover up and click
+// webkit/firefox/IE11+
+var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
+var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
+var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
+
+var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
+var nativeFullScreenEnabled = hasTrueNativeFullScreen;
+var fullScreenEventName = '';
+var isFullScreen = void 0,
+    requestFullScreen = void 0,
+    cancelFullScreen = void 0;
+
+// Enabled?
+if (hasMozNativeFullScreen) {
+	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
+} else if (hasMsNativeFullScreen) {
+	nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
+}
 
-						fullscreenBtn
-							.on('mouseover', function() {
+if (IS_CHROME) {
+	hasiOSFullScreen = false;
+}
 
-								if (hideTimeout !== null) {
-									clearTimeout(hideTimeout);
-									delete hideTimeout;
-								}
+if (hasTrueNativeFullScreen) {
 
-								var buttonPos = fullscreenBtn.offset(),
-									containerPos = player.container.offset();
+	if (hasWebkitNativeFullScreen) {
+		fullScreenEventName = 'webkitfullscreenchange';
+	} else if (hasMozNativeFullScreen) {
+		fullScreenEventName = 'mozfullscreenchange';
+	} else if (hasMsNativeFullScreen) {
+		fullScreenEventName = 'MSFullscreenChange';
+	}
 
-								media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, true);
+	exports.isFullScreen = isFullScreen = function isFullScreen() {
+		if (hasMozNativeFullScreen) {
+			return _document2.default.mozFullScreen;
+		} else if (hasWebkitNativeFullScreen) {
+			return _document2.default.webkitIsFullScreen;
+		} else if (hasMsNativeFullScreen) {
+			return _document2.default.msFullscreenElement !== null;
+		}
+	};
 
-							})
-							.on('mouseout', function() {
+	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
 
-								if (hideTimeout !== null) {
-									clearTimeout(hideTimeout);
-									delete hideTimeout;
-								}
+		if (hasWebkitNativeFullScreen) {
+			el.webkitRequestFullScreen();
+		} else if (hasMozNativeFullScreen) {
+			el.mozRequestFullScreen();
+		} else if (hasMsNativeFullScreen) {
+			el.msRequestFullscreen();
+		}
+	};
 
-								hideTimeout = setTimeout(function() {
-									media.hideFullscreenButton();
-								}, 1500);
+	exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
+		if (hasWebkitNativeFullScreen) {
+			_document2.default.webkitCancelFullScreen();
+		} else if (hasMozNativeFullScreen) {
+			_document2.default.mozCancelFullScreen();
+		} else if (hasMsNativeFullScreen) {
+			_document2.default.msExitFullscreen();
+		}
+	};
+}
 
+var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
+var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
+var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
+var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
+var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
+var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
+var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
+var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
+
+exports.isFullScreen = isFullScreen;
+exports.requestFullScreen = requestFullScreen;
+exports.cancelFullScreen = cancelFullScreen;
+
+
+_mejs2.default.Features = _mejs2.default.Features || {};
+_mejs2.default.Features.isiPad = IS_IPAD;
+_mejs2.default.Features.isiPhone = IS_IPHONE;
+_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
+_mejs2.default.Features.isAndroid = IS_ANDROID;
+_mejs2.default.Features.isIE = IS_IE;
+_mejs2.default.Features.isEdge = IS_EDGE;
+_mejs2.default.Features.isChrome = IS_CHROME;
+_mejs2.default.Features.isFirefox = IS_FIREFOX;
+_mejs2.default.Features.isSafari = IS_SAFARI;
+_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
+_mejs2.default.Features.hasMSE = HAS_MSE;
+_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
+
+_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
+_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
+_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
+_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
+_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
+_mejs2.default.Features.isFullScreen = isFullScreen;
+_mejs2.default.Features.requestFullScreen = requestFullScreen;
+_mejs2.default.Features.cancelFullScreen = cancelFullScreen;
+
+},{"2":2,"3":3,"6":6}],24:[function(_dereq_,module,exports){
+'use strict';
 
-							});
-					}
-				}
+/**
+ * Most of the mtehods have been borrowed/adapted from https://plainjs.com/javascript,
+ * except fadeIn/fadeOut (from https://github.com/DimitriMikadze/vanilla-helpers/blob/master/js/vanillaHelpers.js)
+ */
 
-			player.fullscreenBtn = fullscreenBtn;
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.removeClass = exports.addClass = exports.hasClass = undefined;
+exports.offset = offset;
+exports.toggleClass = toggleClass;
+exports.fadeOut = fadeOut;
+exports.fadeIn = fadeIn;
+exports.siblings = siblings;
+exports.visible = visible;
+exports.ajax = ajax;
 
-			t.globalBind('keydown',function (e) {
-				if (((mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || t.isFullScreen) && e.keyCode == 27) {
-					player.exitFullScreen();
-				}
-			});
+var _window = _dereq_(3);
 
-		},
+var _window2 = _interopRequireDefault(_window);
 
-		cleanfullscreen: function(player) {
-			player.exitFullScreen();
-		},
+var _document = _dereq_(2);
 
-        containerSizeTimeout: null,
+var _document2 = _interopRequireDefault(_document);
 
-		enterFullScreen: function() {
+var _mejs = _dereq_(6);
 
-			var t = this;
+var _mejs2 = _interopRequireDefault(_mejs);
 
-			// firefox+flash can't adjust plugin sizes without resetting :(
-			if (t.media.pluginType !== 'native' && (mejs.MediaFeatures.isFirefox || t.options.usePluginFullScreen)) {
-				//t.media.setFullscreen(true);
-				//player.isFullScreen = true;
-				return;
-			}
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-			// set it to not show scroll bars so 100% will work
-            $(document.documentElement).addClass('mejs-fullscreen');
+function offset(el) {
+	var rect = el.getBoundingClientRect(),
+	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
+	    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
+	return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
+}
 
-			// store sizing
-			normalHeight = t.container.height();
-			normalWidth = t.container.width();
+var hasClassMethod = void 0,
+    addClassMethod = void 0,
+    removeClassMethod = void 0;
 
-			// attempt to do true fullscreen (Safari 5.1 and Firefox Nightly only for now)
-			if (t.media.pluginType === 'native') {
-				if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
+if ('classList' in _document2.default.documentElement) {
+	hasClassMethod = function hasClassMethod(el, className) {
+		return el.classList !== undefined && el.classList.contains(className);
+	};
+	addClassMethod = function addClassMethod(el, className) {
+		return el.classList.add(className);
+	};
+	removeClassMethod = function removeClassMethod(el, className) {
+		return el.classList.remove(className);
+	};
+} else {
+	hasClassMethod = function hasClassMethod(el, className) {
+		return new RegExp('\\b' + className + '\\b').test(el.className);
+	};
+	addClassMethod = function addClassMethod(el, className) {
+		if (!hasClass(el, className)) {
+			el.className += ' ' + className;
+		}
+	};
+	removeClassMethod = function removeClassMethod(el, className) {
+		el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
+	};
+}
 
-					mejs.MediaFeatures.requestFullScreen(t.container[0]);
-					//return;
+var hasClass = exports.hasClass = hasClassMethod;
+var addClass = exports.addClass = addClassMethod;
+var removeClass = exports.removeClass = removeClassMethod;
 
-					if (t.isInIframe) {
-						// sometimes exiting from fullscreen doesn't work
-						// notably in Chrome <iframe>. Fixed in version 17
-						setTimeout(function checkFullscreen() {
+function toggleClass(el, className) {
+	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
+}
 
-							if (t.isNativeFullScreen) {
-								var zoomMultiplier = window["devicePixelRatio"] || 1;
-								// Use a percent error margin since devicePixelRatio is a float and not exact.
-								var percentErrorMargin = 0.002; // 0.2%
-								var windowWidth = zoomMultiplier * $(window).width();
-								var screenWidth = screen.width;
-								var absDiff = Math.abs(screenWidth - windowWidth);
-								var marginError = screenWidth * percentErrorMargin;
+// fade an element from the current state to full opacity in "duration" ms
+function fadeOut(el) {
+	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
+	var callback = arguments[2];
 
-								// check if the video is suddenly not really fullscreen
-								if (absDiff > marginError) {
-									// manually exit
-									t.exitFullScreen();
-								} else {
-									// test again
-									setTimeout(checkFullscreen, 500);
-								}
-							}
+	if (!el.style.opacity) {
+		el.style.opacity = 1;
+	}
+
+	var start = null;
+	_window2.default.requestAnimationFrame(function animate(timestamp) {
+		start = start || timestamp;
+		var progress = timestamp - start;
+		el.style.opacity = parseFloat(1 - progress / duration, 2);
+		if (progress > duration) {
+			if (callback && typeof callback === 'function') {
+				callback();
+			}
+		} else {
+			_window2.default.requestAnimationFrame(animate);
+		}
+	});
+}
 
+// fade out an element from the current state to full transparency in "duration" ms
+// display is the display style the element is assigned after the animation is done
+function fadeIn(el) {
+	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
+	var callback = arguments[2];
 
-						}, 500);
-					}
+	if (!el.style.opacity) {
+		el.style.opacity = 0;
+	}
 
-				} else if (mejs.MediaFeatures.hasSemiNativeFullScreen) {
-					t.media.webkitEnterFullscreen();
-					return;
-				}
+	var start = null;
+	_window2.default.requestAnimationFrame(function animate(timestamp) {
+		start = start || timestamp;
+		var progress = timestamp - start;
+		el.style.opacity = parseFloat(progress / duration, 2);
+		if (progress > duration) {
+			if (callback && typeof callback === 'function') {
+				callback();
 			}
+		} else {
+			_window2.default.requestAnimationFrame(animate);
+		}
+	});
+}
 
-			// check for iframe launch
-			if (t.isInIframe) {
-				var url = t.options.newWindowCallback(this);
+function siblings(el, filter) {
+	var siblings = [];
+	el = el.parentNode.firstChild;
+	do {
+		if (!filter || filter(el)) {
+			siblings.push(el);
+		}
+	} while (el = el.nextSibling);
+	return siblings;
+}
 
+function visible(elem) {
+	return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
+}
 
-				if (url !== '') {
+function ajax(url, dataType, success, error) {
+	var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
+
+	var type = 'application/x-www-form-urlencoded; charset=UTF-8',
+	    completed = false,
+	    accept = '*/'.concat('*');
+
+	switch (dataType) {
+		case 'text':
+			type = 'text/plain';
+			break;
+		case 'json':
+			type = 'application/json, text/javascript';
+			break;
+		case 'html':
+			type = 'text/html';
+			break;
+		case 'xml':
+			type = 'application/xml, text/xml';
+			break;
+	}
 
-					// launch immediately
-					if (!mejs.MediaFeatures.hasTrueNativeFullScreen) {
-						t.pause();
-						window.open(url, t.id, 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',resizable=yes,scrollbars=no,status=no,toolbar=no');
-						return;
-					} else {
-						setTimeout(function() {
-							if (!t.isNativeFullScreen) {
-								t.pause();
-								window.open(url, t.id, 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',resizable=yes,scrollbars=no,status=no,toolbar=no');
-							}
-						}, 250);
-					}
-				}
+	if (!type.includes('application/x-www-form-urlencoded')) {
+		accept = type + ', */*; q=0.01';
+	}
 
+	if (xhr) {
+		xhr.open('GET', url, true);
+		xhr.setRequestHeader('Accept', accept);
+		xhr.onreadystatechange = function () {
+
+			// Ignore repeat invocations
+			if (completed) {
+				return;
 			}
 
-			// full window code
+			if (xhr.readyState === 4) {
+				if (xhr.status === 200) {
 
+					completed = true;
 
+					var data = void 0;
 
-			// make full size
-			t.container
-				.addClass('mejs-container-fullscreen')
-				.width('100%')
-				.height('100%');
-				//.css({position: 'fixed', left: 0, top: 0, right: 0, bottom: 0, overflow: 'hidden', width: '100%', height: '100%', 'z-index': 1000});
+					switch (dataType) {
+						case 'json':
+							data = JSON.parse(xhr.responseText);
+							break;
+						case 'xml':
+							data = xhr.responseXML;
+							break;
+						default:
+							data = xhr.responseText;
+							break;
+					}
 
-			// Only needed for safari 5.1 native full screen, can cause display issues elsewhere
-			// Actually, it seems to be needed for IE8, too
-			//if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
-				t.containerSizeTimeout = setTimeout(function() {
-					t.container.css({width: '100%', height: '100%'});
-					t.setControlsSize();
-				}, 500);
-			//}
+					success(data);
+				} else if (typeof error === 'function') {
+					error(xhr.status);
+				}
+			}
+		};
 
-			if (t.media.pluginType === 'native') {
-				t.$media
-					.width('100%')
-					.height('100%');
-			} else {
-				t.container.find('.mejs-shim')
-					.width('100%')
-					.height('100%');
+		xhr.send();
+	}
+}
 
-				//if (!mejs.MediaFeatures.hasTrueNativeFullScreen) {
-					t.media.setVideoSize($(window).width(),$(window).height());
-				//}
-			}
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.offset = offset;
+_mejs2.default.Utils.hasClass = hasClass;
+_mejs2.default.Utils.addClass = addClass;
+_mejs2.default.Utils.removeClass = removeClass;
+_mejs2.default.Utils.toggleClass = toggleClass;
+_mejs2.default.Utils.fadeIn = fadeIn;
+_mejs2.default.Utils.fadeOut = fadeOut;
+_mejs2.default.Utils.siblings = siblings;
+_mejs2.default.Utils.visible = visible;
+_mejs2.default.Utils.ajax = ajax;
+
+},{"2":2,"3":3,"6":6}],25:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.escapeHTML = escapeHTML;
+exports.debounce = debounce;
+exports.isObjectEmpty = isObjectEmpty;
+exports.splitEvents = splitEvents;
+exports.createEvent = createEvent;
+exports.isNodeAfter = isNodeAfter;
+exports.isString = isString;
 
-			t.layers.children('div')
-				.width('100%')
-				.height('100%');
+var _mejs = _dereq_(6);
 
-			if (t.fullscreenBtn) {
-				t.fullscreenBtn
-					.removeClass('mejs-fullscreen')
-					.addClass('mejs-unfullscreen');
-			}
+var _mejs2 = _interopRequireDefault(_mejs);
 
-			t.setControlsSize();
-			t.isFullScreen = true;
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-			t.container.find('.mejs-captions-text').css('font-size', screen.width / t.width * 1.00 * 100 + '%');
-			t.container.find('.mejs-captions-position').css('bottom', '45px');
-		},
+/**
+ *
+ * @param {String} input
+ * @return {string}
+ */
+function escapeHTML(input) {
 
-		exitFullScreen: function() {
+	if (typeof input !== 'string') {
+		throw new Error('Argument passed must be a string');
+	}
 
-			var t = this;
+	var map = {
+		'&': '&amp;',
+		'<': '&lt;',
+		'>': '&gt;',
+		'"': '&quot;'
+	};
 
-            // Prevent container from attempting to stretch a second time
-            clearTimeout(t.containerSizeTimeout);
+	return input.replace(/[&<>"]/g, function (c) {
+		return map[c];
+	});
+}
 
-			// firefox can't adjust plugins
-			if (t.media.pluginType !== 'native' && mejs.MediaFeatures.isFirefox) {
-				t.media.setFullscreen(false);
-				//player.isFullScreen = false;
-				return;
-			}
+// taken from underscore
+function debounce(func, wait) {
+	var _this = this,
+	    _arguments = arguments;
 
-			// come outo of native fullscreen
-			if (mejs.MediaFeatures.hasTrueNativeFullScreen && (mejs.MediaFeatures.isFullScreen() || t.isFullScreen)) {
-				mejs.MediaFeatures.cancelFullScreen();
-			}
+	var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
 
-			// restore scroll bars to document
-            $(document.documentElement).removeClass('mejs-fullscreen');
 
-			t.container
-				.removeClass('mejs-container-fullscreen')
-				.width(normalWidth)
-				.height(normalHeight);
-				//.css({position: '', left: '', top: '', right: '', bottom: '', overflow: 'inherit', width: normalWidth + 'px', height: normalHeight + 'px', 'z-index': 1});
+	if (typeof func !== 'function') {
+		throw new Error('First argument must be a function');
+	}
 
-			if (t.media.pluginType === 'native') {
-				t.$media
-					.width(normalWidth)
-					.height(normalHeight);
-			} else {
-				t.container.find('.mejs-shim')
-					.width(normalWidth)
-					.height(normalHeight);
+	if (typeof wait !== 'number') {
+		throw new Error('Second argument must be a numeric value');
+	}
 
-				t.media.setVideoSize(normalWidth, normalHeight);
+	var timeout = void 0;
+	return function () {
+		var context = _this,
+		    args = _arguments;
+		var later = function later() {
+			timeout = null;
+			if (!immediate) {
+				func.apply(context, args);
 			}
+		};
+		var callNow = immediate && !timeout;
+		clearTimeout(timeout);
+		timeout = setTimeout(later, wait);
 
-			t.layers.children('div')
-				.width(normalWidth)
-				.height(normalHeight);
-
-			t.fullscreenBtn
-				.removeClass('mejs-unfullscreen')
-				.addClass('mejs-fullscreen');
+		if (callNow) {
+			func.apply(context, args);
+		}
+	};
+}
 
-			t.setControlsSize();
-			t.isFullScreen = false;
+/**
+ * Determine if an object contains any elements
+ *
+ * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object
+ * @param {Object} instance
+ * @return {Boolean}
+ */
+function isObjectEmpty(instance) {
+	return Object.getOwnPropertyNames(instance).length <= 0;
+}
 
-			t.container.find('.mejs-captions-text').css('font-size','');
-			t.container.find('.mejs-captions-position').css('bottom', '');
+/**
+ * Group a string of events into `document` (d) and `window` (w) events
+ *
+ * @param {String} events  List of space separated events
+ * @param {String} id      Namespace appended to events
+ * @return {{d: Array, w: Array}}
+ */
+function splitEvents(events, id) {
+	// Global events
+	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
+	// add player ID as an event namespace so it's easier to unbind them all later
+	var ret = { d: [], w: [] };
+	(events || '').split(' ').forEach(function (v) {
+		var eventName = '' + v + (id ? '.' + id : '');
+
+		if (eventName.startsWith('.')) {
+			ret.d.push(eventName);
+			ret.w.push(eventName);
+		} else {
+			ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
 		}
 	});
 
-})(mejs.$);
+	ret.d = ret.d.join(' ');
+	ret.w = ret.w.join(' ');
+	return ret;
+}
 
-(function($) {
+/**
+ *
+ * @param {string} eventName
+ * @param {*} target
+ * @return {Event|Object}
+ */
+function createEvent(eventName, target) {
 
-	// Speed
-	$.extend(mejs.MepDefaults, {
+	if (typeof eventName !== 'string') {
+		throw new Error('Event name must be a string');
+	}
 
-		speeds: ['1.50', '1.25', '1.00', '0.75'],
+	var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/),
+	    detail = {
+		target: target
+	};
 
-		defaultSpeed: '1.00'
+	if (eventFrags !== null) {
+		eventName = eventFrags[0];
+		detail.namespace = eventFrags[1];
+	}
 
+	return new window.CustomEvent(eventName, {
+		detail: detail
 	});
+}
 
-	$.extend(MediaElementPlayer.prototype, {
-
-		buildspeed: function(player, controls, layers, media) {
-			var t = this;
-
-			if (t.media.pluginType == 'native') {
-				var s = '<div class="mejs-button mejs-speed-button"><button type="button">'+t.options.defaultSpeed+'x</button><div class="mejs-speed-selector"><ul>';
-				var i, ss;
+/**
+ * Returns true if targetNode appears after sourceNode in the dom.
+ * @param {HTMLElement} sourceNode - the source node for comparison
+ * @param {HTMLElement} targetNode - the node to compare against sourceNode
+ */
+function isNodeAfter(sourceNode, targetNode) {
 
-				if ($.inArray(t.options.defaultSpeed, t.options.speeds) === -1) {
-					t.options.speeds.push(t.options.defaultSpeed);
-				}
+	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING
+	);
+}
 
-				t.options.speeds.sort(function(a, b) {
-					return parseFloat(b) - parseFloat(a);
-				});
+/**
+ * Determines if a value is a string
+ *
+ * @param {*} value to check
+ * @returns {Boolean} True if a value is a string
+ */
+function isString(value) {
+	return typeof value === 'string';
+}
 
-				for (i = 0; i < t.options.speeds.length; i++) {
-					s += '<li><input type="radio" name="speed" value="' + t.options.speeds[i] + '" id="' + t.options.speeds[i] + '" ';
-					if (t.options.speeds[i] == t.options.defaultSpeed) {
-						s += 'checked=true ';
-						s += '/><label for="' + t.options.speeds[i] + '" class="mejs-speed-selected">'+ t.options.speeds[i] + 'x</label></li>';
-					} else {
-						s += '/><label for="' + t.options.speeds[i] + '">'+ t.options.speeds[i] + 'x</label></li>';
-					}
-				}
-				s += '</ul></div></div>';
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.escapeHTML = escapeHTML;
+_mejs2.default.Utils.debounce = debounce;
+_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
+_mejs2.default.Utils.splitEvents = splitEvents;
+_mejs2.default.Utils.createEvent = createEvent;
+_mejs2.default.Utils.isNodeAfter = isNodeAfter;
+_mejs2.default.Utils.isString = isString;
 
-				player.speedButton = $(s).appendTo(controls);
+},{"6":6}],26:[function(_dereq_,module,exports){
+'use strict';
 
-				player.playbackspeed = t.options.defaultSpeed;
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.typeChecks = undefined;
+exports.absolutizeUrl = absolutizeUrl;
+exports.formatType = formatType;
+exports.getMimeFromType = getMimeFromType;
+exports.getTypeFromFile = getTypeFromFile;
+exports.getExtension = getExtension;
+exports.normalizeExtension = normalizeExtension;
 
-				player.speedButton
-				.on('click', 'input[type=radio]', function() {
-					player.playbackspeed = $(this).attr('value');
-					media.playbackRate = parseFloat(player.playbackspeed);
-					player.speedButton.find('button').text(player.playbackspeed + 'x');
-					player.speedButton.find('.mejs-speed-selected').removeClass('mejs-speed-selected');
-					player.speedButton.find('input[type=radio]:checked').next().addClass('mejs-speed-selected');
-				});
+var _mejs = _dereq_(6);
 
-				ss = player.speedButton.find('.mejs-speed-selector');
-				ss.height(this.speedButton.find('.mejs-speed-selector ul').outerHeight(true) + player.speedButton.find('.mejs-speed-translations').outerHeight(true));
-				ss.css('top', (-1 * ss.height()) + 'px');
-			}
-		}
-	});
+var _mejs2 = _interopRequireDefault(_mejs);
 
-})(mejs.$);
+var _general = _dereq_(25);
 
-(function($) {
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-	// add extra default options
-	$.extend(mejs.MepDefaults, {
-		// this will automatically turn on a <track>
-		startLanguage: '',
+var typeChecks = exports.typeChecks = [];
 
-		tracksText: mejs.i18n.t('Captions/Subtitles'),
+/**
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function absolutizeUrl(url) {
 
-		// option to remove the [cc] button when no <track kind="subtitles"> are present
-		hideCaptionsButtonWhenEmpty: true,
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-		// If true and we only have one track, change captions to popup
-		toggleCaptionsButtonWhenOnlyOne: false,
+	var el = document.createElement('div');
+	el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
+	return el.firstChild.href;
+}
 
-		// #id or .class
-		slidesSelector: ''
-	});
+/**
+ * Get the format of a specific media, based on URL and additionally its mime type
+ *
+ * @param {String} url
+ * @param {String} type
+ * @return {String}
+ */
+function formatType(url) {
+	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
 
-	$.extend(MediaElementPlayer.prototype, {
+	return url && !type ? getTypeFromFile(url) : getMimeFromType(type);
+}
 
-		hasChapters: false,
+/**
+ * Return the mime part of the type in case the attribute contains the codec
+ * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`)
+ *
+ * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
+ * @param {String} type
+ * @return {String}
+ */
+function getMimeFromType(type) {
 
-		buildtracks: function(player, controls, layers, media) {
-			if (player.tracks.length === 0)
-				return;
+	if (typeof type !== 'string') {
+		throw new Error('`type` argument must be a string');
+	}
 
-			var t = this,
-				i,
-				options = '';
+	return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type;
+}
 
-			if (t.domNode.textTracks) { // if browser will do native captions, prefer mejs captions, loop through tracks and hide
-				for (i = t.domNode.textTracks.length - 1; i >= 0; i--) {
-					t.domNode.textTracks[i].mode = "hidden";
-				}
-			}
-			player.chapters =
-					$('<div class="mejs-chapters mejs-layer"></div>')
-						.prependTo(layers).hide();
-			player.captions =
-					$('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover"><span class="mejs-captions-text"></span></div></div>')
-						.prependTo(layers).hide();
-			player.captionsText = player.captions.find('.mejs-captions-text');
-			player.captionsButton =
-					$('<div class="mejs-button mejs-captions-button">'+
-						'<button type="button" aria-controls="' + t.id + '" title="' + t.options.tracksText + '" aria-label="' + t.options.tracksText + '"></button>'+
-						'<div class="mejs-captions-selector">'+
-							'<ul>'+
-								'<li>'+
-									'<input type="radio" name="' + player.id + '_captions" id="' + player.id + '_captions_none" value="none" checked="checked" />' +
-									'<label for="' + player.id + '_captions_none">' + mejs.i18n.t('None') +'</label>'+
-								'</li>'	+
-							'</ul>'+
-						'</div>'+
-					'</div>')
-						.appendTo(controls);
-
-
-			var subtitleCount = 0;
-			for (i=0; i<player.tracks.length; i++) {
-				if (player.tracks[i].kind == 'subtitles') {
-					subtitleCount++;
-				}
-			}
+/**
+ * Get the type of media based on URL structure
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function getTypeFromFile(url) {
 
-			// if only one language then just make the button a toggle
-			if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount == 1){
-				// click
-				player.captionsButton.on('click',function() {
-					if (player.selectedTrack === null) {
-						lang = player.tracks[0].srclang;
-					} else {
-						lang = 'none';
-					}
-					player.setTrack(lang);
-				});
-			} else {
-				// hover or keyboard focus
-				player.captionsButton.on( 'mouseenter focusin', function() {
-					$(this).find('.mejs-captions-selector').css('visibility','visible');
-				})
-
-				// handle clicks to the language radio buttons
-				.on('click','input[type=radio]',function() {
-					lang = this.value;
-					player.setTrack(lang);
-				});
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-				player.captionsButton.on( 'mouseleave focusout', function() {
-					$(this).find(".mejs-captions-selector").css("visibility","hidden");
-				});
+	for (var i = 0, total = typeChecks.length; i < total; i++) {
+		var type = typeChecks[i](url);
 
-			}
+		if (type) {
+			return type;
+		}
+	}
 
-			if (!player.options.alwaysShowControls) {
-				// move with controls
-				player.container
-					.bind('controlsshown', function () {
-						// push captions above controls
-						player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover');
+	// the do standard extension check
+	var ext = getExtension(url),
+	    normalizedExt = normalizeExtension(ext);
 
-					})
-					.bind('controlshidden', function () {
-						if (!media.paused) {
-							// move back to normal place
-							player.container.find('.mejs-captions-position').removeClass('mejs-captions-position-hover');
-						}
-					});
-			} else {
-				player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover');
-			}
+	var mime = 'video/mp4';
 
-			player.trackToLoad = -1;
-			player.selectedTrack = null;
-			player.isLoadingTrack = false;
+	// Obtain correct MIME types
+	if (normalizedExt) {
+		if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) {
+			mime = 'video/' + normalizedExt;
+		} else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) {
+			mime = 'audio/' + normalizedExt;
+		}
+	}
 
-			// add to list
-			for (i=0; i<player.tracks.length; i++) {
-				if (player.tracks[i].kind == 'subtitles') {
-					player.addTrackButton(player.tracks[i].srclang, player.tracks[i].label);
-				}
-			}
+	return mime;
+}
 
-			// start loading tracks
-			player.loadNextTrack();
+/**
+ * Get media file extension from URL
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function getExtension(url) {
 
-			media.addEventListener('timeupdate',function(e) {
-				player.displayCaptions();
-			}, false);
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-			if (player.options.slidesSelector !== '') {
-				player.slidesContainer = $(player.options.slidesSelector);
+	var baseUrl = url.split('?')[0],
+	    baseName = baseUrl.split('\\').pop().split('/').pop();
 
-				media.addEventListener('timeupdate',function(e) {
-					player.displaySlides();
-				}, false);
+	return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
+}
 
-			}
+/**
+ * Get standard extension of a media file
+ *
+ * @param {String} extension
+ * @return {String}
+ */
+function normalizeExtension(extension) {
 
-			media.addEventListener('loadedmetadata', function(e) {
-				player.displayChapters();
-			}, false);
+	if (typeof extension !== 'string') {
+		throw new Error('`extension` argument must be a string');
+	}
 
-			player.container.hover(
-				function () {
-					// chapters
-					if (player.hasChapters) {
-						player.chapters.css('visibility','visible');
-						player.chapters.fadeIn(200).height(player.chapters.find('.mejs-chapter').outerHeight());
-					}
-				},
-				function () {
-					if (player.hasChapters && !media.paused) {
-						player.chapters.fadeOut(200, function() {
-							$(this).css('visibility','hidden');
-							$(this).css('display','block');
-						});
-					}
-				});
+	switch (extension) {
+		case 'mp4':
+		case 'm4v':
+			return 'mp4';
+		case 'webm':
+		case 'webma':
+		case 'webmv':
+			return 'webm';
+		case 'ogg':
+		case 'oga':
+		case 'ogv':
+			return 'ogg';
+		default:
+			return extension;
+	}
+}
 
-			// check for autoplay
-			if (player.node.getAttribute('autoplay') !== null) {
-				player.chapters.css('visibility','hidden');
-			}
-		},
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.typeChecks = typeChecks;
+_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
+_mejs2.default.Utils.formatType = formatType;
+_mejs2.default.Utils.getMimeFromType = getMimeFromType;
+_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
+_mejs2.default.Utils.getExtension = getExtension;
+_mejs2.default.Utils.normalizeExtension = normalizeExtension;
 
-		setTrack: function(lang){
+},{"25":25,"6":6}],27:[function(_dereq_,module,exports){
+'use strict';
 
-			var t = this,
-				i;
+var _document = _dereq_(2);
 
-			if (lang == 'none') {
-				t.selectedTrack = null;
-				t.captionsButton.removeClass('mejs-captions-enabled');
-			} else {
-				for (i=0; i<t.tracks.length; i++) {
-					if (t.tracks[i].srclang == lang) {
-						if (t.selectedTrack === null)
-							t.captionsButton.addClass('mejs-captions-enabled');
-						t.selectedTrack = t.tracks[i];
-						t.captions.attr('lang', t.selectedTrack.srclang);
-						t.displayCaptions();
-						break;
-					}
-				}
-			}
-		},
+var _document2 = _interopRequireDefault(_document);
 
-		loadNextTrack: function() {
-			var t = this;
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-			t.trackToLoad++;
-			if (t.trackToLoad < t.tracks.length) {
-				t.isLoadingTrack = true;
-				t.loadTrack(t.trackToLoad);
-			} else {
-				// add done?
-				t.isLoadingTrack = false;
+/**
+ * Polyfill
+ *
+ * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list
+ * of polyfills provided by Babel.
+ */
 
-				t.checkForTracks();
+// ChildNode.remove polyfill
+// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
+(function (arr) {
+	arr.forEach(function (item) {
+		if (item.hasOwnProperty('remove')) {
+			return;
+		}
+		Object.defineProperty(item, 'remove', {
+			configurable: true,
+			enumerable: true,
+			writable: true,
+			value: function remove() {
+				this.parentNode.removeChild(this);
 			}
-		},
-
-		loadTrack: function(index){
-			var
-				t = this,
-				track = t.tracks[index],
-				after = function() {
+		});
+	});
+})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
 
-					track.isLoaded = true;
+// CustomEvent polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
+(function () {
 
-					// create button
-					//t.addTrackButton(track.srclang);
-					t.enableTrackButton(track.srclang, track.label);
+	if (typeof window.CustomEvent === "function") return false;
 
-					t.loadNextTrack();
+	function CustomEvent(event, params) {
+		params = params || { bubbles: false, cancelable: false, detail: undefined };
+		var evt = _document2.default.createEvent('CustomEvent');
+		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
+		return evt;
+	}
 
-				};
+	CustomEvent.prototype = window.Event.prototype;
 
+	window.CustomEvent = CustomEvent;
+})();
 
-			$.ajax({
-				url: track.src,
-				dataType: "text",
-				success: function(d) {
+// Object.assign polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
+if (typeof Object.assign !== 'function') {
+	Object.assign = function (target) {
+		// .length of function is 2
 
-					// parse the loaded file
-					if (typeof d == "string" && (/<tt\s+xml/ig).exec(d)) {
-						track.entries = mejs.TrackFormatParser.dfxp.parse(d);
-					} else {
-						track.entries = mejs.TrackFormatParser.webvtt.parse(d);
-					}
+		if (target === null || target === undefined) {
+			// TypeError if undefined or null
+			throw new TypeError('Cannot convert undefined or null to object');
+		}
 
-					after();
+		var to = Object(target);
 
-					if (track.kind == 'chapters') {
-						t.media.addEventListener('play', function(e) {
-							if (t.media.duration > 0) {
-								t.displayChapters(track);
-							}
-						}, false);
-					}
+		for (var index = 1, total = arguments.length; index < total; index++) {
+			var nextSource = arguments[index];
 
-					if (track.kind == 'slides') {
-						t.setupSlides(track);
+			if (nextSource !== null) {
+				// Skip over if undefined or null
+				for (var nextKey in nextSource) {
+					// Avoid bugs when hasOwnProperty is shadowed
+					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+						to[nextKey] = nextSource[nextKey];
 					}
-				},
-				error: function() {
-					t.loadNextTrack();
 				}
-			});
-		},
-
-		enableTrackButton: function(lang, label) {
-			var t = this;
-
-			if (label === '') {
-				label = mejs.language.codes[lang] || lang;
 			}
+		}
+		return to;
+	};
+}
 
-			t.captionsButton
-				.find('input[value=' + lang + ']')
-					.prop('disabled',false)
-				.siblings('label')
-					.html( label );
+// Array.includes polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill
+if (!Array.prototype.includes) {
+	Object.defineProperty(Array.prototype, 'includes', {
+		value: function value(searchElement, fromIndex) {
 
-			// auto select
-			if (t.options.startLanguage == lang) {
-				$('#' + t.id + '_captions_' + lang).prop('checked', true).trigger('click');
+			// 1. const O be ? ToObject(this value).
+			if (this === null || this === undefined) {
+				throw new TypeError('"this" is null or not defined');
 			}
 
-			t.adjustLanguageBox();
-		},
+			var o = Object(this);
 
-		addTrackButton: function(lang, label) {
-			var t = this;
-			if (label === '') {
-				label = mejs.language.codes[lang] || lang;
-			}
+			// 2. const len be ? ToLength(? Get(O, "length")).
+			var len = o.length >>> 0;
 
-			t.captionsButton.find('ul').append(
-				$('<li>'+
-					'<input type="radio" name="' + t.id + '_captions" id="' + t.id + '_captions_' + lang + '" value="' + lang + '" disabled="disabled" />' +
-					'<label for="' + t.id + '_captions_' + lang + '">' + label + ' (loading)' + '</label>'+
-				'</li>')
-			);
+			// 3. If len is 0, return false.
+			if (len === 0) {
+				return false;
+			}
 
-			t.adjustLanguageBox();
+			// 4. const n be ? ToInteger(fromIndex).
+			//    (If fromIndex is undefined, this step produces the value 0.)
+			var n = fromIndex | 0;
+
+			// 5. If n ≥ 0, then
+			//  a. const k be n.
+			// 6. Else n < 0,
+			//  a. const k be len + n.
+			//  b. If k < 0, const k be 0.
+			var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+			// 7. Repeat, while k < len
+			while (k < len) {
+				// a. const elementK be the result of ? Get(O, ! ToString(k)).
+				// b. If SameValueZero(searchElement, elementK) is true, return true.
+				// c. Increase k by 1.
+				// NOTE: === provides the correct "SameValueZero" comparison needed here.
+				if (o[k] === searchElement) {
+					return true;
+				}
+				k++;
+			}
 
-			// remove this from the dropdownlist (if it exists)
-			t.container.find('.mejs-captions-translations option[value=' + lang + ']').remove();
-		},
+			// 8. Return false
+			return false;
+		}
+	});
+}
 
-		adjustLanguageBox:function() {
-			var t = this;
-			// adjust the size of the outer box
-			t.captionsButton.find('.mejs-captions-selector').height(
-				t.captionsButton.find('.mejs-captions-selector ul').outerHeight(true) +
-				t.captionsButton.find('.mejs-captions-translations').outerHeight(true)
-			);
-		},
+// String.includes polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
+if (!String.prototype.includes) {
+	String.prototype.includes = function (search, start) {
+		'use strict';
 
-		checkForTracks: function() {
-			var
-				t = this,
-				hasSubtitles = false;
+		if (typeof start !== 'number') {
+			start = 0;
+		}
 
-			// check if any subtitles
-			if (t.options.hideCaptionsButtonWhenEmpty) {
-				for (i=0; i<t.tracks.length; i++) {
-					if (t.tracks[i].kind == 'subtitles') {
-						hasSubtitles = true;
-						break;
-					}
-				}
+		if (start + search.length > this.length) {
+			return false;
+		} else {
+			return this.indexOf(search, start) !== -1;
+		}
+	};
+}
 
-				if (!hasSubtitles) {
-					t.captionsButton.hide();
-					t.setControlsSize();
-				}
-			}
-		},
+// String.startsWith polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill
+if (!String.prototype.startsWith) {
+	String.prototype.startsWith = function (searchString, position) {
+		position = position || 0;
+		return this.substr(position, searchString.length) === searchString;
+	};
+}
 
-		displayCaptions: function() {
+// Element.matches polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
+if (!Element.prototype.matches) {
+	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
+		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+		    i = matches.length - 1;
+		while (--i >= 0 && matches.item(i) !== this) {}
+		return i > -1;
+	};
+}
 
-			if (typeof this.tracks == 'undefined')
-				return;
+// Element.closest polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
+if (window.Element && !Element.prototype.closest) {
+	Element.prototype.closest = function (s) {
+		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+		    i = void 0,
+		    el = this;
+		do {
+			i = matches.length;
+			while (--i >= 0 && matches.item(i) !== el) {}
+		} while (i < 0 && (el = el.parentElement));
+		return el;
+	};
+}
 
-			var
-				t = this,
-				i,
-				track = t.selectedTrack;
-
-			if (track !== null && track.isLoaded) {
-				for (i=0; i<track.entries.times.length; i++) {
-					if (t.media.currentTime >= track.entries.times[i].start && t.media.currentTime <= track.entries.times[i].stop) {
-						// Set the line before the timecode as a class so the cue can be targeted if needed
-						t.captionsText.html(track.entries.text[i]).attr('class', 'mejs-captions-text ' + (track.entries.times[i].identifier || ''));
-						t.captions.show().height(0);
-						return; // exit out if one is visible;
-					}
-				}
-				t.captions.hide();
-			} else {
-				t.captions.hide();
-			}
-		},
+// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
 
-		setupSlides: function(track) {
-			var t = this;
+// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
 
-			t.slides = track;
-			t.slides.entries.imgs = [t.slides.entries.text.length];
-			t.showSlide(0);
+// MIT license
 
-		},
+(function () {
+	var lastTime = 0;
+	var vendors = ['ms', 'moz', 'webkit', 'o'];
+	for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+		window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
+		window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
+	}
 
-		showSlide: function(index) {
-			if (typeof this.tracks == 'undefined' || typeof this.slidesContainer == 'undefined') {
-				return;
-			}
+	if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
+		var currTime = new Date().getTime();
+		var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+		var id = window.setTimeout(function () {
+			callback(currTime + timeToCall);
+		}, timeToCall);
+		lastTime = currTime + timeToCall;
+		return id;
+	};
 
-			var t = this,
-				url = t.slides.entries.text[index],
-				img = t.slides.entries.imgs[index];
+	if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
+		clearTimeout(id);
+	};
+})();
 
-			if (typeof img == 'undefined' || typeof img.fadeIn == 'undefined') {
+},{"2":2}],28:[function(_dereq_,module,exports){
+'use strict';
 
-				t.slides.entries.imgs[index] = img = $('<img src="' + url + '">')
-						.on('load', function() {
-							img.appendTo(t.slidesContainer)
-								.hide()
-								.fadeIn()
-								.siblings(':visible')
-									.fadeOut();
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.isDropFrame = isDropFrame;
+exports.secondsToTimeCode = secondsToTimeCode;
+exports.timeCodeToSeconds = timeCodeToSeconds;
+exports.calculateTimeFormat = calculateTimeFormat;
+exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
 
-						});
+var _mejs = _dereq_(6);
 
-			} else {
+var _mejs2 = _interopRequireDefault(_mejs);
 
-				if (!img.is(':visible') && !img.is(':animated')) {
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-					//
+/**
+ * Indicate if FPS is dropFrame (typically non-integer frame rates: 29.976)
+ *
+ * @param {Number} fps - Frames per second
+ * @return {Boolean}
+ */
+function isDropFrame() {
+	var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
 
-					img.fadeIn()
-						.siblings(':visible')
-							.fadeOut();
-				}
-			}
+	return !(fps % 1 === 0);
+}
+/**
+ * Format a numeric time in format '00:00:00'
+ *
+ * @param {Number} time - Ideally a number, but if not or less than zero, is defaulted to zero
+ * @param {Boolean} forceHours
+ * @param {Boolean} showFrameCount
+ * @param {Number} fps - Frames per second
+ * @param {Number} secondsDecimalLength - Number of decimals to display if any
+ * @return {String}
+ */
+function secondsToTimeCode(time) {
+	var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+	var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+	var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;
+	var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+
+
+	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
+
+	var dropFrames = Math.round(fps * 0.066666),
+	    // Number of drop frames to drop on the minute marks (6%)
+	timeBase = Math.round(fps),
+	    framesPer24Hours = Math.round(fps * 3600) * 24,
+	    framesPer10Minutes = Math.round(fps * 600),
+	    frameSep = isDropFrame(fps) ? ';' : ':',
+	    hours = void 0,
+	    minutes = void 0,
+	    seconds = void 0,
+	    frames = void 0,
+	    f = Math.round(time * fps);
+
+	if (isDropFrame(fps)) {
+
+		if (f < 0) {
+			f = framesPer24Hours + f;
+		}
 
-		},
+		f = f % framesPer24Hours;
 
-		displaySlides: function() {
+		var d = Math.floor(f / framesPer10Minutes);
+		var m = f % framesPer10Minutes;
+		f = f + dropFrames * 9 * d;
+		if (m > dropFrames) {
+			f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));
+		}
 
-			if (typeof this.slides == 'undefined')
-				return;
+		var timeBaseDivision = Math.floor(f / timeBase);
 
-			var
-				t = this,
-				slides = t.slides,
-				i;
+		hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);
+		minutes = Math.floor(timeBaseDivision / 60) % 60;
 
-			for (i=0; i<slides.entries.times.length; i++) {
-				if (t.media.currentTime >= slides.entries.times[i].start && t.media.currentTime <= slides.entries.times[i].stop){
+		if (showFrameCount) {
+			seconds = timeBaseDivision % 60;
+		} else {
+			seconds = (f / timeBase % 60).toFixed(secondsDecimalLength);
+		}
+	} else {
+		hours = Math.floor(time / 3600) % 24;
+		minutes = Math.floor(time / 60) % 60;
+		if (showFrameCount) {
+			seconds = Math.floor(time % 60);
+		} else {
+			seconds = (time % 60).toFixed(secondsDecimalLength);
+		}
+	}
+	hours = hours <= 0 ? 0 : hours;
+	minutes = minutes <= 0 ? 0 : minutes;
+	seconds = seconds <= 0 ? 0 : seconds;
+
+	var result = forceHours || hours > 0 ? (hours < 10 ? '0' + hours : hours) + ':' : '';
+	result += (minutes < 10 ? '0' + minutes : minutes) + ':';
+	result += '' + (seconds < 10 ? '0' + seconds : seconds);
+
+	if (showFrameCount) {
+		frames = (f % timeBase).toFixed(0);
+		frames = frames <= 0 ? 0 : frames;
+		result += frames < 10 ? frameSep + '0' + frames : '' + frameSep + frames;
+	}
 
-					t.showSlide(i);
+	return result;
+}
 
-					return; // exit out if one is visible;
-				}
-			}
-		},
+/**
+ * Convert a '00:00:00' time string into seconds
+ *
+ * @param {String} time
+ * @param {Number} fps - Frames per second
+ * @return {Number}
+ */
+function timeCodeToSeconds(time) {
+	var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
 
-		displayChapters: function() {
-			var
-				t = this,
-				i;
 
-			for (i=0; i<t.tracks.length; i++) {
-				if (t.tracks[i].kind == 'chapters' && t.tracks[i].isLoaded) {
-					t.drawChapters(t.tracks[i]);
-					t.hasChapters = true;
-					break;
-				}
-			}
-		},
+	if (typeof time !== 'string') {
+		throw new TypeError('Time must be a string');
+	}
 
-		drawChapters: function(chapters) {
-			var
-				t = this,
-				i,
-				dur,
-				//width,
-				//left,
-				percent = 0,
-				usedPercent = 0;
-
-			t.chapters.empty();
-
-			for (i=0; i<chapters.entries.times.length; i++) {
-				dur = chapters.entries.times[i].stop - chapters.entries.times[i].start;
-				percent = Math.floor(dur / t.media.duration * 100);
-				if (percent + usedPercent > 100 || // too large
-					i == chapters.entries.times.length-1 && percent + usedPercent < 100) // not going to fill it in
-					{
-					percent = 100 - usedPercent;
-				}
-				//width = Math.floor(t.width * dur / t.media.duration);
-				//left = Math.floor(t.width * chapters.entries.times[i].start / t.media.duration);
-				//if (left + width > t.width) {
-				//	width = t.width - left;
-				//}
-
-				t.chapters.append( $(
-					'<div class="mejs-chapter" rel="' + chapters.entries.times[i].start + '" style="left: ' + usedPercent.toString() + '%;width: ' + percent.toString() + '%;">' +
-						'<div class="mejs-chapter-block' + ((i==chapters.entries.times.length-1) ? ' mejs-chapter-block-last' : '') + '">' +
-							'<span class="ch-title">' + chapters.entries.text[i] + '</span>' +
-							'<span class="ch-time">' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].start) + '&ndash;' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].stop) + '</span>' +
-						'</div>' +
-					'</div>'));
-				usedPercent += percent;
-			}
-
-			t.chapters.find('div.mejs-chapter').click(function() {
-				t.media.setCurrentTime( parseFloat( $(this).attr('rel') ) );
-				if (t.media.paused) {
-					t.media.play();
-				}
-			});
+	if (time.indexOf(';') > 0) {
+		time = time.replace(';', ':');
+	}
 
-			t.chapters.show();
-		}
-	});
+	if (!time.match(/\d{2}(\:\d{2}){0,3}/)) {
+		throw new TypeError('Time code must have the format `00:00:00`');
+	}
 
+	var parts = time.split(':');
+
+	var output = void 0,
+	    hours = 0,
+	    minutes = 0,
+	    seconds = 0,
+	    frames = 0,
+	    totalMinutes = 0,
+	    dropFrames = Math.round(fps * 0.066666),
+	    // Number of drop frames to drop on the minute marks (6%)
+	timeBase = Math.round(fps),
+	    hFrames = timeBase * 3600,
+	    mFrames = timeBase * 60;
+
+	switch (parts.length) {
+		default:
+		case 1:
+			seconds = parseInt(parts[0], 10);
+			break;
+		case 2:
+			minutes = parseInt(parts[0], 10);
+			seconds = parseInt(parts[1], 10);
+			break;
+		case 3:
+			hours = parseInt(parts[0], 10);
+			minutes = parseInt(parts[1], 10);
+			seconds = parseInt(parts[2], 10);
+			break;
+		case 4:
+			hours = parseInt(parts[0], 10);
+			minutes = parseInt(parts[1], 10);
+			seconds = parseInt(parts[2], 10);
+			frames = parseInt(parts[3], 10);
+			break;
+	}
 
+	if (isDropFrame(fps)) {
+		totalMinutes = 60 * hours + minutes;
+		output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));
+	} else {
+		output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;
+	}
 
-	mejs.language = {
-		codes:  {
-			af:'Afrikaans',
-			sq:'Albanian',
-			ar:'Arabic',
-			be:'Belarusian',
-			bg:'Bulgarian',
-			ca:'Catalan',
-			zh:'Chinese',
-			'zh-cn':'Chinese Simplified',
-			'zh-tw':'Chinese Traditional',
-			hr:'Croatian',
-			cs:'Czech',
-			da:'Danish',
-			nl:'Dutch',
-			en:'English',
-			et:'Estonian',
-			fl:'Filipino',
-			fi:'Finnish',
-			fr:'French',
-			gl:'Galician',
-			de:'German',
-			el:'Greek',
-			ht:'Haitian Creole',
-			iw:'Hebrew',
-			hi:'Hindi',
-			hu:'Hungarian',
-			is:'Icelandic',
-			id:'Indonesian',
-			ga:'Irish',
-			it:'Italian',
-			ja:'Japanese',
-			ko:'Korean',
-			lv:'Latvian',
-			lt:'Lithuanian',
-			mk:'Macedonian',
-			ms:'Malay',
-			mt:'Maltese',
-			no:'Norwegian',
-			fa:'Persian',
-			pl:'Polish',
-			pt:'Portuguese',
-			// 'pt-pt':'Portuguese (Portugal)',
-			ro:'Romanian',
-			ru:'Russian',
-			sr:'Serbian',
-			sk:'Slovak',
-			sl:'Slovenian',
-			es:'Spanish',
-			sw:'Swahili',
-			sv:'Swedish',
-			tl:'Tagalog',
-			th:'Thai',
-			tr:'Turkish',
-			uk:'Ukrainian',
-			vi:'Vietnamese',
-			cy:'Welsh',
-			yi:'Yiddish'
-		}
-	};
+	return parseFloat(output.toFixed(3));
+}
 
-	/*
-	Parses WebVTT format which should be formatted as
-	================================
-	WEBVTT
-
-	1
-	00:00:01,1 --> 00:00:05,000
-	A line of text
-
-	2
-	00:01:15,1 --> 00:02:05,000
-	A second line of text
-
-	===============================
-
-	Adapted from: http://www.delphiki.com/html5/playr
-	*/
-	mejs.TrackFormatParser = {
-		webvtt: {
-			pattern_timecode: /^((?:[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})?)(.*)$/,
-
-			parse: function(trackText) {
-				var
-					i = 0,
-					lines = mejs.TrackFormatParser.split2(trackText, /\r?\n/),
-					entries = {text:[], times:[]},
-					timecode,
-					text,
-					identifier;
-				for(; i<lines.length; i++) {
-					timecode = this.pattern_timecode.exec(lines[i]);
-
-					if (timecode && i<lines.length) {
-						if ((i - 1) >= 0 && lines[i - 1] !== '') {
-							identifier = lines[i - 1];
-						}
-						i++;
-						// grab all the (possibly multi-line) text that follows
-						text = lines[i];
-						i++;
-						while(lines[i] !== '' && i<lines.length){
-							text = text + '\n' + lines[i];
-							i++;
-						}
-						text = $.trim(text).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
-						// Text is in a different array so I can use .join
-						entries.text.push(text);
-						entries.times.push(
-						{
-							identifier: identifier,
-							start: (mejs.Utility.convertSMPTEtoSeconds(timecode[1]) === 0) ? 0.200 : mejs.Utility.convertSMPTEtoSeconds(timecode[1]),
-							stop: mejs.Utility.convertSMPTEtoSeconds(timecode[3]),
-							settings: timecode[5]
-						});
-					}
-					identifier = '';
+/**
+ * Calculate the time format to use
+ *
+ * There is a default format set in the options but it can be incomplete, so it is adjusted according to the media
+ * duration. Format: 'hh:mm:ss:ff'
+ * @param {*} time - Ideally a number, but if not or less than zero, is defaulted to zero
+ * @param {Object} options
+ * @param {Number} fps - Frames per second
+ */
+function calculateTimeFormat(time, options) {
+	var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
+
+
+	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
+
+	var hours = Math.floor(time / 3600) % 24,
+	    minutes = Math.floor(time / 60) % 60,
+	    seconds = Math.floor(time % 60),
+	    frames = Math.floor((time % 1 * fps).toFixed(3)),
+	    lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];
+
+	var format = options.timeFormat,
+	    firstTwoPlaces = format[1] === format[0],
+	    separatorIndex = firstTwoPlaces ? 2 : 1,
+	    separator = format.length < separatorIndex ? format[separatorIndex] : ':',
+	    firstChar = format[0],
+	    required = false;
+
+	for (var i = 0, len = lis.length; i < len; i++) {
+		if (format.indexOf(lis[i][1]) > -1) {
+			required = true;
+		} else if (required) {
+			var hasNextValue = false;
+			for (var j = i; j < len; j++) {
+				if (lis[j][0] > 0) {
+					hasNextValue = true;
+					break;
 				}
-				return entries;
 			}
-		},
-		// Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420
-		dfxp: {
-			parse: function(trackText) {
-				trackText = $(trackText).filter("tt");
-				var
-					i = 0,
-					container = trackText.children("div").eq(0),
-					lines = container.find("p"),
-					styleNode = trackText.find("#" + container.attr("style")),
-					styles,
-					begin,
-					end,
-					text,
-					entries = {text:[], times:[]};
-
-
-				if (styleNode.length) {
-					var attributes = styleNode.removeAttr("id").get(0).attributes;
-					if (attributes.length) {
-						styles = {};
-						for (i = 0; i < attributes.length; i++) {
-							styles[attributes[i].name.split(":")[1]] = attributes[i].value;
-						}
-					}
-				}
 
-				for(i = 0; i<lines.length; i++) {
-					var style;
-					var _temp_times = {
-						start: null,
-						stop: null,
-						style: null
-					};
-					if (lines.eq(i).attr("begin")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("begin"));
-					if (!_temp_times.start && lines.eq(i-1).attr("end")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i-1).attr("end"));
-					if (lines.eq(i).attr("end")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("end"));
-					if (!_temp_times.stop && lines.eq(i+1).attr("begin")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i+1).attr("begin"));
-					if (styles) {
-						style = "";
-						for (var _style in styles) {
-							style += _style + ":" + styles[_style] + ";";
-						}
-					}
-					if (style) _temp_times.style = style;
-					if (_temp_times.start === 0) _temp_times.start = 0.200;
-					entries.times.push(_temp_times);
-					text = $.trim(lines.eq(i).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
-					entries.text.push(text);
-					if (entries.times.start === 0) entries.times.start = 2;
-				}
-				return entries;
+			if (!hasNextValue) {
+				break;
 			}
-		},
-		split2: function (text, regex) {
-			// normal version for compliant browsers
-			// see below for IE fix
-			return text.split(regex);
-		}
-	};
 
-	// test for browsers with bad String.split method.
-	if ('x\n\ny'.split(/\n/gi).length != 3) {
-		// add super slow IE8 and below version
-		mejs.TrackFormatParser.split2 = function(text, regex) {
-			var
-				parts = [],
-				chunk = '',
-				i;
-
-			for (i=0; i<text.length; i++) {
-				chunk += text.substring(i,i+1);
-				if (regex.test(chunk)) {
-					parts.push(chunk.replace(regex, ''));
-					chunk = '';
-				}
+			if (!firstTwoPlaces) {
+				format = firstChar + format;
 			}
-			parts.push(chunk);
-			return parts;
-		};
-	}
-
-})(mejs.$);
-
-/*
-* ContextMenu Plugin
-* 
-*
-*/
-
-(function($) {
-
-$.extend(mejs.MepDefaults,
-	{ 'contextMenuItems': [
-		// demo of a fullscreen option
-		{ 
-			render: function(player) {
-				
-				// check for fullscreen plugin
-				if (typeof player.enterFullScreen == 'undefined')
-					return null;
-			
-				if (player.isFullScreen) {
-					return mejs.i18n.t('Turn off Fullscreen');
-				} else {
-					return mejs.i18n.t('Go Fullscreen');
-				}
-			},
-			click: function(player) {
-				if (player.isFullScreen) {
-					player.exitFullScreen();
-				} else {
-					player.enterFullScreen();
-				}
+			format = lis[i][1] + separator + format;
+			if (firstTwoPlaces) {
+				format = lis[i][1] + format;
 			}
+			firstChar = lis[i][1];
 		}
-		,
-		// demo of a mute/unmute button
-		{ 
-			render: function(player) {
-				if (player.media.muted) {
-					return mejs.i18n.t('Unmute');
-				} else {
-					return mejs.i18n.t('Mute');
-				}
-			},
-			click: function(player) {
-				if (player.media.muted) {
-					player.setMuted(false);
-				} else {
-					player.setMuted(true);
-				}
-			}
-		},
-		// separator
-		{
-			isSeparator: true
-		}
-		,
-		// demo of simple download video
-		{ 
-			render: function(player) {
-				return mejs.i18n.t('Download Video');
-			},
-			click: function(player) {
-				window.location.href = player.media.currentSrc;
-			}
-		}	
-	]}
-);
-
-
-	$.extend(MediaElementPlayer.prototype, {
-		buildcontextmenu: function(player, controls, layers, media) {
-			
-			// create context menu
-			player.contextMenu = $('<div class="mejs-contextmenu"></div>')
-								.appendTo($('body'))
-								.hide();
-			
-			// create events for showing context menu
-			player.container.bind('contextmenu', function(e) {
-				if (player.isContextMenuEnabled) {
-					e.preventDefault();
-					player.renderContextMenu(e.clientX-1, e.clientY-1);
-					return false;
-				}
-			});
-			player.container.bind('click', function() {
-				player.contextMenu.hide();
-			});	
-			player.contextMenu.bind('mouseleave', function() {
+	}
 
-				//
-				player.startContextMenuTimer();
-				
-			});		
-		},
+	options.currentTimeFormat = format;
+}
 
-		cleancontextmenu: function(player) {
-			player.contextMenu.remove();
-		},
-		
-		isContextMenuEnabled: true,
-		enableContextMenu: function() {
-			this.isContextMenuEnabled = true;
-		},
-		disableContextMenu: function() {
-			this.isContextMenuEnabled = false;
-		},
-		
-		contextMenuTimeout: null,
-		startContextMenuTimer: function() {
-			//
-			
-			var t = this;
-			
-			t.killContextMenuTimer();
-			
-			t.contextMenuTimer = setTimeout(function() {
-				t.hideContextMenu();
-				t.killContextMenuTimer();
-			}, 750);
-		},
-		killContextMenuTimer: function() {
-			var timer = this.contextMenuTimer;
-			
-			//
-			
-			if (timer != null) {				
-				clearTimeout(timer);
-				delete timer;
-				timer = null;
-			}
-		},		
-		
-		hideContextMenu: function() {
-			this.contextMenu.hide();
-		},
-		
-		renderContextMenu: function(x,y) {
-			
-			// alway re-render the items so that things like "turn fullscreen on" and "turn fullscreen off" are always written correctly
-			var t = this,
-				html = '',
-				items = t.options.contextMenuItems;
-			
-			for (var i=0, il=items.length; i<il; i++) {
-				
-				if (items[i].isSeparator) {
-					html += '<div class="mejs-contextmenu-separator"></div>';
-				} else {
-				
-					var rendered = items[i].render(t);
-				
-					// render can return null if the item doesn't need to be used at the moment
-					if (rendered != null) {
-						html += '<div class="mejs-contextmenu-item" data-itemindex="' + i + '" id="element-' + (Math.random()*1000000) + '">' + rendered + '</div>';
-					}
-				}
-			}
-			
-			// position and show the context menu
-			t.contextMenu
-				.empty()
-				.append($(html))
-				.css({top:y, left:x})
-				.show();
-				
-			// bind events
-			t.contextMenu.find('.mejs-contextmenu-item').each(function() {
-							
-				// which one is this?
-				var $dom = $(this),
-					itemIndex = parseInt( $dom.data('itemindex'), 10 ),
-					item = t.options.contextMenuItems[itemIndex];
-				
-				// bind extra functionality?
-				if (typeof item.show != 'undefined')
-					item.show( $dom , t);
-				
-				// bind click action
-				$dom.click(function() {			
-					// perform click action
-					if (typeof item.click != 'undefined')
-						item.click(t);
-					
-					// close
-					t.contextMenu.hide();				
-				});				
-			});	
-			
-			// stop the controls from hiding
-			setTimeout(function() {
-				t.killControlsTimer('rev3');	
-			}, 100);
-						
-		}
-	});
-	
-})(mejs.$);
 /**
- * Postroll plugin
+ * Convert Society of Motion Picture and Television Engineers (SMTPE) time code into seconds
+ *
+ * @param {String} SMPTE
+ * @return {Number}
  */
-(function($) {
+function convertSMPTEtoSeconds(SMPTE) {
 
-	$.extend(mejs.MepDefaults, {
-		postrollCloseText: mejs.i18n.t('Close')
-	});
+	if (typeof SMPTE !== 'string') {
+		throw new TypeError('Argument must be a string value');
+	}
 
-	// Postroll
-	$.extend(MediaElementPlayer.prototype, {
-		buildpostroll: function(player, controls, layers, media) {
-			var
-				t = this,
-				postrollLink = t.container.find('link[rel="postroll"]').attr('href');
-
-			if (typeof postrollLink !== 'undefined') {
-				player.postroll =
-					$('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">' + t.options.postrollCloseText + '</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(layers).hide();
-
-				t.media.addEventListener('ended', function (e) {
-					$.ajax({
-						dataType: 'html',
-						url: postrollLink,
-						success: function (data, textStatus) {
-							layers.find('.mejs-postroll-layer-content').html(data);
-						}
-					});
-					player.postroll.show();
-				}, false);
-			}
+	SMPTE = SMPTE.replace(',', '.');
+
+	var decimalLen = SMPTE.indexOf('.') > -1 ? SMPTE.split('.')[1].length : 0;
+
+	var secs = 0,
+	    multiplier = 1;
+
+	SMPTE = SMPTE.split(':').reverse();
+
+	for (var i = 0, total = SMPTE.length; i < total; i++) {
+		multiplier = 1;
+		if (i > 0) {
+			multiplier = Math.pow(60, i);
 		}
-	});
+		secs += Number(SMPTE[i]) * multiplier;
+	}
+	return Number(secs.toFixed(decimalLen));
+}
 
-})(mejs.$);
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;
+_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;
+_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;
+_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
 
+},{"6":6}]},{},[27,5,4,14,21,18,17,19,20,22,15,16,8,9,10,11,12,13]);
diff --git a/lib/mejs/mediaelement-and-player.min.js b/lib/mejs/mediaelement-and-player.min.js
index f8a16c4c..d64bffab 100644
--- a/lib/mejs/mediaelement-and-player.min.js
+++ b/lib/mejs/mediaelement-and-player.min.js
@@ -1,183 +1,36 @@
 /*!
-* MediaElement.js
-* HTML5 <video> and <audio> shim and player
-* http://mediaelementjs.com/
-*
-* Creates a JavaScript object that mimics HTML5 MediaElement API
-* for browsers that don't understand HTML5 or can't play the provided codec
-* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
-*
-* Copyright 2010-2014, John Dyer (http://j.hn)
-* License: MIT
-*
-*/var mejs=mejs||{};mejs.version="2.15.1";mejs.meIndex=0;
-mejs.plugins={silverlight:[{version:[3,0],types:["video/mp4","video/m4v","video/mov","video/wmv","audio/wma","audio/m4a","audio/mp3","audio/wav","audio/mpeg"]}],flash:[{version:[9,0,124],types:["video/mp4","video/m4v","video/mov","video/flv","video/rtmp","video/x-flv","audio/flv","audio/x-flv","audio/mp3","audio/m4a","audio/mpeg","video/youtube","video/x-youtube","application/x-mpegURL"]}],youtube:[{version:null,types:["video/youtube","video/x-youtube","audio/youtube","audio/x-youtube"]}],vimeo:[{version:null,
-types:["video/vimeo","video/x-vimeo"]}]};
-mejs.Utility={encodeUrl:function(a){return encodeURIComponent(a)},escapeHTML:function(a){return a.toString().split("&").join("&amp;").split("<").join("&lt;").split('"').join("&quot;")},absolutizeUrl:function(a){var b=document.createElement("div");b.innerHTML='<a href="'+this.escapeHTML(a)+'">x</a>';return b.firstChild.href},getScriptPath:function(a){for(var b=0,c,d="",e="",g,f,i=document.getElementsByTagName("script"),k=i.length,h=a.length;b<k;b++){g=i[b].src;c=g.lastIndexOf("/");if(c>-1){f=g.substring(c+
-1);g=g.substring(0,c+1)}else{f=g;g=""}for(c=0;c<h;c++){e=a[c];e=f.indexOf(e);if(e>-1){d=g;break}}if(d!=="")break}return d},secondsToTimeCode:function(a,b,c,d){if(typeof c=="undefined")c=false;else if(typeof d=="undefined")d=25;var e=Math.floor(a/3600)%24,g=Math.floor(a/60)%60,f=Math.floor(a%60);a=Math.floor((a%1*d).toFixed(3));return(b||e>0?(e<10?"0"+e:e)+":":"")+(g<10?"0"+g:g)+":"+(f<10?"0"+f:f)+(c?":"+(a<10?"0"+a:a):"")},timeCodeToSeconds:function(a,b,c,d){if(typeof c=="undefined")c=false;else if(typeof d==
-"undefined")d=25;a=a.split(":");b=parseInt(a[0],10);var e=parseInt(a[1],10),g=parseInt(a[2],10),f=0,i=0;if(c)f=parseInt(a[3])/d;return i=b*3600+e*60+g+f},convertSMPTEtoSeconds:function(a){if(typeof a!="string")return false;a=a.replace(",",".");var b=0,c=a.indexOf(".")!=-1?a.split(".")[1].length:0,d=1;a=a.split(":").reverse();for(var e=0;e<a.length;e++){d=1;if(e>0)d=Math.pow(60,e);b+=Number(a[e])*d}return Number(b.toFixed(c))},removeSwf:function(a){var b=document.getElementById(a);if(b&&/object|embed/i.test(b.nodeName))if(mejs.MediaFeatures.isIE){b.style.display=
-"none";(function(){b.readyState==4?mejs.Utility.removeObjectInIE(a):setTimeout(arguments.callee,10)})()}else b.parentNode.removeChild(b)},removeObjectInIE:function(a){if(a=document.getElementById(a)){for(var b in a)if(typeof a[b]=="function")a[b]=null;a.parentNode.removeChild(a)}}};
-mejs.PluginDetector={hasPluginVersion:function(a,b){var c=this.plugins[a];b[1]=b[1]||0;b[2]=b[2]||0;return c[0]>b[0]||c[0]==b[0]&&c[1]>b[1]||c[0]==b[0]&&c[1]==b[1]&&c[2]>=b[2]?true:false},nav:window.navigator,ua:window.navigator.userAgent.toLowerCase(),plugins:[],addPlugin:function(a,b,c,d,e){this.plugins[a]=this.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var e=[0,0,0],g;if(typeof this.nav.plugins!="undefined"&&typeof this.nav.plugins[a]=="object"){if((c=this.nav.plugins[a].description)&&
-!(typeof this.nav.mimeTypes!="undefined"&&this.nav.mimeTypes[b]&&!this.nav.mimeTypes[b].enabledPlugin)){e=c.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(a=0;a<e.length;a++)e[a]=parseInt(e[a].match(/\d+/),10)}}else if(typeof window.ActiveXObject!="undefined")try{if(g=new ActiveXObject(c))e=d(g)}catch(f){}return e}};
-mejs.PluginDetector.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[];if(a=a.GetVariable("$version")){a=a.split(" ")[1].split(",");b=[parseInt(a[0],10),parseInt(a[1],10),parseInt(a[2],10)]}return b});
-mejs.PluginDetector.addPlugin("silverlight","Silverlight Plug-In","application/x-silverlight-2","AgControl.AgControl",function(a){var b=[0,0,0,0],c=function(d,e,g,f){for(;d.isVersionSupported(e[0]+"."+e[1]+"."+e[2]+"."+e[3]);)e[g]+=f;e[g]-=f};c(a,b,0,1);c(a,b,1,1);c(a,b,2,1E4);c(a,b,2,1E3);c(a,b,2,100);c(a,b,2,10);c(a,b,2,1);c(a,b,3,1);return b});
-mejs.MediaFeatures={init:function(){var a=this,b=document,c=mejs.PluginDetector.nav,d=mejs.PluginDetector.ua.toLowerCase(),e,g=["source","track","audio","video"];a.isiPad=d.match(/ipad/i)!==null;a.isiPhone=d.match(/iphone/i)!==null;a.isiOS=a.isiPhone||a.isiPad;a.isAndroid=d.match(/android/i)!==null;a.isBustedAndroid=d.match(/android 2\.[12]/)!==null;a.isBustedNativeHTTPS=location.protocol==="https:"&&(d.match(/android [12]\./)!==null||d.match(/macintosh.* version.* safari/)!==null);a.isIE=c.appName.toLowerCase().indexOf("microsoft")!=
--1||c.appName.toLowerCase().match(/trident/gi)!==null;a.isChrome=d.match(/chrome/gi)!==null;a.isChromium=d.match(/chromium/gi)!==null;a.isFirefox=d.match(/firefox/gi)!==null;a.isWebkit=d.match(/webkit/gi)!==null;a.isGecko=d.match(/gecko/gi)!==null&&!a.isWebkit&&!a.isIE;a.isOpera=d.match(/opera/gi)!==null;a.hasTouch="ontouchstart"in window;a.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;for(c=0;c<g.length;c++)e=document.createElement(g[c]);
-a.supportsMediaTag=typeof e.canPlayType!=="undefined"||a.isBustedAndroid;try{e.canPlayType("video/mp4")}catch(f){a.supportsMediaTag=false}a.hasSemiNativeFullScreen=typeof e.webkitEnterFullscreen!=="undefined";a.hasNativeFullscreen=typeof e.requestFullscreen!=="undefined";a.hasWebkitNativeFullScreen=typeof e.webkitRequestFullScreen!=="undefined";a.hasMozNativeFullScreen=typeof e.mozRequestFullScreen!=="undefined";a.hasMsNativeFullScreen=typeof e.msRequestFullscreen!=="undefined";a.hasTrueNativeFullScreen=
-a.hasWebkitNativeFullScreen||a.hasMozNativeFullScreen||a.hasMsNativeFullScreen;a.nativeFullScreenEnabled=a.hasTrueNativeFullScreen;if(a.hasMozNativeFullScreen)a.nativeFullScreenEnabled=document.mozFullScreenEnabled;else if(a.hasMsNativeFullScreen)a.nativeFullScreenEnabled=document.msFullscreenEnabled;if(a.isChrome)a.hasSemiNativeFullScreen=false;if(a.hasTrueNativeFullScreen){a.fullScreenEventName="";if(a.hasWebkitNativeFullScreen)a.fullScreenEventName="webkitfullscreenchange";else if(a.hasMozNativeFullScreen)a.fullScreenEventName=
-"mozfullscreenchange";else if(a.hasMsNativeFullScreen)a.fullScreenEventName="MSFullscreenChange";a.isFullScreen=function(){if(a.hasMozNativeFullScreen)return b.mozFullScreen;else if(a.hasWebkitNativeFullScreen)return b.webkitIsFullScreen;else if(a.hasMsNativeFullScreen)return b.msFullscreenElement!==null};a.requestFullScreen=function(i){if(a.hasWebkitNativeFullScreen)i.webkitRequestFullScreen();else if(a.hasMozNativeFullScreen)i.mozRequestFullScreen();else a.hasMsNativeFullScreen&&i.msRequestFullscreen()};
-a.cancelFullScreen=function(){if(a.hasWebkitNativeFullScreen)document.webkitCancelFullScreen();else if(a.hasMozNativeFullScreen)document.mozCancelFullScreen();else a.hasMsNativeFullScreen&&document.msExitFullscreen()}}if(a.hasSemiNativeFullScreen&&d.match(/mac os x 10_5/i)){a.hasNativeFullScreen=false;a.hasSemiNativeFullScreen=false}}};mejs.MediaFeatures.init();
-mejs.HtmlMediaElement={pluginType:"native",isFullScreen:false,setCurrentTime:function(a){this.currentTime=a},setMuted:function(a){this.muted=a},setVolume:function(a){this.volume=a},stop:function(){this.pause()},setSrc:function(a){for(var b=this.getElementsByTagName("source");b.length>0;)this.removeChild(b[0]);if(typeof a=="string")this.src=a;else{var c;for(b=0;b<a.length;b++){c=a[b];if(this.canPlayType(c.type)){this.src=c.src;break}}}},setVideoSize:function(a,b){this.width=a;this.height=b}};
-mejs.PluginMediaElement=function(a,b,c){this.id=a;this.pluginType=b;this.src=c;this.events={};this.attributes={}};
-mejs.PluginMediaElement.prototype={pluginElement:null,pluginType:"",isFullScreen:false,playbackRate:-1,defaultPlaybackRate:-1,seekable:[],played:[],paused:true,ended:false,seeking:false,duration:0,error:null,tagName:"",muted:false,volume:1,currentTime:0,play:function(){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType=="vimeo"?this.pluginApi.playVideo():this.pluginApi.playMedia();this.paused=false}},load:function(){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType==
-"vimeo"||this.pluginApi.loadMedia();this.paused=false}},pause:function(){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType=="vimeo"?this.pluginApi.pauseVideo():this.pluginApi.pauseMedia();this.paused=true}},stop:function(){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType=="vimeo"?this.pluginApi.stopVideo():this.pluginApi.stopMedia();this.paused=true}},canPlayType:function(a){var b,c,d,e=mejs.plugins[this.pluginType];for(b=0;b<e.length;b++){d=e[b];if(mejs.PluginDetector.hasPluginVersion(this.pluginType,
-d.version))for(c=0;c<d.types.length;c++)if(a==d.types[c])return"probably"}return""},positionFullscreenButton:function(a,b,c){this.pluginApi!=null&&this.pluginApi.positionFullscreenButton&&this.pluginApi.positionFullscreenButton(Math.floor(a),Math.floor(b),c)},hideFullscreenButton:function(){this.pluginApi!=null&&this.pluginApi.hideFullscreenButton&&this.pluginApi.hideFullscreenButton()},setSrc:function(a){if(typeof a=="string"){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(a));this.src=mejs.Utility.absolutizeUrl(a)}else{var b,
-c;for(b=0;b<a.length;b++){c=a[b];if(this.canPlayType(c.type)){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(c.src));this.src=mejs.Utility.absolutizeUrl(a);break}}}},setCurrentTime:function(a){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType=="vimeo"?this.pluginApi.seekTo(a):this.pluginApi.setCurrentTime(a);this.currentTime=a}},setVolume:function(a){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.setVolume(a*100):this.pluginApi.setVolume(a);this.volume=a}},
-setMuted:function(a){if(this.pluginApi!=null){if(this.pluginType=="youtube"){a?this.pluginApi.mute():this.pluginApi.unMute();this.muted=a;this.dispatchEvent("volumechange")}else this.pluginApi.setMuted(a);this.muted=a}},setVideoSize:function(a,b){if(this.pluginElement&&this.pluginElement.style){this.pluginElement.style.width=a+"px";this.pluginElement.style.height=b+"px"}this.pluginApi!=null&&this.pluginApi.setVideoSize&&this.pluginApi.setVideoSize(a,b)},setFullscreen:function(a){this.pluginApi!=null&&
-this.pluginApi.setFullscreen&&this.pluginApi.setFullscreen(a)},enterFullScreen:function(){this.pluginApi!=null&&this.pluginApi.setFullscreen&&this.setFullscreen(true)},exitFullScreen:function(){this.pluginApi!=null&&this.pluginApi.setFullscreen&&this.setFullscreen(false)},addEventListener:function(a,b){this.events[a]=this.events[a]||[];this.events[a].push(b)},removeEventListener:function(a,b){if(!a){this.events={};return true}var c=this.events[a];if(!c)return true;if(!b){this.events[a]=[];return true}for(var d=
-0;d<c.length;d++)if(c[d]===b){this.events[a].splice(d,1);return true}return false},dispatchEvent:function(a){var b,c,d=this.events[a];if(d){c=Array.prototype.slice.call(arguments,1);for(b=0;b<d.length;b++)d[b].apply(null,c)}},hasAttribute:function(a){return a in this.attributes},removeAttribute:function(a){delete this.attributes[a]},getAttribute:function(a){if(this.hasAttribute(a))return this.attributes[a];return""},setAttribute:function(a,b){this.attributes[a]=b},remove:function(){mejs.Utility.removeSwf(this.pluginElement.id);
-mejs.MediaPluginBridge.unregisterPluginElement(this.pluginElement.id)}};
-mejs.MediaPluginBridge={pluginMediaElements:{},htmlMediaElements:{},registerPluginElement:function(a,b,c){this.pluginMediaElements[a]=b;this.htmlMediaElements[a]=c},unregisterPluginElement:function(a){delete this.pluginMediaElements[a];delete this.htmlMediaElements[a]},initPlugin:function(a){var b=this.pluginMediaElements[a],c=this.htmlMediaElements[a];if(b){switch(b.pluginType){case "flash":b.pluginElement=b.pluginApi=document.getElementById(a);break;case "silverlight":b.pluginElement=document.getElementById(b.id);
-b.pluginApi=b.pluginElement.Content.MediaElementJS}b.pluginApi!=null&&b.success&&b.success(b,c)}},fireEvent:function(a,b,c){var d,e;if(a=this.pluginMediaElements[a]){b={type:b,target:a};for(d in c){a[d]=c[d];b[d]=c[d]}e=c.bufferedTime||0;b.target.buffered=b.buffered={start:function(){return 0},end:function(){return e},length:1};a.dispatchEvent(b.type,b)}}};
-mejs.MediaElementDefaults={mode:"auto",plugins:["flash","silverlight","youtube","vimeo"],enablePluginDebug:false,httpsBasicAuthSite:false,type:"",pluginPath:mejs.Utility.getScriptPath(["mediaelement.js","mediaelement.min.js","mediaelement-and-player.js","mediaelement-and-player.min.js"]),flashName:"flashmediaelement.swf",flashStreamer:"",enablePluginSmoothing:false,enablePseudoStreaming:false,pseudoStreamingStartQueryParam:"start",silverlightName:"silverlightmediaelement.xap",defaultVideoWidth:480,
-defaultVideoHeight:270,pluginWidth:-1,pluginHeight:-1,pluginVars:[],timerRate:250,startVolume:0.8,success:function(){},error:function(){}};mejs.MediaElement=function(a,b){return mejs.HtmlMediaElementShim.create(a,b)};
-mejs.HtmlMediaElementShim={create:function(a,b){var c=mejs.MediaElementDefaults,d=typeof a=="string"?document.getElementById(a):a,e=d.tagName.toLowerCase(),g=e==="audio"||e==="video",f=g?d.getAttribute("src"):d.getAttribute("href");e=d.getAttribute("poster");var i=d.getAttribute("autoplay"),k=d.getAttribute("preload"),h=d.getAttribute("controls"),j;for(j in b)c[j]=b[j];f=typeof f=="undefined"||f===null||f==""?null:f;e=typeof e=="undefined"||e===null?"":e;k=typeof k=="undefined"||k===null||k==="false"?
-"none":k;i=!(typeof i=="undefined"||i===null||i==="false");h=!(typeof h=="undefined"||h===null||h==="false");j=this.determinePlayback(d,c,mejs.MediaFeatures.supportsMediaTag,g,f);j.url=j.url!==null?mejs.Utility.absolutizeUrl(j.url):"";if(j.method=="native"){if(mejs.MediaFeatures.isBustedAndroid){d.src=j.url;d.addEventListener("click",function(){d.play()},false)}return this.updateNative(j,c,i,k)}else if(j.method!=="")return this.createPlugin(j,c,e,i,k,h);else{this.createErrorMessage(j,c,e);return this}},
-determinePlayback:function(a,b,c,d,e){var g=[],f,i,k,h={method:"",url:"",htmlMediaElement:a,isVideo:a.tagName.toLowerCase()!="audio"},j;if(typeof b.type!="undefined"&&b.type!=="")if(typeof b.type=="string")g.push({type:b.type,url:e});else for(f=0;f<b.type.length;f++)g.push({type:b.type[f],url:e});else if(e!==null){k=this.formatType(e,a.getAttribute("type"));g.push({type:k,url:e})}else for(f=0;f<a.childNodes.length;f++){i=a.childNodes[f];if(i.nodeType==1&&i.tagName.toLowerCase()=="source"){e=i.getAttribute("src");
-k=this.formatType(e,i.getAttribute("type"));i=i.getAttribute("media");if(!i||!window.matchMedia||window.matchMedia&&window.matchMedia(i).matches)g.push({type:k,url:e})}}if(!d&&g.length>0&&g[0].url!==null&&this.getTypeFromFile(g[0].url).indexOf("audio")>-1)h.isVideo=false;if(mejs.MediaFeatures.isBustedAndroid)a.canPlayType=function(m){return m.match(/video\/(mp4|m4v)/gi)!==null?"maybe":""};if(mejs.MediaFeatures.isChromium)a.canPlayType=function(m){return m.match(/video\/(webm|ogv|ogg)/gi)!==null?"maybe":
-""};if(c&&(b.mode==="auto"||b.mode==="auto_plugin"||b.mode==="native")&&!(mejs.MediaFeatures.isBustedNativeHTTPS&&b.httpsBasicAuthSite===true)){if(!d){f=document.createElement(h.isVideo?"video":"audio");a.parentNode.insertBefore(f,a);a.style.display="none";h.htmlMediaElement=a=f}for(f=0;f<g.length;f++)if(g[f].type=="video/m3u8"||a.canPlayType(g[f].type).replace(/no/,"")!==""||a.canPlayType(g[f].type.replace(/mp3/,"mpeg")).replace(/no/,"")!==""||a.canPlayType(g[f].type.replace(/m4a/,"mp4")).replace(/no/,
-"")!==""){h.method="native";h.url=g[f].url;break}if(h.method==="native"){if(h.url!==null)a.src=h.url;if(b.mode!=="auto_plugin")return h}}if(b.mode==="auto"||b.mode==="auto_plugin"||b.mode==="shim")for(f=0;f<g.length;f++){k=g[f].type;for(a=0;a<b.plugins.length;a++){e=b.plugins[a];i=mejs.plugins[e];for(c=0;c<i.length;c++){j=i[c];if(j.version==null||mejs.PluginDetector.hasPluginVersion(e,j.version))for(d=0;d<j.types.length;d++)if(k==j.types[d]){h.method=e;h.url=g[f].url;return h}}}}if(b.mode==="auto_plugin"&&
-h.method==="native")return h;if(h.method===""&&g.length>0)h.url=g[0].url;return h},formatType:function(a,b){return a&&!b?this.getTypeFromFile(a):b&&~b.indexOf(";")?b.substr(0,b.indexOf(";")):b},getTypeFromFile:function(a){a=a.split("?")[0];a=a.substring(a.lastIndexOf(".")+1).toLowerCase();return(/(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(a)?"video":"audio")+"/"+this.getTypeFromExtension(a)},getTypeFromExtension:function(a){switch(a){case "mp4":case "m4v":case "m4a":return"mp4";case "webm":case "webma":case "webmv":return"webm";
-case "ogg":case "oga":case "ogv":return"ogg";default:return a}},createErrorMessage:function(a,b,c){var d=a.htmlMediaElement,e=document.createElement("div");e.className="me-cannotplay";try{e.style.width=d.width+"px";e.style.height=d.height+"px"}catch(g){}e.innerHTML=b.customError?b.customError:c!==""?'<a href="'+a.url+'"><img src="'+c+'" width="100%" height="100%" /></a>':'<a href="'+a.url+'"><span>'+mejs.i18n.t("Download File")+"</span></a>";d.parentNode.insertBefore(e,d);d.style.display="none";b.error(d)},
-createPlugin:function(a,b,c,d,e,g){c=a.htmlMediaElement;var f=1,i=1,k="me_"+a.method+"_"+mejs.meIndex++,h=new mejs.PluginMediaElement(k,a.method,a.url),j=document.createElement("div"),m;h.tagName=c.tagName;for(m=0;m<c.attributes.length;m++){var q=c.attributes[m];q.specified==true&&h.setAttribute(q.name,q.value)}for(m=c.parentNode;m!==null&&m.tagName.toLowerCase()!=="body"&&m.parentNode!=null;){if(m.parentNode.tagName.toLowerCase()==="p"){m.parentNode.parentNode.insertBefore(m,m.parentNode);break}m=
-m.parentNode}if(a.isVideo){f=b.pluginWidth>0?b.pluginWidth:b.videoWidth>0?b.videoWidth:c.getAttribute("width")!==null?c.getAttribute("width"):b.defaultVideoWidth;i=b.pluginHeight>0?b.pluginHeight:b.videoHeight>0?b.videoHeight:c.getAttribute("height")!==null?c.getAttribute("height"):b.defaultVideoHeight;f=mejs.Utility.encodeUrl(f);i=mejs.Utility.encodeUrl(i)}else if(b.enablePluginDebug){f=320;i=240}h.success=b.success;mejs.MediaPluginBridge.registerPluginElement(k,h,c);j.className="me-plugin";j.id=
-k+"_container";a.isVideo?c.parentNode.insertBefore(j,c):document.body.insertBefore(j,document.body.childNodes[0]);d=["id="+k,"isvideo="+(a.isVideo?"true":"false"),"autoplay="+(d?"true":"false"),"preload="+e,"width="+f,"startvolume="+b.startVolume,"timerrate="+b.timerRate,"flashstreamer="+b.flashStreamer,"height="+i,"pseudostreamstart="+b.pseudoStreamingStartQueryParam];if(a.url!==null)a.method=="flash"?d.push("file="+mejs.Utility.encodeUrl(a.url)):d.push("file="+a.url);b.enablePluginDebug&&d.push("debug=true");
-b.enablePluginSmoothing&&d.push("smoothing=true");b.enablePseudoStreaming&&d.push("pseudostreaming=true");g&&d.push("controls=true");if(b.pluginVars)d=d.concat(b.pluginVars);switch(a.method){case "silverlight":j.innerHTML='<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="'+k+'" name="'+k+'" width="'+f+'" height="'+i+'" class="mejs-shim"><param name="initParams" value="'+d.join(",")+'" /><param name="windowless" value="true" /><param name="background" value="black" /><param name="minRuntimeVersion" value="3.0.0.0" /><param name="autoUpgrade" value="true" /><param name="source" value="'+
-b.pluginPath+b.silverlightName+'" /></object>';break;case "flash":if(mejs.MediaFeatures.isIE){a=document.createElement("div");j.appendChild(a);a.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+k+'" width="'+f+'" height="'+i+'" class="mejs-shim"><param name="movie" value="'+b.pluginPath+b.flashName+"?x="+new Date+'" /><param name="flashvars" value="'+d.join("&amp;")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="scale" value="default" /></object>'}else j.innerHTML=
-'<embed id="'+k+'" name="'+k+'" play="true" loop="false" quality="high" bgcolor="#000000" wmode="transparent" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" src="'+b.pluginPath+b.flashName+'" flashvars="'+d.join("&")+'" width="'+f+'" height="'+i+'" scale="default"class="mejs-shim"></embed>';break;case "youtube":if(a.url.lastIndexOf("youtu.be")!=-1){a=a.url.substr(a.url.lastIndexOf("/")+1);if(a.indexOf("?")!=
--1)a=a.substr(0,a.indexOf("?"))}else a=a.url.substr(a.url.lastIndexOf("=")+1);youtubeSettings={container:j,containerId:j.id,pluginMediaElement:h,pluginId:k,videoId:a,height:i,width:f};mejs.PluginDetector.hasPluginVersion("flash",[10,0,0])?mejs.YouTubeApi.createFlash(youtubeSettings):mejs.YouTubeApi.enqueueIframe(youtubeSettings);break;case "vimeo":b=k+"_player";h.vimeoid=a.url.substr(a.url.lastIndexOf("/")+1);j.innerHTML='<iframe src="//player.vimeo.com/video/'+h.vimeoid+"?api=1&portrait=0&byline=0&title=0&player_id="+
-b+'" width="'+f+'" height="'+i+'" frameborder="0" class="mejs-shim" id="'+b+'"></iframe>';if(typeof $f=="function"){var l=$f(j.childNodes[0]);l.addEvent("ready",function(){function o(n,p,r,s){n={type:r,target:p};if(r=="timeupdate"){p.currentTime=n.currentTime=s.seconds;p.duration=n.duration=s.duration}p.dispatchEvent(n.type,n)}$.extend(l,{playVideo:function(){l.api("play")},stopVideo:function(){l.api("unload")},pauseVideo:function(){l.api("pause")},seekTo:function(n){l.api("seekTo",n)},setVolume:function(n){l.api("setVolume",
-n)},setMuted:function(n){if(n){l.lastVolume=l.api("getVolume");l.api("setVolume",0)}else{l.api("setVolume",l.lastVolume);delete l.lastVolume}}});l.addEvent("play",function(){o(l,h,"play");o(l,h,"playing")});l.addEvent("pause",function(){o(l,h,"pause")});l.addEvent("finish",function(){o(l,h,"ended")});l.addEvent("playProgress",function(n){o(l,h,"timeupdate",n)});h.pluginElement=j;h.pluginApi=l;mejs.MediaPluginBridge.initPlugin(k)})}else console.warn("You need to include froogaloop for vimeo to work")}c.style.display=
-"none";c.removeAttribute("autoplay");return h},updateNative:function(a,b){var c=a.htmlMediaElement,d;for(d in mejs.HtmlMediaElement)c[d]=mejs.HtmlMediaElement[d];b.success(c,c);return c}};
-mejs.YouTubeApi={isIframeStarted:false,isIframeLoaded:false,loadIframeApi:function(){if(!this.isIframeStarted){var a=document.createElement("script");a.src="//www.youtube.com/player_api";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);this.isIframeStarted=true}},iframeQueue:[],enqueueIframe:function(a){if(this.isLoaded)this.createIframe(a);else{this.loadIframeApi();this.iframeQueue.push(a)}},createIframe:function(a){var b=a.pluginMediaElement,c=new YT.Player(a.containerId,
-{height:a.height,width:a.width,videoId:a.videoId,playerVars:{controls:0},events:{onReady:function(){a.pluginMediaElement.pluginApi=c;mejs.MediaPluginBridge.initPlugin(a.pluginId);setInterval(function(){mejs.YouTubeApi.createEvent(c,b,"timeupdate")},250)},onStateChange:function(d){mejs.YouTubeApi.handleStateChange(d.data,c,b)}}})},createEvent:function(a,b,c){c={type:c,target:b};if(a&&a.getDuration){b.currentTime=c.currentTime=a.getCurrentTime();b.duration=c.duration=a.getDuration();c.paused=b.paused;
-c.ended=b.ended;c.muted=a.isMuted();c.volume=a.getVolume()/100;c.bytesTotal=a.getVideoBytesTotal();c.bufferedBytes=a.getVideoBytesLoaded();var d=c.bufferedBytes/c.bytesTotal*c.duration;c.target.buffered=c.buffered={start:function(){return 0},end:function(){return d},length:1}}b.dispatchEvent(c.type,c)},iFrameReady:function(){for(this.isIframeLoaded=this.isLoaded=true;this.iframeQueue.length>0;)this.createIframe(this.iframeQueue.pop())},flashPlayers:{},createFlash:function(a){this.flashPlayers[a.pluginId]=
-a;var b,c="//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid="+a.pluginId+"&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0";if(mejs.MediaFeatures.isIE){b=document.createElement("div");a.container.appendChild(b);b.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+a.pluginId+'" width="'+a.width+'" height="'+a.height+'" class="mejs-shim"><param name="movie" value="'+
-c+'" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>'}else a.container.innerHTML='<object type="application/x-shockwave-flash" id="'+a.pluginId+'" data="'+c+'" width="'+a.width+'" height="'+a.height+'" style="visibility: visible; " class="mejs-shim"><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>'},flashReady:function(a){var b=this.flashPlayers[a],c=
-document.getElementById(a),d=b.pluginMediaElement;d.pluginApi=d.pluginElement=c;mejs.MediaPluginBridge.initPlugin(a);c.cueVideoById(b.videoId);a=b.containerId+"_callback";window[a]=function(e){mejs.YouTubeApi.handleStateChange(e,c,d)};c.addEventListener("onStateChange",a);setInterval(function(){mejs.YouTubeApi.createEvent(c,d,"timeupdate")},250);mejs.YouTubeApi.createEvent(c,d,"canplay")},handleStateChange:function(a,b,c){switch(a){case -1:c.paused=true;c.ended=true;mejs.YouTubeApi.createEvent(b,
-c,"loadedmetadata");break;case 0:c.paused=false;c.ended=true;mejs.YouTubeApi.createEvent(b,c,"ended");break;case 1:c.paused=false;c.ended=false;mejs.YouTubeApi.createEvent(b,c,"play");mejs.YouTubeApi.createEvent(b,c,"playing");break;case 2:c.paused=true;c.ended=false;mejs.YouTubeApi.createEvent(b,c,"pause");break;case 3:mejs.YouTubeApi.createEvent(b,c,"progress")}}};function onYouTubePlayerAPIReady(){mejs.YouTubeApi.iFrameReady()}function onYouTubePlayerReady(a){mejs.YouTubeApi.flashReady(a)}
-window.mejs=mejs;window.MediaElement=mejs.MediaElement;
-(function(a,b){var c={locale:{language:"",strings:{}},methods:{}};c.getLanguage=function(){return(c.locale.language||window.navigator.userLanguage||window.navigator.language).substr(0,2).toLowerCase()};if(typeof mejsL10n!="undefined")c.locale.language=mejsL10n.language;c.methods.checkPlain=function(d){var e,g,f={"&":"&amp;",'"':"&quot;","<":"&lt;",">":"&gt;"};d=String(d);for(e in f)if(f.hasOwnProperty(e)){g=RegExp(e,"g");d=d.replace(g,f[e])}return d};c.methods.t=function(d,e){if(c.locale.strings&&
-c.locale.strings[e.context]&&c.locale.strings[e.context][d])d=c.locale.strings[e.context][d];return c.methods.checkPlain(d)};c.t=function(d,e){if(typeof d==="string"&&d.length>0){var g=c.getLanguage();e=e||{context:g};return c.methods.t(d,e)}else throw{name:"InvalidArgumentException",message:"First argument is either not a string or empty."};};b.i18n=c})(document,mejs);(function(a){if(typeof mejsL10n!="undefined")a[mejsL10n.language]=mejsL10n.strings})(mejs.i18n.locale.strings);
-(function(a){if(typeof a.de==="undefined")a.de={Fullscreen:"Vollbild","Go Fullscreen":"Vollbild an","Turn off Fullscreen":"Vollbild aus",Close:"Schlie\u00dfen"}})(mejs.i18n.locale.strings);(function(a){if(typeof a.zh==="undefined")a.zh={Fullscreen:"\u5168\u87a2\u5e55","Go Fullscreen":"\u5168\u5c4f\u6a21\u5f0f","Turn off Fullscreen":"\u9000\u51fa\u5168\u5c4f\u6a21\u5f0f",Close:"\u95dc\u9589"}})(mejs.i18n.locale.strings);
-
-/*!
- * MediaElementPlayer
- * http://mediaelementjs.com/
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
+ *
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
+ *
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
+ * License: MIT
  *
- * Creates a controller bar for HTML5 <video> add <audio> tags
- * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
+ *//*!
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
  *
- * Copyright 2010-2013, John Dyer (http://j.hn/)
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
+ *
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
  * License: MIT
  *
- */if(typeof jQuery!="undefined")mejs.$=jQuery;else if(typeof ender!="undefined")mejs.$=ender;
-(function(f){mejs.MepDefaults={poster:"",showPosterWhenEnded:false,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:30,defaultSeekBackwardInterval:function(a){return a.duration*0.05},defaultSeekForwardInterval:function(a){return a.duration*0.05},setDimensions:true,audioWidth:-1,audioHeight:-1,startVolume:0.8,loop:false,autoRewind:true,enableAutosize:true,alwaysShowHours:false,showTimecodeFrameCount:false,framesPerSecond:25,autosizeProgress:true,
-alwaysShowControls:false,hideVideoControlsOnLoad:false,clickToPlayPause:true,iPadUseNativeControls:false,iPhoneUseNativeControls:false,AndroidUseNativeControls:false,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:true,enableKeyboard:true,pauseOtherPlayers:true,keyActions:[{keys:[32,179],action:function(a,b){b.paused||b.ended?a.play():a.pause()}},{keys:[38],action:function(a,b){a.container.find(".mejs-volume-slider").css("display","block");if(a.isVideo){a.showControls();
-a.startControlsTimer()}b.setVolume(Math.min(b.volume+0.1,1))}},{keys:[40],action:function(a,b){a.container.find(".mejs-volume-slider").css("display","block");if(a.isVideo){a.showControls();a.startControlsTimer()}b.setVolume(Math.max(b.volume-0.1,0))}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){if(a.isVideo){a.showControls();a.startControlsTimer()}var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,
-b){if(!isNaN(b.duration)&&b.duration>0){if(a.isVideo){a.showControls();a.startControlsTimer()}var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a){if(typeof a.enterFullScreen!="undefined")a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{keys:[77],action:function(a){a.container.find(".mejs-volume-slider").css("display","block");if(a.isVideo){a.showControls();a.startControlsTimer()}a.media.muted?a.setMuted(false):
-a.setMuted(true)}}]};mejs.mepIndex=0;mejs.players={};mejs.MediaElementPlayer=function(a,b){if(!(this instanceof mejs.MediaElementPlayer))return new mejs.MediaElementPlayer(a,b);this.$media=this.$node=f(a);this.node=this.media=this.$media[0];if(typeof this.node.player!="undefined")return this.node.player;else this.node.player=this;if(typeof b=="undefined")b=this.$node.data("mejsoptions");this.options=f.extend({},mejs.MepDefaults,b);this.id="mep_"+mejs.mepIndex++;mejs.players[this.id]=this;this.init();
-return this};mejs.MediaElementPlayer.prototype={hasFocus:false,controlsAreVisible:true,init:function(){var a=this,b=mejs.MediaFeatures,c=f.extend(true,{},a.options,{success:function(d,g){a.meReady(d,g)},error:function(d){a.handleError(d)}}),e=a.media.tagName.toLowerCase();a.isDynamic=e!=="audio"&&e!=="video";a.isVideo=a.isDynamic?a.options.isVideo:e!=="audio"&&a.options.isVideo;if(b.isiPad&&a.options.iPadUseNativeControls||b.isiPhone&&a.options.iPhoneUseNativeControls){a.$media.attr("controls","controls");
-b.isiPad&&a.media.getAttribute("autoplay")!==null&&a.play()}else if(!(b.isAndroid&&a.options.AndroidUseNativeControls)){a.$media.removeAttr("controls");a.container=f('<div id="'+a.id+'" class="mejs-container '+(mejs.MediaFeatures.svg?"svg":"no-svg")+'"><div class="mejs-inner"><div class="mejs-mediaelement"></div><div class="mejs-layers"></div><div class="mejs-controls"></div><div class="mejs-clear"></div></div></div>').addClass(a.$media[0].className).insertBefore(a.$media);a.container.addClass((b.isAndroid?
-"mejs-android ":"")+(b.isiOS?"mejs-ios ":"")+(b.isiPad?"mejs-ipad ":"")+(b.isiPhone?"mejs-iphone ":"")+(a.isVideo?"mejs-video ":"mejs-audio "));if(b.isiOS){b=a.$media.clone();a.container.find(".mejs-mediaelement").append(b);a.$media.remove();a.$node=a.$media=b;a.node=a.media=b[0]}else a.container.find(".mejs-mediaelement").append(a.$media);a.controls=a.container.find(".mejs-controls");a.layers=a.container.find(".mejs-layers");b=a.isVideo?"video":"audio";e=b.substring(0,1).toUpperCase()+b.substring(1);
-a.width=a.options[b+"Width"]>0||a.options[b+"Width"].toString().indexOf("%")>-1?a.options[b+"Width"]:a.media.style.width!==""&&a.media.style.width!==null?a.media.style.width:a.media.getAttribute("width")!==null?a.$media.attr("width"):a.options["default"+e+"Width"];a.height=a.options[b+"Height"]>0||a.options[b+"Height"].toString().indexOf("%")>-1?a.options[b+"Height"]:a.media.style.height!==""&&a.media.style.height!==null?a.media.style.height:a.$media[0].getAttribute("height")!==null?a.$media.attr("height"):
-a.options["default"+e+"Height"];a.setPlayerSize(a.width,a.height);c.pluginWidth=a.width;c.pluginHeight=a.height}mejs.MediaElement(a.$media[0],c);typeof a.container!="undefined"&&a.controlsAreVisible&&a.container.trigger("controlsshown")},showControls:function(a){var b=this;a=typeof a=="undefined"||a;if(!b.controlsAreVisible){if(a){b.controls.css("visibility","visible").stop(true,true).fadeIn(200,function(){b.controlsAreVisible=true;b.container.trigger("controlsshown")});b.container.find(".mejs-control").css("visibility",
-"visible").stop(true,true).fadeIn(200,function(){b.controlsAreVisible=true})}else{b.controls.css("visibility","visible").css("display","block");b.container.find(".mejs-control").css("visibility","visible").css("display","block");b.controlsAreVisible=true;b.container.trigger("controlsshown")}b.setControlsSize()}},hideControls:function(a){var b=this;a=typeof a=="undefined"||a;if(!(!b.controlsAreVisible||b.options.alwaysShowControls))if(a){b.controls.stop(true,true).fadeOut(200,function(){f(this).css("visibility",
-"hidden").css("display","block");b.controlsAreVisible=false;b.container.trigger("controlshidden")});b.container.find(".mejs-control").stop(true,true).fadeOut(200,function(){f(this).css("visibility","hidden").css("display","block")})}else{b.controls.css("visibility","hidden").css("display","block");b.container.find(".mejs-control").css("visibility","hidden").css("display","block");b.controlsAreVisible=false;b.container.trigger("controlshidden")}},controlsTimer:null,startControlsTimer:function(a){var b=
-this;a=typeof a!="undefined"?a:1500;b.killControlsTimer("start");b.controlsTimer=setTimeout(function(){b.hideControls();b.killControlsTimer("hide")},a)},killControlsTimer:function(){if(this.controlsTimer!==null){clearTimeout(this.controlsTimer);delete this.controlsTimer;this.controlsTimer=null}},controlsEnabled:true,disableControls:function(){this.killControlsTimer();this.hideControls(false);this.controlsEnabled=false},enableControls:function(){this.showControls(false);this.controlsEnabled=true},
-meReady:function(a,b){var c=this,e=mejs.MediaFeatures,d=b.getAttribute("autoplay");d=!(typeof d=="undefined"||d===null||d==="false");var g;if(!c.created){c.created=true;c.media=a;c.domNode=b;if(!(e.isAndroid&&c.options.AndroidUseNativeControls)&&!(e.isiPad&&c.options.iPadUseNativeControls)&&!(e.isiPhone&&c.options.iPhoneUseNativeControls)){c.buildposter(c,c.controls,c.layers,c.media);c.buildkeyboard(c,c.controls,c.layers,c.media);c.buildoverlays(c,c.controls,c.layers,c.media);c.findTracks();for(g in c.options.features){e=
-c.options.features[g];if(c["build"+e])try{c["build"+e](c,c.controls,c.layers,c.media)}catch(k){}}c.container.trigger("controlsready");c.setPlayerSize(c.width,c.height);c.setControlsSize();if(c.isVideo){if(mejs.MediaFeatures.hasTouch)c.$media.bind("touchstart",function(){if(c.controlsAreVisible)c.hideControls(false);else c.controlsEnabled&&c.showControls(false)});else{c.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause)c.media.paused?c.play():c.pause()};c.media.addEventListener("click",
-c.clickToPlayPauseCallback,false);c.container.bind("mouseenter mouseover",function(){if(c.controlsEnabled)if(!c.options.alwaysShowControls){c.killControlsTimer("enter");c.showControls();c.startControlsTimer(2500)}}).bind("mousemove",function(){if(c.controlsEnabled){c.controlsAreVisible||c.showControls();c.options.alwaysShowControls||c.startControlsTimer(2500)}}).bind("mouseleave",function(){c.controlsEnabled&&!c.media.paused&&!c.options.alwaysShowControls&&c.startControlsTimer(1E3)})}c.options.hideVideoControlsOnLoad&&
-c.hideControls(false);d&&!c.options.alwaysShowControls&&c.hideControls();c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(j){if(c.options.videoHeight<=0&&c.domNode.getAttribute("height")===null&&!isNaN(j.target.videoHeight)){c.setPlayerSize(j.target.videoWidth,j.target.videoHeight);c.setControlsSize();c.media.setVideoSize(j.target.videoWidth,j.target.videoHeight)}},false)}a.addEventListener("play",function(){for(var j in mejs.players){var m=mejs.players[j];m.id!=c.id&&
-c.options.pauseOtherPlayers&&!m.paused&&!m.ended&&m.pause();m.hasFocus=false}c.hasFocus=true},false);c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0)}catch(j){}c.media.pause();c.setProgressRail&&c.setProgressRail();c.setCurrentRail&&c.setCurrentRail();if(c.options.loop)c.play();else!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()},false);c.media.addEventListener("loadedmetadata",function(){c.updateDuration&&c.updateDuration();c.updateCurrent&&
-c.updateCurrent();if(!c.isFullScreen){c.setPlayerSize(c.width,c.height);c.setControlsSize()}},false);setTimeout(function(){c.setPlayerSize(c.width,c.height);c.setControlsSize()},50);c.globalBind("resize",function(){c.isFullScreen||mejs.MediaFeatures.hasTrueNativeFullScreen&&document.webkitIsFullScreen||c.setPlayerSize(c.width,c.height);c.setControlsSize()});c.media.pluginType=="youtube"&&c.options.autoplay&&c.container.find(".mejs-overlay-play").hide()}d&&a.pluginType=="native"&&c.play();if(c.options.success)typeof c.options.success==
-"string"?window[c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)}},handleError:function(a){this.controls.hide();this.options.error&&this.options.error(a)},setPlayerSize:function(a,b){if(!this.options.setDimensions)return false;if(typeof a!="undefined")this.width=a;if(typeof b!="undefined")this.height=b;if(this.height.toString().indexOf("%")>0||this.$node.css("max-width")==="100%"||this.$node[0].currentStyle&&this.$node[0].currentStyle.maxWidth==="100%"){var c=this.isVideo?
-this.media.videoWidth&&this.media.videoWidth>0?this.media.videoWidth:this.media.getAttribute("width")!==null?this.media.getAttribute("width"):this.options.defaultVideoWidth:this.options.defaultAudioWidth,e=this.isVideo?this.media.videoHeight&&this.media.videoHeight>0?this.media.videoHeight:this.media.getAttribute("height")!==null?this.media.getAttribute("height"):this.options.defaultVideoHeight:this.options.defaultAudioHeight,d=this.container.parent().closest(":visible").width(),g=this.container.parent().closest(":visible").height();
-c=this.isVideo||!this.options.autosizeProgress?parseInt(d*e/c,10):e;if(isNaN(c)||g!=0&&c>g)c=g;if(this.container.parent()[0].tagName.toLowerCase()==="body"){d=f(window).width();c=f(window).height()}if(c!=0&&d!=0){this.container.width(d).height(c);this.$media.add(this.container.find(".mejs-shim")).width("100%").height("100%");this.isVideo&&this.media.setVideoSize&&this.media.setVideoSize(d,c);this.layers.children(".mejs-layer").width("100%").height("100%")}}else{this.container.width(this.width).height(this.height);
-this.layers.children(".mejs-layer").width(this.width).height(this.height)}d=this.layers.find(".mejs-overlay-play");g=d.find(".mejs-overlay-button");d.height(this.container.height()-this.controls.height());g.css("margin-top","-"+(g.height()/2-this.controls.height()/2).toString()+"px")},setControlsSize:function(){var a=0,b=0,c=this.controls.find(".mejs-time-rail"),e=this.controls.find(".mejs-time-total");this.controls.find(".mejs-time-current");this.controls.find(".mejs-time-loaded");var d=c.siblings(),
-g=d.last(),k=null;if(!(!this.container.is(":visible")||!c.length||!c.is(":visible"))){if(this.options&&!this.options.autosizeProgress)b=parseInt(c.css("width"));if(b===0||!b){d.each(function(){var j=f(this);if(j.css("position")!="absolute"&&j.is(":visible"))a+=f(this).outerWidth(true)});b=this.controls.width()-a-(c.outerWidth(true)-c.width())}do{c.width(b);e.width(b-(e.outerWidth(true)-e.width()));if(g.css("position")!="absolute"){k=g.position();b--}}while(k!=null&&k.top>0&&b>0);this.setProgressRail&&
-this.setProgressRail();this.setCurrentRail&&this.setCurrentRail()}},buildposter:function(a,b,c,e){var d=f('<div class="mejs-poster mejs-layer"></div>').appendTo(c);b=a.$media.attr("poster");if(a.options.poster!=="")b=a.options.poster;b!==""&&b!=null?this.setPoster(b):d.hide();e.addEventListener("play",function(){d.hide()},false);a.options.showPosterWhenEnded&&a.options.autoRewind&&e.addEventListener("ended",function(){d.show()},false)},setPoster:function(a){var b=this.container.find(".mejs-poster"),
-c=b.find("img");if(c.length==0)c=f('<img width="100%" height="100%" />').appendTo(b);c.attr("src",a);b.css({"background-image":"url("+a+")"})},buildoverlays:function(a,b,c,e){var d=this;if(a.isVideo){var g=f('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>').hide().appendTo(c),k=f('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error"></div></div>').hide().appendTo(c),j=f('<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button"></div></div>').appendTo(c).bind("click",
-function(){d.options.clickToPlayPause&&e.paused&&e.play()});e.addEventListener("play",function(){j.hide();g.hide();b.find(".mejs-time-buffering").hide();k.hide()},false);e.addEventListener("playing",function(){j.hide();g.hide();b.find(".mejs-time-buffering").hide();k.hide()},false);e.addEventListener("seeking",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("seeked",function(){g.hide();b.find(".mejs-time-buffering").hide()},false);e.addEventListener("pause",function(){mejs.MediaFeatures.isiPhone||
-j.show()},false);e.addEventListener("waiting",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("loadeddata",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("canplay",function(){g.hide();b.find(".mejs-time-buffering").hide()},false);e.addEventListener("error",function(){g.hide();b.find(".mejs-time-buffering").hide();k.show();k.find("mejs-overlay-error").html("Error loading this resource")},false);e.addEventListener("keydown",
-function(m){d.onkeydown(a,e,m)},false)}},buildkeyboard:function(a,b,c,e){var d=this;d.globalBind("keydown",function(g){return d.onkeydown(a,e,g)});d.globalBind("click",function(g){a.hasFocus=f(g.target).closest(".mejs-container").length!=0})},onkeydown:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var e=0,d=a.options.keyActions.length;e<d;e++)for(var g=a.options.keyActions[e],k=0,j=g.keys.length;k<j;k++)if(c.keyCode==g.keys[k]){typeof c.preventDefault=="function"&&c.preventDefault();
-g.action(a,b,c.keyCode);return false}return true},findTracks:function(){var a=this,b=a.$media.find("track");a.tracks=[];b.each(function(c,e){e=f(e);a.tracks.push({srclang:e.attr("srclang")?e.attr("srclang").toLowerCase():"",src:e.attr("src"),kind:e.attr("kind"),label:e.attr("label")||"",entries:[],isLoaded:false})})},changeSkin:function(a){this.container[0].className="mejs-container "+a;this.setPlayerSize(this.width,this.height);this.setControlsSize()},play:function(){this.load();this.media.play()},
-pause:function(){try{this.media.pause()}catch(a){}},load:function(){this.isLoaded||this.media.load();this.isLoaded=true},setMuted:function(a){this.media.setMuted(a)},setCurrentTime:function(a){this.media.setCurrentTime(a)},getCurrentTime:function(){return this.media.currentTime},setVolume:function(a){this.media.setVolume(a)},getVolume:function(){return this.media.volume},setSrc:function(a){this.media.setSrc(a)},remove:function(){var a,b;for(a in this.options.features){b=this.options.features[a];if(this["clean"+
-b])try{this["clean"+b](this)}catch(c){}}if(this.isDynamic)this.$node.insertBefore(this.container);else{this.$media.prop("controls",true);this.$node.clone().insertBefore(this.container).show();this.$node.remove()}this.media.pluginType!=="native"&&this.media.remove();delete mejs.players[this.id];typeof this.container=="object"&&this.container.remove();this.globalUnbind();delete this.node.player}};(function(){function a(c,e){var d={d:[],w:[]};f.each((c||"").split(" "),function(g,k){var j=k+"."+e;if(j.indexOf(".")===
-0){d.d.push(j);d.w.push(j)}else d[b.test(k)?"w":"d"].push(j)});d.d=d.d.join(" ");d.w=d.w.join(" ");return d}var b=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;mejs.MediaElementPlayer.prototype.globalBind=function(c,e,d){c=a(c,this.id);c.d&&f(document).bind(c.d,e,d);c.w&&f(window).bind(c.w,e,d)};mejs.MediaElementPlayer.prototype.globalUnbind=function(c,e){c=a(c,this.id);c.d&&f(document).unbind(c.d,e);c.w&&f(window).unbind(c.w,e)}})();
-if(typeof f!="undefined"){f.fn.mediaelementplayer=function(a){a===false?this.each(function(){var b=f(this).data("mediaelementplayer");b&&b.remove();f(this).removeData("mediaelementplayer")}):this.each(function(){f(this).data("mediaelementplayer",new mejs.MediaElementPlayer(this,a))});return this};f(document).ready(function(){f(".mejs-player").mediaelementplayer()})}window.MediaElementPlayer=mejs.MediaElementPlayer})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{playpauseText:mejs.i18n.t("Play/Pause")});f.extend(MediaElementPlayer.prototype,{buildplaypause:function(a,b,c,e){var d=f('<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="'+this.id+'" title="'+this.options.playpauseText+'" aria-label="'+this.options.playpauseText+'"></button></div>').appendTo(b).click(function(g){g.preventDefault();e.paused?e.play():e.pause();return false});e.addEventListener("play",function(){d.removeClass("mejs-play").addClass("mejs-pause")},
-false);e.addEventListener("playing",function(){d.removeClass("mejs-play").addClass("mejs-pause")},false);e.addEventListener("pause",function(){d.removeClass("mejs-pause").addClass("mejs-play")},false);e.addEventListener("paused",function(){d.removeClass("mejs-pause").addClass("mejs-play")},false)}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{stopText:"Stop"});f.extend(MediaElementPlayer.prototype,{buildstop:function(a,b,c,e){f('<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="'+this.id+'" title="'+this.options.stopText+'" aria-label="'+this.options.stopText+'"></button></div>').appendTo(b).click(function(){e.paused||e.pause();if(e.currentTime>0){e.setCurrentTime(0);e.pause();b.find(".mejs-time-current").width("0px");b.find(".mejs-time-handle").css("left",
-"0px");b.find(".mejs-time-float-current").html(mejs.Utility.secondsToTimeCode(0));b.find(".mejs-currenttime").html(mejs.Utility.secondsToTimeCode(0));c.find(".mejs-poster").show()}})}})})(mejs.$);
-(function(f){f.extend(MediaElementPlayer.prototype,{buildprogress:function(a,b,c,e){f('<div class="mejs-time-rail"><span class="mejs-time-total"><span class="mejs-time-buffering"></span><span class="mejs-time-loaded"></span><span class="mejs-time-current"></span><span class="mejs-time-handle"></span><span class="mejs-time-float"><span class="mejs-time-float-current">00:00</span><span class="mejs-time-float-corner"></span></span></span></div>').appendTo(b);b.find(".mejs-time-buffering").hide();var d=
-this,g=b.find(".mejs-time-total");c=b.find(".mejs-time-loaded");var k=b.find(".mejs-time-current"),j=b.find(".mejs-time-handle"),m=b.find(".mejs-time-float"),q=b.find(".mejs-time-float-current"),p=function(h){h=h.originalEvent.changedTouches?h.originalEvent.changedTouches[0].pageX:h.pageX;var l=g.offset(),r=g.outerWidth(true),n=0,o=n=0;if(e.duration){if(h<l.left)h=l.left;else if(h>r+l.left)h=r+l.left;o=h-l.left;n=o/r;n=n<=0.02?0:n*e.duration;t&&n!==e.currentTime&&e.setCurrentTime(n);if(!mejs.MediaFeatures.hasTouch){m.css("left",
-o);q.html(mejs.Utility.secondsToTimeCode(n));m.show()}}},t=false;g.bind("mousedown touchstart",function(h){if(h.which===1||h.which===0){t=true;p(h);d.globalBind("mousemove.dur touchmove.dur",function(l){p(l)});d.globalBind("mouseup.dur touchend.dur",function(){t=false;m.hide();d.globalUnbind(".dur")});return false}}).bind("mouseenter",function(){d.globalBind("mousemove.dur",function(h){p(h)});mejs.MediaFeatures.hasTouch||m.show()}).bind("mouseleave",function(){if(!t){d.globalUnbind(".dur");m.hide()}});
-e.addEventListener("progress",function(h){a.setProgressRail(h);a.setCurrentRail(h)},false);e.addEventListener("timeupdate",function(h){a.setProgressRail(h);a.setCurrentRail(h)},false);d.loaded=c;d.total=g;d.current=k;d.handle=j},setProgressRail:function(a){var b=a!=undefined?a.target:this.media,c=null;if(b&&b.buffered&&b.buffered.length>0&&b.buffered.end&&b.duration)c=b.buffered.end(0)/b.duration;else if(b&&b.bytesTotal!=undefined&&b.bytesTotal>0&&b.bufferedBytes!=undefined)c=b.bufferedBytes/b.bytesTotal;
-else if(a&&a.lengthComputable&&a.total!=0)c=a.loaded/a.total;if(c!==null){c=Math.min(1,Math.max(0,c));this.loaded&&this.total&&this.loaded.width(this.total.width()*c)}},setCurrentRail:function(){if(this.media.currentTime!=undefined&&this.media.duration)if(this.total&&this.handle){var a=Math.round(this.total.width()*this.media.currentTime/this.media.duration),b=a-Math.round(this.handle.outerWidth(true)/2);this.current.width(a);this.handle.css("left",b)}}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{duration:-1,timeAndDurationSeparator:"<span> | </span>"});f.extend(MediaElementPlayer.prototype,{buildcurrent:function(a,b,c,e){f('<div class="mejs-time"><span class="mejs-currenttime">'+(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00")+"</span></div>").appendTo(b);this.currenttime=this.controls.find(".mejs-currenttime");e.addEventListener("timeupdate",function(){a.updateCurrent()},false)},buildduration:function(a,b,
-c,e){if(b.children().last().find(".mejs-currenttime").length>0)f(this.options.timeAndDurationSeparator+'<span class="mejs-duration">'+(this.options.duration>0?mejs.Utility.secondsToTimeCode(this.options.duration,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25):(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span>").appendTo(b.find(".mejs-time"));else{b.find(".mejs-currenttime").parent().addClass("mejs-currenttime-container");
-f('<div class="mejs-time mejs-duration-container"><span class="mejs-duration">'+(this.options.duration>0?mejs.Utility.secondsToTimeCode(this.options.duration,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25):(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span></div>").appendTo(b)}this.durationD=this.controls.find(".mejs-duration");e.addEventListener("timeupdate",function(){a.updateDuration()},
-false)},updateCurrent:function(){if(this.currenttime)this.currenttime.html(mejs.Utility.secondsToTimeCode(this.media.currentTime,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25))},updateDuration:function(){this.container.toggleClass("mejs-long-video",this.media.duration>3600);if(this.durationD&&(this.options.duration>0||this.media.duration))this.durationD.html(mejs.Utility.secondsToTimeCode(this.options.duration>0?this.options.duration:
-this.media.duration,this.options.alwaysShowHours,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25))}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{muteText:mejs.i18n.t("Mute Toggle"),hideVolumeOnTouchDevices:true,audioVolume:"horizontal",videoVolume:"vertical"});f.extend(MediaElementPlayer.prototype,{buildvolume:function(a,b,c,e){if(!((mejs.MediaFeatures.isAndroid||mejs.MediaFeatures.isiOS)&&this.options.hideVolumeOnTouchDevices)){var d=this,g=d.isVideo?d.options.videoVolume:d.options.audioVolume,k=g=="horizontal"?f('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+
-d.id+'" title="'+d.options.muteText+'" aria-label="'+d.options.muteText+'"></button></div><div class="mejs-horizontal-volume-slider"><div class="mejs-horizontal-volume-total"></div><div class="mejs-horizontal-volume-current"></div><div class="mejs-horizontal-volume-handle"></div></div>').appendTo(b):f('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+d.id+'" title="'+d.options.muteText+'" aria-label="'+d.options.muteText+'"></button><div class="mejs-volume-slider"><div class="mejs-volume-total"></div><div class="mejs-volume-current"></div><div class="mejs-volume-handle"></div></div></div>').appendTo(b),
-j=d.container.find(".mejs-volume-slider, .mejs-horizontal-volume-slider"),m=d.container.find(".mejs-volume-total, .mejs-horizontal-volume-total"),q=d.container.find(".mejs-volume-current, .mejs-horizontal-volume-current"),p=d.container.find(".mejs-volume-handle, .mejs-horizontal-volume-handle"),t=function(n,o){if(!j.is(":visible")&&typeof o=="undefined"){j.show();t(n,true);j.hide()}else{n=Math.max(0,n);n=Math.min(n,1);n==0?k.removeClass("mejs-mute").addClass("mejs-unmute"):k.removeClass("mejs-unmute").addClass("mejs-mute");
-if(g=="vertical"){var s=m.height(),u=m.position(),v=s-s*n;p.css("top",Math.round(u.top+v-p.height()/2));q.height(s-v);q.css("top",u.top+v)}else{s=m.width();u=m.position();s=s*n;p.css("left",Math.round(u.left+s-p.width()/2));q.width(Math.round(s))}}},h=function(n){var o=null,s=m.offset();if(g=="vertical"){o=m.height();parseInt(m.css("top").replace(/px/,""),10);o=(o-(n.pageY-s.top))/o;if(s.top==0||s.left==0)return}else{o=m.width();o=(n.pageX-s.left)/o}o=Math.max(0,o);o=Math.min(o,1);t(o);o==0?e.setMuted(true):
-e.setMuted(false);e.setVolume(o)},l=false,r=false;k.hover(function(){j.show();r=true},function(){r=false;!l&&g=="vertical"&&j.hide()});j.bind("mouseover",function(){r=true}).bind("mousedown",function(n){h(n);d.globalBind("mousemove.vol",function(o){h(o)});d.globalBind("mouseup.vol",function(){l=false;d.globalUnbind(".vol");!r&&g=="vertical"&&j.hide()});l=true;return false});k.find("button").click(function(){e.setMuted(!e.muted)});e.addEventListener("volumechange",function(){if(!l)if(e.muted){t(0);
-k.removeClass("mejs-mute").addClass("mejs-unmute")}else{t(e.volume);k.removeClass("mejs-unmute").addClass("mejs-mute")}},false);if(d.container.is(":visible")){t(a.options.startVolume);a.options.startVolume===0&&e.setMuted(true);e.pluginType==="native"&&e.setVolume(a.options.startVolume)}}}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{usePluginFullScreen:true,newWindowCallback:function(){return""},fullscreenText:mejs.i18n.t("Fullscreen")});f.extend(MediaElementPlayer.prototype,{isFullScreen:false,isNativeFullScreen:false,isInIframe:false,buildfullscreen:function(a,b,c,e){if(a.isVideo){a.isInIframe=window.location!=window.parent.location;mejs.MediaFeatures.hasTrueNativeFullScreen&&a.globalBind(mejs.MediaFeatures.fullScreenEventName,function(){if(a.isFullScreen)if(mejs.MediaFeatures.isFullScreen()){a.isNativeFullScreen=
-true;a.setControlsSize()}else{a.isNativeFullScreen=false;a.exitFullScreen()}});var d=this,g=f('<div class="mejs-button mejs-fullscreen-button"><button type="button" aria-controls="'+d.id+'" title="'+d.options.fullscreenText+'" aria-label="'+d.options.fullscreenText+'"></button></div>').appendTo(b);if(d.media.pluginType==="native"||!d.options.usePluginFullScreen&&!mejs.MediaFeatures.isFirefox)g.click(function(){mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||a.isFullScreen?
-a.exitFullScreen():a.enterFullScreen()});else{var k=null;if(function(){var h=document.createElement("x"),l=document.documentElement,r=window.getComputedStyle;if(!("pointerEvents"in h.style))return false;h.style.pointerEvents="auto";h.style.pointerEvents="x";l.appendChild(h);r=r&&r(h,"").pointerEvents==="auto";l.removeChild(h);return!!r}()&&!mejs.MediaFeatures.isOpera){var j=false,m=function(){if(j){for(var h in q)q[h].hide();g.css("pointer-events","");d.controls.css("pointer-events","");d.media.removeEventListener("click",
-d.clickToPlayPauseCallback);j=false}},q={};b=["top","left","right","bottom"];var p,t=function(){var h=g.offset().left-d.container.offset().left,l=g.offset().top-d.container.offset().top,r=g.outerWidth(true),n=g.outerHeight(true),o=d.container.width(),s=d.container.height();for(p in q)q[p].css({position:"absolute",top:0,left:0});q.top.width(o).height(l);q.left.width(h).height(n).css({top:l});q.right.width(o-h-r).height(n).css({top:l,left:h+r});q.bottom.width(o).height(s-n-l).css({top:l+n})};d.globalBind("resize",
-function(){t()});p=0;for(c=b.length;p<c;p++)q[b[p]]=f('<div class="mejs-fullscreen-hover" />').appendTo(d.container).mouseover(m).hide();g.on("mouseover",function(){if(!d.isFullScreen){var h=g.offset(),l=a.container.offset();e.positionFullscreenButton(h.left-l.left,h.top-l.top,false);g.css("pointer-events","none");d.controls.css("pointer-events","none");d.media.addEventListener("click",d.clickToPlayPauseCallback);for(p in q)q[p].show();t();j=true}});e.addEventListener("fullscreenchange",function(){d.isFullScreen=
-!d.isFullScreen;d.isFullScreen?d.media.removeEventListener("click",d.clickToPlayPauseCallback):d.media.addEventListener("click",d.clickToPlayPauseCallback);m()});d.globalBind("mousemove",function(h){if(j){var l=g.offset();if(h.pageY<l.top||h.pageY>l.top+g.outerHeight(true)||h.pageX<l.left||h.pageX>l.left+g.outerWidth(true)){g.css("pointer-events","");d.controls.css("pointer-events","");j=false}}})}else g.on("mouseover",function(){if(k!==null){clearTimeout(k);delete k}var h=g.offset(),l=a.container.offset();
-e.positionFullscreenButton(h.left-l.left,h.top-l.top,true)}).on("mouseout",function(){if(k!==null){clearTimeout(k);delete k}k=setTimeout(function(){e.hideFullscreenButton()},1500)})}a.fullscreenBtn=g;d.globalBind("keydown",function(h){if((mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||d.isFullScreen)&&h.keyCode==27)a.exitFullScreen()})}},cleanfullscreen:function(a){a.exitFullScreen()},containerSizeTimeout:null,enterFullScreen:function(){var a=this;if(!(a.media.pluginType!==
-"native"&&(mejs.MediaFeatures.isFirefox||a.options.usePluginFullScreen))){f(document.documentElement).addClass("mejs-fullscreen");normalHeight=a.container.height();normalWidth=a.container.width();if(a.media.pluginType==="native")if(mejs.MediaFeatures.hasTrueNativeFullScreen){mejs.MediaFeatures.requestFullScreen(a.container[0]);a.isInIframe&&setTimeout(function c(){if(a.isNativeFullScreen){var e=(window.devicePixelRatio||1)*f(window).width(),d=screen.width;Math.abs(d-e)>d*0.0020?a.exitFullScreen():
-setTimeout(c,500)}},500)}else if(mejs.MediaFeatures.hasSemiNativeFullScreen){a.media.webkitEnterFullscreen();return}if(a.isInIframe){var b=a.options.newWindowCallback(this);if(b!=="")if(mejs.MediaFeatures.hasTrueNativeFullScreen)setTimeout(function(){if(!a.isNativeFullScreen){a.pause();window.open(b,a.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no")}},250);else{a.pause();window.open(b,a.id,"top=0,left=0,width="+screen.availWidth+
-",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no");return}}a.container.addClass("mejs-container-fullscreen").width("100%").height("100%");a.containerSizeTimeout=setTimeout(function(){a.container.css({width:"100%",height:"100%"});a.setControlsSize()},500);if(a.media.pluginType==="native")a.$media.width("100%").height("100%");else{a.container.find(".mejs-shim").width("100%").height("100%");a.media.setVideoSize(f(window).width(),f(window).height())}a.layers.children("div").width("100%").height("100%");
-a.fullscreenBtn&&a.fullscreenBtn.removeClass("mejs-fullscreen").addClass("mejs-unfullscreen");a.setControlsSize();a.isFullScreen=true;a.container.find(".mejs-captions-text").css("font-size",screen.width/a.width*1*100+"%");a.container.find(".mejs-captions-position").css("bottom","45px")}},exitFullScreen:function(){clearTimeout(this.containerSizeTimeout);if(this.media.pluginType!=="native"&&mejs.MediaFeatures.isFirefox)this.media.setFullscreen(false);else{if(mejs.MediaFeatures.hasTrueNativeFullScreen&&
-(mejs.MediaFeatures.isFullScreen()||this.isFullScreen))mejs.MediaFeatures.cancelFullScreen();f(document.documentElement).removeClass("mejs-fullscreen");this.container.removeClass("mejs-container-fullscreen").width(normalWidth).height(normalHeight);if(this.media.pluginType==="native")this.$media.width(normalWidth).height(normalHeight);else{this.container.find(".mejs-shim").width(normalWidth).height(normalHeight);this.media.setVideoSize(normalWidth,normalHeight)}this.layers.children("div").width(normalWidth).height(normalHeight);
-this.fullscreenBtn.removeClass("mejs-unfullscreen").addClass("mejs-fullscreen");this.setControlsSize();this.isFullScreen=false;this.container.find(".mejs-captions-text").css("font-size","");this.container.find(".mejs-captions-position").css("bottom","")}}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{speeds:["1.50","1.25","1.00","0.75"],defaultSpeed:"1.00"});f.extend(MediaElementPlayer.prototype,{buildspeed:function(a,b,c,e){if(this.media.pluginType=="native"){c='<div class="mejs-button mejs-speed-button"><button type="button">'+this.options.defaultSpeed+'x</button><div class="mejs-speed-selector"><ul>';var d;f.inArray(this.options.defaultSpeed,this.options.speeds)===-1&&this.options.speeds.push(this.options.defaultSpeed);this.options.speeds.sort(function(g,
-k){return parseFloat(k)-parseFloat(g)});for(d=0;d<this.options.speeds.length;d++){c+='<li><input type="radio" name="speed" value="'+this.options.speeds[d]+'" id="'+this.options.speeds[d]+'" ';if(this.options.speeds[d]==this.options.defaultSpeed){c+="checked=true ";c+='/><label for="'+this.options.speeds[d]+'" class="mejs-speed-selected">'+this.options.speeds[d]+"x</label></li>"}else c+='/><label for="'+this.options.speeds[d]+'">'+this.options.speeds[d]+"x</label></li>"}c+="</ul></div></div>";a.speedButton=
-f(c).appendTo(b);a.playbackspeed=this.options.defaultSpeed;a.speedButton.on("click","input[type=radio]",function(){a.playbackspeed=f(this).attr("value");e.playbackRate=parseFloat(a.playbackspeed);a.speedButton.find("button").text(a.playbackspeed+"x");a.speedButton.find(".mejs-speed-selected").removeClass("mejs-speed-selected");a.speedButton.find("input[type=radio]:checked").next().addClass("mejs-speed-selected")});b=a.speedButton.find(".mejs-speed-selector");b.height(this.speedButton.find(".mejs-speed-selector ul").outerHeight(true)+
-a.speedButton.find(".mejs-speed-translations").outerHeight(true));b.css("top",-1*b.height()+"px")}}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{startLanguage:"",tracksText:mejs.i18n.t("Captions/Subtitles"),hideCaptionsButtonWhenEmpty:true,toggleCaptionsButtonWhenOnlyOne:false,slidesSelector:""});f.extend(MediaElementPlayer.prototype,{hasChapters:false,buildtracks:function(a,b,c,e){if(a.tracks.length!==0){var d;if(this.domNode.textTracks)for(d=this.domNode.textTracks.length-1;d>=0;d--)this.domNode.textTracks[d].mode="hidden";a.chapters=f('<div class="mejs-chapters mejs-layer"></div>').prependTo(c).hide();
-a.captions=f('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover"><span class="mejs-captions-text"></span></div></div>').prependTo(c).hide();a.captionsText=a.captions.find(".mejs-captions-text");a.captionsButton=f('<div class="mejs-button mejs-captions-button"><button type="button" aria-controls="'+this.id+'" title="'+this.options.tracksText+'" aria-label="'+this.options.tracksText+'"></button><div class="mejs-captions-selector"><ul><li><input type="radio" name="'+
-a.id+'_captions" id="'+a.id+'_captions_none" value="none" checked="checked" /><label for="'+a.id+'_captions_none">'+mejs.i18n.t("None")+"</label></li></ul></div></div>").appendTo(b);for(d=b=0;d<a.tracks.length;d++)a.tracks[d].kind=="subtitles"&&b++;if(this.options.toggleCaptionsButtonWhenOnlyOne&&b==1)a.captionsButton.on("click",function(){lang=a.selectedTrack===null?a.tracks[0].srclang:"none";a.setTrack(lang)});else{a.captionsButton.on("mouseenter focusin",function(){f(this).find(".mejs-captions-selector").css("visibility",
-"visible")}).on("click","input[type=radio]",function(){lang=this.value;a.setTrack(lang)});a.captionsButton.on("mouseleave focusout",function(){f(this).find(".mejs-captions-selector").css("visibility","hidden")})}a.options.alwaysShowControls?a.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover"):a.container.bind("controlsshown",function(){a.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}).bind("controlshidden",function(){e.paused||a.container.find(".mejs-captions-position").removeClass("mejs-captions-position-hover")});
-a.trackToLoad=-1;a.selectedTrack=null;a.isLoadingTrack=false;for(d=0;d<a.tracks.length;d++)a.tracks[d].kind=="subtitles"&&a.addTrackButton(a.tracks[d].srclang,a.tracks[d].label);a.loadNextTrack();e.addEventListener("timeupdate",function(){a.displayCaptions()},false);if(a.options.slidesSelector!==""){a.slidesContainer=f(a.options.slidesSelector);e.addEventListener("timeupdate",function(){a.displaySlides()},false)}e.addEventListener("loadedmetadata",function(){a.displayChapters()},false);a.container.hover(function(){if(a.hasChapters){a.chapters.css("visibility",
-"visible");a.chapters.fadeIn(200).height(a.chapters.find(".mejs-chapter").outerHeight())}},function(){a.hasChapters&&!e.paused&&a.chapters.fadeOut(200,function(){f(this).css("visibility","hidden");f(this).css("display","block")})});a.node.getAttribute("autoplay")!==null&&a.chapters.css("visibility","hidden")}},setTrack:function(a){var b;if(a=="none"){this.selectedTrack=null;this.captionsButton.removeClass("mejs-captions-enabled")}else for(b=0;b<this.tracks.length;b++)if(this.tracks[b].srclang==a){this.selectedTrack===
-null&&this.captionsButton.addClass("mejs-captions-enabled");this.selectedTrack=this.tracks[b];this.captions.attr("lang",this.selectedTrack.srclang);this.displayCaptions();break}},loadNextTrack:function(){this.trackToLoad++;if(this.trackToLoad<this.tracks.length){this.isLoadingTrack=true;this.loadTrack(this.trackToLoad)}else{this.isLoadingTrack=false;this.checkForTracks()}},loadTrack:function(a){var b=this,c=b.tracks[a];f.ajax({url:c.src,dataType:"text",success:function(e){c.entries=typeof e=="string"&&
-/<tt\s+xml/ig.exec(e)?mejs.TrackFormatParser.dfxp.parse(e):mejs.TrackFormatParser.webvtt.parse(e);c.isLoaded=true;b.enableTrackButton(c.srclang,c.label);b.loadNextTrack();c.kind=="chapters"&&b.media.addEventListener("play",function(){b.media.duration>0&&b.displayChapters(c)},false);c.kind=="slides"&&b.setupSlides(c)},error:function(){b.loadNextTrack()}})},enableTrackButton:function(a,b){if(b==="")b=mejs.language.codes[a]||a;this.captionsButton.find("input[value="+a+"]").prop("disabled",false).siblings("label").html(b);
-this.options.startLanguage==a&&f("#"+this.id+"_captions_"+a).prop("checked",true).trigger("click");this.adjustLanguageBox()},addTrackButton:function(a,b){if(b==="")b=mejs.language.codes[a]||a;this.captionsButton.find("ul").append(f('<li><input type="radio" name="'+this.id+'_captions" id="'+this.id+"_captions_"+a+'" value="'+a+'" disabled="disabled" /><label for="'+this.id+"_captions_"+a+'">'+b+" (loading)</label></li>"));this.adjustLanguageBox();this.container.find(".mejs-captions-translations option[value="+
-a+"]").remove()},adjustLanguageBox:function(){this.captionsButton.find(".mejs-captions-selector").height(this.captionsButton.find(".mejs-captions-selector ul").outerHeight(true)+this.captionsButton.find(".mejs-captions-translations").outerHeight(true))},checkForTracks:function(){var a=false;if(this.options.hideCaptionsButtonWhenEmpty){for(i=0;i<this.tracks.length;i++)if(this.tracks[i].kind=="subtitles"){a=true;break}if(!a){this.captionsButton.hide();this.setControlsSize()}}},displayCaptions:function(){if(typeof this.tracks!=
-"undefined"){var a,b=this.selectedTrack;if(b!==null&&b.isLoaded)for(a=0;a<b.entries.times.length;a++)if(this.media.currentTime>=b.entries.times[a].start&&this.media.currentTime<=b.entries.times[a].stop){this.captionsText.html(b.entries.text[a]).attr("class","mejs-captions-text "+(b.entries.times[a].identifier||""));this.captions.show().height(0);return}this.captions.hide()}},setupSlides:function(a){this.slides=a;this.slides.entries.imgs=[this.slides.entries.text.length];this.showSlide(0)},showSlide:function(a){if(!(typeof this.tracks==
-"undefined"||typeof this.slidesContainer=="undefined")){var b=this,c=b.slides.entries.text[a],e=b.slides.entries.imgs[a];if(typeof e=="undefined"||typeof e.fadeIn=="undefined")b.slides.entries.imgs[a]=e=f('<img src="'+c+'">').on("load",function(){e.appendTo(b.slidesContainer).hide().fadeIn().siblings(":visible").fadeOut()});else!e.is(":visible")&&!e.is(":animated")&&e.fadeIn().siblings(":visible").fadeOut()}},displaySlides:function(){if(typeof this.slides!="undefined"){var a=this.slides,b;for(b=0;b<
-a.entries.times.length;b++)if(this.media.currentTime>=a.entries.times[b].start&&this.media.currentTime<=a.entries.times[b].stop){this.showSlide(b);break}}},displayChapters:function(){var a;for(a=0;a<this.tracks.length;a++)if(this.tracks[a].kind=="chapters"&&this.tracks[a].isLoaded){this.drawChapters(this.tracks[a]);this.hasChapters=true;break}},drawChapters:function(a){var b=this,c,e,d=e=0;b.chapters.empty();for(c=0;c<a.entries.times.length;c++){e=a.entries.times[c].stop-a.entries.times[c].start;
-e=Math.floor(e/b.media.duration*100);if(e+d>100||c==a.entries.times.length-1&&e+d<100)e=100-d;b.chapters.append(f('<div class="mejs-chapter" rel="'+a.entries.times[c].start+'" style="left: '+d.toString()+"%;width: "+e.toString()+'%;"><div class="mejs-chapter-block'+(c==a.entries.times.length-1?" mejs-chapter-block-last":"")+'"><span class="ch-title">'+a.entries.text[c]+'</span><span class="ch-time">'+mejs.Utility.secondsToTimeCode(a.entries.times[c].start)+"&ndash;"+mejs.Utility.secondsToTimeCode(a.entries.times[c].stop)+
-"</span></div></div>"));d+=e}b.chapters.find("div.mejs-chapter").click(function(){b.media.setCurrentTime(parseFloat(f(this).attr("rel")));b.media.paused&&b.media.play()});b.chapters.show()}});mejs.language={codes:{af:"Afrikaans",sq:"Albanian",ar:"Arabic",be:"Belarusian",bg:"Bulgarian",ca:"Catalan",zh:"Chinese","zh-cn":"Chinese Simplified","zh-tw":"Chinese Traditional",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",et:"Estonian",fl:"Filipino",fi:"Finnish",fr:"French",gl:"Galician",de:"German",
-el:"Greek",ht:"Haitian Creole",iw:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",ko:"Korean",lv:"Latvian",lt:"Lithuanian",mk:"Macedonian",ms:"Malay",mt:"Maltese",no:"Norwegian",fa:"Persian",pl:"Polish",pt:"Portuguese",ro:"Romanian",ru:"Russian",sr:"Serbian",sk:"Slovak",sl:"Slovenian",es:"Spanish",sw:"Swahili",sv:"Swedish",tl:"Tagalog",th:"Thai",tr:"Turkish",uk:"Ukrainian",vi:"Vietnamese",cy:"Welsh",yi:"Yiddish"}};mejs.TrackFormatParser={webvtt:{pattern_timecode:/^((?:[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})?)(.*)$/,
-parse:function(a){var b=0;a=mejs.TrackFormatParser.split2(a,/\r?\n/);for(var c={text:[],times:[]},e,d,g;b<a.length;b++){if((e=this.pattern_timecode.exec(a[b]))&&b<a.length){if(b-1>=0&&a[b-1]!=="")g=a[b-1];b++;d=a[b];for(b++;a[b]!==""&&b<a.length;){d=d+"\n"+a[b];b++}d=f.trim(d).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>");c.text.push(d);c.times.push({identifier:g,start:mejs.Utility.convertSMPTEtoSeconds(e[1])===0?0.2:mejs.Utility.convertSMPTEtoSeconds(e[1]),
-stop:mejs.Utility.convertSMPTEtoSeconds(e[3]),settings:e[5]})}g=""}return c}},dfxp:{parse:function(a){a=f(a).filter("tt");var b=0;b=a.children("div").eq(0);var c=b.find("p");b=a.find("#"+b.attr("style"));var e,d;a={text:[],times:[]};if(b.length){d=b.removeAttr("id").get(0).attributes;if(d.length){e={};for(b=0;b<d.length;b++)e[d[b].name.split(":")[1]]=d[b].value}}for(b=0;b<c.length;b++){var g;d={start:null,stop:null,style:null};if(c.eq(b).attr("begin"))d.start=mejs.Utility.convertSMPTEtoSeconds(c.eq(b).attr("begin"));
-if(!d.start&&c.eq(b-1).attr("end"))d.start=mejs.Utility.convertSMPTEtoSeconds(c.eq(b-1).attr("end"));if(c.eq(b).attr("end"))d.stop=mejs.Utility.convertSMPTEtoSeconds(c.eq(b).attr("end"));if(!d.stop&&c.eq(b+1).attr("begin"))d.stop=mejs.Utility.convertSMPTEtoSeconds(c.eq(b+1).attr("begin"));if(e){g="";for(var k in e)g+=k+":"+e[k]+";"}if(g)d.style=g;if(d.start===0)d.start=0.2;a.times.push(d);d=f.trim(c.eq(b).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,
-"<a href='$1' target='_blank'>$1</a>");a.text.push(d);if(a.times.start===0)a.times.start=2}return a}},split2:function(a,b){return a.split(b)}};if("x\n\ny".split(/\n/gi).length!=3)mejs.TrackFormatParser.split2=function(a,b){var c=[],e="",d;for(d=0;d<a.length;d++){e+=a.substring(d,d+1);if(b.test(e)){c.push(e.replace(b,""));e=""}}c.push(e);return c}})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{contextMenuItems:[{render:function(a){if(typeof a.enterFullScreen=="undefined")return null;return a.isFullScreen?mejs.i18n.t("Turn off Fullscreen"):mejs.i18n.t("Go Fullscreen")},click:function(a){a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{render:function(a){return a.media.muted?mejs.i18n.t("Unmute"):mejs.i18n.t("Mute")},click:function(a){a.media.muted?a.setMuted(false):a.setMuted(true)}},{isSeparator:true},{render:function(){return mejs.i18n.t("Download Video")},
-click:function(a){window.location.href=a.media.currentSrc}}]});f.extend(MediaElementPlayer.prototype,{buildcontextmenu:function(a){a.contextMenu=f('<div class="mejs-contextmenu"></div>').appendTo(f("body")).hide();a.container.bind("contextmenu",function(b){if(a.isContextMenuEnabled){b.preventDefault();a.renderContextMenu(b.clientX-1,b.clientY-1);return false}});a.container.bind("click",function(){a.contextMenu.hide()});a.contextMenu.bind("mouseleave",function(){a.startContextMenuTimer()})},cleancontextmenu:function(a){a.contextMenu.remove()},
-isContextMenuEnabled:true,enableContextMenu:function(){this.isContextMenuEnabled=true},disableContextMenu:function(){this.isContextMenuEnabled=false},contextMenuTimeout:null,startContextMenuTimer:function(){var a=this;a.killContextMenuTimer();a.contextMenuTimer=setTimeout(function(){a.hideContextMenu();a.killContextMenuTimer()},750)},killContextMenuTimer:function(){var a=this.contextMenuTimer;if(a!=null){clearTimeout(a);delete a}},hideContextMenu:function(){this.contextMenu.hide()},renderContextMenu:function(a,
-b){for(var c=this,e="",d=c.options.contextMenuItems,g=0,k=d.length;g<k;g++)if(d[g].isSeparator)e+='<div class="mejs-contextmenu-separator"></div>';else{var j=d[g].render(c);if(j!=null)e+='<div class="mejs-contextmenu-item" data-itemindex="'+g+'" id="element-'+Math.random()*1E6+'">'+j+"</div>"}c.contextMenu.empty().append(f(e)).css({top:b,left:a}).show();c.contextMenu.find(".mejs-contextmenu-item").each(function(){var m=f(this),q=parseInt(m.data("itemindex"),10),p=c.options.contextMenuItems[q];typeof p.show!=
-"undefined"&&p.show(m,c);m.click(function(){typeof p.click!="undefined"&&p.click(c);c.contextMenu.hide()})});setTimeout(function(){c.killControlsTimer("rev3")},100)}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{postrollCloseText:mejs.i18n.t("Close")});f.extend(MediaElementPlayer.prototype,{buildpostroll:function(a,b,c){var e=this.container.find('link[rel="postroll"]').attr("href");if(typeof e!=="undefined"){a.postroll=f('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">'+this.options.postrollCloseText+'</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(c).hide();this.media.addEventListener("ended",
-function(){f.ajax({dataType:"html",url:e,success:function(d){c.find(".mejs-postroll-layer-content").html(d)}});a.postroll.show()},false)}}})})(mejs.$);
-
+ */
+!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(14),i=a(25),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{14:14,25:25,6:6}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(25),m=a(26),n=a(7),o=function p(a,b){var c=this;e(this,p);var d=this;d.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(d.defaults,b),d.mediaElement=i["default"].createElement(b.fakeNodeName),d.mediaElement.options=b;var f=a,g=!1;if("string"==typeof a?d.mediaElement.originalNode=i["default"].getElementById(a):(d.mediaElement.originalNode=a,f=a.id),f=f||"mejs_"+Math.random().toString().slice(2),void 0!==d.mediaElement.originalNode&&null!==d.mediaElement.originalNode&&d.mediaElement.appendChild){d.mediaElement.originalNode.setAttribute("id",f+"_from_mejs");var h=d.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(h)&&!d.mediaElement.originalNode.getAttribute("preload")&&d.mediaElement.originalNode.setAttribute("preload","none"),d.mediaElement.originalNode.parentNode.insertBefore(d.mediaElement,d.mediaElement.originalNode),d.mediaElement.appendChild(d.mediaElement.originalNode)}d.mediaElement.id=f,d.mediaElement.renderers={},d.mediaElement.renderer=null,d.mediaElement.rendererName=null,d.mediaElement.changeRenderer=function(a,b){var d=c;if(void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer.name===a)return d.mediaElement.renderer.pause(),d.mediaElement.renderer.stop&&d.mediaElement.renderer.stop(),d.mediaElement.renderer.show(),d.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&(d.mediaElement.renderer.pause(),d.mediaElement.renderer.stop&&d.mediaElement.renderer.stop(),d.mediaElement.renderer.hide());var e=d.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),d.mediaElement.renderer=e,d.mediaElement.rendererName=a,!0;for(var g=d.mediaElement.options.renderers.length?d.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,d.mediaElement.options);return e=f.create(d.mediaElement,l,b),e.name=a,d.mediaElement.renderers[f.name]=e,d.mediaElement.renderer=e,d.mediaElement.rendererName=a,e.show(),!0}}return!1},d.mediaElement.setSize=function(a,b){void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer.setSize(a,b)},d.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=d.mediaElement.options.customError;if(!c){var e=d.mediaElement.originalNode.getAttribute("poster");e&&(c+='<img src="'+e+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var f=0,h=a.length;h>f;f++){var j=a[f];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,d.mediaElement.originalNode.parentNode.insertBefore(b,d.mediaElement.originalNode),d.mediaElement.originalNode.style.display="none",g=!0};var j=k["default"].html5media.properties,o=k["default"].html5media.methods,q=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},r=function(a){"src"!==a&&!function(){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer?d.mediaElement.renderer["get"+b]():null},e=function(a){void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer["set"+b](a)};q(d.mediaElement,a,c,e),d.mediaElement["get"+b]=c,d.mediaElement["set"+b]=e}()},s=function(){return void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer?d.mediaElement.renderer.getSrc():null},t=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,e=a.length;e>c;c++){var f=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:f,type:""!==g&&null!==g&&void 0!==g||!f?g:m.getTypeFromFile(f)})}var h=n.renderer.select(b,d.mediaElement.options.renderers.length?d.mediaElement.options.renderers:[]),i=void 0;return d.mediaElement.paused||(d.mediaElement.pause(),i=l.createEvent("pause",d.mediaElement),d.mediaElement.dispatchEvent(i)),d.mediaElement.originalNode.setAttribute("src",b[0].src||""),d.mediaElement.querySelector(".me_cannotplay")&&d.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(d.mediaElement.createErrorMessage(b),i=l.createEvent("error",d.mediaElement),i.message="No renderer found",void d.mediaElement.dispatchEvent(i)):(d.mediaElement.changeRenderer(h.rendererName,b),void 0===d.mediaElement.renderer||null===d.mediaElement.renderer?(i=l.createEvent("error",d.mediaElement),i.message="Error creating renderer",d.mediaElement.dispatchEvent(i),void d.mediaElement.createErrorMessage(b)):void 0)},u=function(a){d.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),e=0;b>e;e++)c[e]=arguments[e];if(void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&"function"==typeof d.mediaElement.renderer[a])try{d.mediaElement.renderer[a](c)}catch(f){d.mediaElement.createErrorMessage()}return null}};q(d.mediaElement,"src",s,t),d.mediaElement.getSrc=s,d.mediaElement.setSrc=t;for(var v=0,w=j.length;w>v;v++)r(j[v]);for(var x=0,y=o.length;y>x;x++)u(o[x]);if(d.mediaElement.events={},d.mediaElement.addEventListener=function(a,b){d.mediaElement.events[a]=d.mediaElement.events[a]||[],d.mediaElement.events[a].push(b)},d.mediaElement.removeEventListener=function(a,b){if(!a)return d.mediaElement.events={},!0;var c=d.mediaElement.events[a];if(!c)return!0;if(!b)return d.mediaElement.events[a]=[],!0;for(var e=0;e<c.length;e++)if(c[e]===b)return d.mediaElement.events[a].splice(e,1),!0;return!1},d.mediaElement.dispatchEvent=function(a){var b=d.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])},null!==d.mediaElement.originalNode){var z=[];switch(d.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":z.push({type:"",src:d.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var A=void 0,B=void 0,C=void 0,D=d.mediaElement.originalNode.childNodes.length,E=d.mediaElement.originalNode.getAttribute("src");if(E){var F=d.mediaElement.originalNode;z.push({type:m.formatType(E,F.getAttribute("type")),src:E})}for(var G=0;D>G;G++)A=d.mediaElement.originalNode.childNodes[G],A.nodeType===Node.ELEMENT_NODE&&"source"===A.tagName.toLowerCase()&&(B=A.getAttribute("src"),C=m.formatType(B,A.getAttribute("type")),z.push({type:C,src:B}))}z.length>0&&(d.mediaElement.src=z)}return d.mediaElement.options.success&&d.mediaElement.options.success(d.mediaElement,d.mediaElement.originalNode),g&&d.mediaElement.options.error&&d.mediaElement.options.error(d.mediaElement,d.mediaElement.originalNode),d.mediaElement};g["default"].MediaElement=o,c["default"]=o},{2:2,25:25,26:26,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.0.2",g.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;b=b.length?b:this.order,c||!function(){var a=[/^(html5|native)/,/^flash/,/iframe$/],c=function(b){for(var c=0,d=a.length;d>c;c++)if(null!==b.match(a[c]))return c;return a.length};b.sort(function(a,b){return c(a)-c(b)})}();for(var d=0,e=b.length;e>d;d++){var f=b[d],g=this.renderers[f];if(null!==g&&void 0!==g)for(var h=0,i=a.length;i>h;h++)if("function"==typeof g.canPlayType&&"string"==typeof a[h].type&&g.canPlayType(a[h].type))return{rendererName:g.name,src:a[h].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}var f=a(3),g=e(f),h=a(2),i=e(h),j=a(4),k=e(j),l=a(16),m=e(l),n=a(23),o=d(n),p=a(25),q=a(24);Object.assign(l.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(m["default"].prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(a,b,c,d){if(a.isVideo){a.isInIframe=g["default"].location!==g["default"].parent.location,d.addEventListener("loadstart",function(){a.detectFullscreenMode()});var e=this,f=p.isString(e.options.fullscreenText)?e.options.fullscreenText:k["default"].t("mejs.fullscreen"),h=i["default"].createElement("div");if(h.className=e.options.classPrefix+"button "+e.options.classPrefix+"fullscreen-button",h.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+f+'" aria-label="'+f+'" tabindex="0"></button>',e.addControlElement(h,"fullscreen"),h.addEventListener("click",function(){var b=o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||a.isFullScreen;b?a.exitFullScreen():a.enterFullScreen()}),a.fullscreenBtn=h,e.globalBind("keydown",function(b){var c=b.which||b.keyCode||0;27===c&&(o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||e.isFullScreen)&&a.exitFullScreen()}),e.normalHeight=0,e.normalWidth=0,o.HAS_TRUE_NATIVE_FULLSCREEN){var j=function(){a.isFullScreen&&(o.isFullScreen()?(a.isNativeFullScreen=!0,a.setControlsSize()):(a.isNativeFullScreen=!1,a.exitFullScreen()))};a.globalBind(o.FULLSCREEN_EVENT_NAME,j)}}},detectFullscreenMode:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/),c="";return c=o.HAS_TRUE_NATIVE_FULLSCREEN&&b?"native-native":o.HAS_TRUE_NATIVE_FULLSCREEN&&!b?"plugin-native":a.usePluginFullScreen&&o.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",a.fullscreenMode=c,c},cleanfullscreen:function(a){a.exitFullScreen()},enterFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(html5|native)/),c=getComputedStyle(a.container);if(o.IS_IOS&&o.HAS_IOS_FULLSCREEN&&"function"==typeof a.media.webkitEnterFullscreen)return void a.media.webkitEnterFullscreen();if(q.addClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.addClass(a.container,a.options.classPrefix+"container-fullscreen"),a.normalHeight=parseFloat(c.height),a.normalWidth=parseFloat(c.width),"native-native"===a.fullscreenMode||"plugin-native"===a.fullscreenMode?(o.requestFullScreen(a.container),a.isInIframe&&setTimeout(function r(){if(a.isNativeFullScreen){var b=.002,c=g["default"].innerWidth||i["default"].documentElement.clientWidth||i["default"].body.clientWidth,d=screen.width,e=Math.abs(d-c),f=d*b;e>f?a.exitFullScreen():setTimeout(r,500)}},1e3)):"fullwindow"===a.fullscreeMode,a.container.style.width="100%",a.container.style.height="100%",a.containerSizeTimeout=setTimeout(function(){a.container.style.width="100%",a.container.style.height="100%",a.setControlsSize()},500),b)a.node.style.width="100%",a.node.style.height="100%";else for(var d=a.container.querySelectorAll("iframe, embed, object, video"),e=d.length,f=0;e>f;f++)d[f].style.width="100%",d[f].style.height="100%";a.options.setDimensions&&"function"==typeof a.media.setSize&&a.media.setSize(screen.width,screen.height);for(var h=a.layers.childNodes,j=h.length,k=0;j>k;k++)h[k].style.width="100%",h[k].style.height="100%";a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen")),a.setControlsSize(),a.isFullScreen=!0;var l=Math.min(screen.width/a.width,screen.height/a.height),m=a.container.querySelector("."+a.options.classPrefix+"captions-text");m&&(m.style.fontSize=100*l+"%",m.style.lineHeight="normal",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="45px");var n=p.createEvent("enteredfullscreen",a.container);a.container.dispatchEvent(n)},exitFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/);if(clearTimeout(a.containerSizeTimeout),o.HAS_TRUE_NATIVE_FULLSCREEN&&(o.IS_FULLSCREEN||a.isFullScreen)&&o.cancelFullScreen(),q.removeClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.removeClass(a.container,a.options.classPrefix+"container-fullscreen"),a.options.setDimensions){if(a.container.style.width=a.normalWidth+"px",a.container.style.height=a.normalHeight+"px",b)a.node.style.width=a.normalWidth+"px",a.node.style.height=a.normalHeight+"px";else for(var c=a.container.querySelectorAll("iframe, embed, object, video"),d=c.length,e=0;d>e;e++)c[e].style.width=a.normalWidth+"px",c[e].style.height=a.normalHeight+"px";"function"==typeof a.media.setSize&&a.media.setSize(a.normalWidth,a.normalHeight);for(var f=a.layers.childNodes,g=f.length,h=0;g>h;h++)f[h].style.width=a.normalWidth+"px",f[h].style.height=a.normalHeight+"px"}q.removeClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen"),a.setControlsSize(),a.isFullScreen=!1;var j=a.container.querySelector("."+a.options.classPrefix+"captions-text");j&&(j.style.fontSize="",j.style.lineHeight="",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="");var k=p.createEvent("exitedfullscreen",a.container);a.container.dispatchEvent(k)}})},{16:16,2:2,23:23,24:24,25:25,3:3,4:4}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(25),l=a(24);Object.assign(g.config,{playText:null,pauseText:null}),Object.assign(h["default"].prototype,{buildplaypause:function(a,b,c,d){function e(a){"play"===a?(l.removeClass(n,g.options.classPrefix+"play"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"pause"),o.setAttribute("title",m),o.setAttribute("aria-label",m)):(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"play"),o.setAttribute("title",i),o.setAttribute("aria-label",i))}var g=this,h=g.options,i=k.isString(h.playText)?h.playText:j["default"].t("mejs.play"),m=k.isString(h.pauseText)?h.pauseText:j["default"].t("mejs.pause"),n=f["default"].createElement("div");n.className=g.options.classPrefix+"button "+g.options.classPrefix+"playpause-button "+g.options.classPrefix+"play",n.innerHTML='<button type="button" aria-controls="'+g.id+'" title="'+i+'" aria-label="'+m+'" tabindex="0"></button>',n.addEventListener("click",function(){d.paused?d.play():d.pause()});var o=n.querySelector("button");g.addControlElement(n,"playpause"),e("pse"),d.addEventListener("loadedmetadata",function(){e("pse")}),d.addEventListener("play",function(){e("play")}),d.addEventListener("playing",function(){e("play")}),d.addEventListener("pause",function(){e("pse")}),d.addEventListener("paused",function(){e("pse")}),d.addEventListener("ended",function(){a.options.loop||(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"play"),l.addClass(n,g.options.classPrefix+"replay"),o.setAttribute("title",i),o.setAttribute("aria-label",i))})}})},{16:16,2:2,24:24,25:25,4:4}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(23),l=a(28),m=a(24);Object.assign(g.config,{enableProgressTooltip:!0}),Object.assign(h["default"].prototype,{buildprogress:function(a,b,c,d){var e=0,g=!1,h=!1,i=this,n=a.options.autoRewind,o=a.options.enableProgressTooltip?'<span class="'+i.options.classPrefix+'time-float">'+('<span class="'+i.options.classPrefix+'time-float-current">00:00</span>')+('<span class="'+i.options.classPrefix+'time-float-corner"></span>')+"</span>":"",p=f["default"].createElement("div");p.className=i.options.classPrefix+"time-rail",p.innerHTML='<span class="'+i.options.classPrefix+"time-total "+i.options.classPrefix+'time-slider">'+('<span class="'+i.options.classPrefix+'time-buffering"></span>')+('<span class="'+i.options.classPrefix+'time-loaded"></span>')+('<span class="'+i.options.classPrefix+'time-current"></span>')+('<span class="'+i.options.classPrefix+'time-handle"></span>')+(""+o)+"</span>",i.addControlElement(p,"progress"),b.querySelector("."+i.options.classPrefix+"time-buffering").style.display="none",i.rail=b.querySelector("."+i.options.classPrefix+"time-rail"),i.total=b.querySelector("."+i.options.classPrefix+"time-total"),i.loaded=b.querySelector("."+i.options.classPrefix+"time-loaded"),i.current=b.querySelector("."+i.options.classPrefix+"time-current"),i.handle=b.querySelector("."+i.options.classPrefix+"time-handle"),i.timefloat=b.querySelector("."+i.options.classPrefix+"time-float"),i.timefloatcurrent=b.querySelector("."+i.options.classPrefix+"time-float-current"),i.slider=b.querySelector("."+i.options.classPrefix+"time-slider"),i.newTime=0,i.forcedHandlePause=!1;var q=function(b){var c=getComputedStyle(i.total),e=m.offset(i.total),f=parseFloat(c.width),h=0,j=0,n=void 0;n=b.originalEvent&&b.originalEvent.changedTouches?b.originalEvent.changedTouches[0].pageX:b.changedTouches?b.changedTouches[0].pageX:b.pageX,d.duration&&(n<e.left?n=e.left:n>f+e.left&&(n=f+e.left),j=n-e.left,h=j/f,i.newTime=.02>=h?0:h*d.duration,g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(i.setCurrentRailHandle(i.newTime),i.updateCurrent(i.newTime)),k.IS_IOS||k.IS_ANDROID||!i.timefloat||(i.timefloat.style.left=j+"px",i.timefloatcurrent.innerHTML=l.secondsToTimeCode(i.newTime,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),i.timefloat.style.display="block"))},r=function(){var b=d.currentTime,c=j["default"].t("mejs.time-slider"),e=l.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),f=d.duration;i.slider.setAttribute("role","slider"),i.slider.tabIndex=0,d.paused?(i.slider.setAttribute("aria-label",c),i.slider.setAttribute("aria-valuemin",0),i.slider.setAttribute("aria-valuemax",f),i.slider.setAttribute("aria-valuenow",b),i.slider.setAttribute("aria-valuetext",e)):(i.slider.removeAttribute("aria-label"),i.slider.removeAttribute("aria-valuemin"),i.slider.removeAttribute("aria-valuemax"),i.slider.removeAttribute("aria-valuenow"),i.slider.removeAttribute("aria-valuetext"))},s=function(){var a=new Date;a-e>=1e3&&d.play()},t=function(){g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(d.setCurrentTime(i.newTime),a.setCurrentRail(),i.updateCurrent(i.newTime)),i.forcedHandlePause&&i.media.play(),i.forcedHandlePause=!1};i.slider.addEventListener("focus",function(){a.options.autoRewind=!1}),i.slider.addEventListener("blur",function(){a.options.autoRewind=n}),i.slider.addEventListener("keydown",function(b){if(new Date-e>=1e3&&(h=d.paused),i.options.keyActions.length){var c=b.which||b.keyCode||0,f=d.duration,g=a.options.defaultSeekForwardInterval(d),j=a.options.defaultSeekBackwardInterval(d),l=d.currentTime;switch(c){case 37:case 40:d.duration!==1/0&&(l-=j);break;case 39:case 38:d.duration!==1/0&&(l+=g);break;case 36:l=0;break;case 35:l=f;break;case 32:return void(k.IS_FIREFOX||(d.paused?d.play():d.pause()));case 13:return void(d.paused?d.play():d.pause());default:return}l=0>l?0:l>=f?f:Math.floor(l),e=new Date,h||d.pause(),l<d.duration&&!h&&setTimeout(s,1100),d.setCurrentTime(l),b.preventDefault(),b.stopPropagation()}});var u=["mousedown","touchstart"];i.slider.addEventListener("dragstart",function(){return!1});for(var v=0,w=u.length;w>v;v++)i.slider.addEventListener(u[v],function(a){i.forcedHandlePause=!1,d.duration!==1/0&&(1===a.which||0===a.which)&&(d.paused||(i.media.pause(),i.forcedHandlePause=!0),g=!0,q(a),i.globalBind("mousemove.dur touchmove.dur",function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a);
+}),i.globalBind("mouseup.dur touchend.dur",function(){t(),g=!1,i.timefloat&&(i.timefloat.style.display="none"),i.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")}))});i.slider.addEventListener("mouseenter",function(a){a.target===i.slider&&d.duration!==1/0&&(i.globalBind("mousemove.dur",function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)}),!i.timefloat||k.IS_IOS||k.IS_ANDROID||(i.timefloat.style.display="block"))}),i.slider.addEventListener("mouseleave",function(){d.duration!==1/0&&(g||(i.globalUnbind("mousemove.dur"),i.timefloat&&(i.timefloat.style.display="none")))}),d.addEventListener("progress",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),i.slider.style.display="none"}}),d.addEventListener("timeupdate",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c),r(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),b.querySelector("."+i.options.classPrefix+"time-rail").appendChild(g),i.slider.style.display="none"}}),i.container.addEventListener("controlsresize",function(b){d.duration!==1/0&&(a.setProgressRail(b),i.forcedHandlePause||a.setCurrentRail(b))})},setProgressRail:function(a){var b=null,c=this,d=void 0!==a?a.target:c.media;d&&d.buffered&&d.buffered.length>0&&d.buffered.end&&d.duration?b=d.buffered.end(d.buffered.length-1)/d.duration:d&&void 0!==d.bytesTotal&&d.bytesTotal>0&&void 0!==d.bufferedBytes?b=d.bufferedBytes/d.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(b=a.loaded/a.total),null!==b&&(b=Math.min(1,Math.max(0,b)),c.loaded&&c.total&&(c.loaded.style.width=100*b+"%"))},setCurrentRailHandle:function(a){var b=this;b.setCurrentRailMain(b,a)},setCurrentRail:function(){var a=this;a.setCurrentRailMain(a)},setCurrentRailMain:function(a,b){if(void 0!==a.media.currentTime&&a.media.duration){var c="undefined"==typeof b?a.media.currentTime:b;if(a.total&&a.handle){var d=Math.round(parseFloat(getComputedStyle(a.total).width)*c/a.media.duration),e=d-Math.round(a.handle.offsetWidth/2);d=c/a.media.duration*100,a.current.style.width=d+"%",a.handle.style.left=e+"px"}}}})},{16:16,2:2,23:23,24:24,28:28,4:4}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(28),j=a(24);Object.assign(g.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(h["default"].prototype,{buildcurrent:function(a,b,c,d){var e=this,g=f["default"].createElement("div");g.className=e.options.classPrefix+"time",g.setAttribute("role","timer"),g.setAttribute("aria-live","off"),g.innerHTML='<span class="'+e.options.classPrefix+'currenttime">'+i.secondsToTimeCode(0,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",e.addControlElement(g,"current"),d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateCurrent()})},buildduration:function(a,b,c,d){var e=this,g=b.lastChild.querySelector("."+e.options.classPrefix+"currenttime");if(g)b.querySelector("."+e.options.classPrefix+"time").innerHTML+=e.options.timeAndDurationSeparator+'<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>");else{b.querySelector("."+e.options.classPrefix+"currenttime")&&j.addClass(b.querySelector("."+e.options.classPrefix+"currenttime").parentNode,e.options.classPrefix+"currenttime-container");var h=f["default"].createElement("div");h.className=e.options.classPrefix+"time "+e.options.classPrefix+"duration-container",h.innerHTML='<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>"),e.addControlElement(h,"duration")}d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateDuration()})},updateCurrent:function(){var a=this,b=a.media.currentTime;isNaN(b)&&(b=0),a.controls.querySelector("."+a.options.classPrefix+"currenttime")&&(a.controls.querySelector("."+a.options.classPrefix+"currenttime").innerText=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength))},updateDuration:function(){var a=this,b=a.media.duration;(isNaN(b)||b===1/0||0>b)&&(a.media.duration=a.options.duration=b=0),a.options.duration>0&&(b=a.options.duration);var c=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength);c.length>5&&j.toggleClass(a.container,a.options.classPrefix+"long-video"),a.controls.querySelector("."+a.options.classPrefix+"duration")&&b>0&&(a.controls.querySelector("."+a.options.classPrefix+"duration").innerHTML=c)}})},{16:16,2:2,24:24,28:28}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(6),h=d(g),i=a(4),j=d(i),k=a(16),l=d(k),m=a(28),n=a(25),o=a(24);Object.assign(k.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l["default"].prototype,{hasChapters:!1,buildtracks:function(a,b,c,d){if(0!==a.tracks.length){var e=this,g=e.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",h=n.isString(e.options.tracksText)?e.options.tracksText:j["default"].t("mejs.captions-subtitles"),i=n.isString(e.options.chaptersText)?e.options.chaptersText:j["default"].t("mejs.captions-chapters"),k=a.tracks.length;if(e.domNode.textTracks)for(var l=e.domNode.textTracks.length-1;l>=0;l--)e.domNode.textTracks[l].mode="hidden";e.cleartracks(a),a.captions=f["default"].createElement("div"),a.captions.className=e.options.classPrefix+"captions-layer "+e.options.classPrefix+"layer",a.captions.innerHTML='<div class="'+e.options.classPrefix+"captions-position "+e.options.classPrefix+'captions-position-hover"'+g+">"+('<span class="'+e.options.classPrefix+'captions-text"></span>')+"</div>",a.captions.style.display="none",c.insertBefore(a.captions,c.firstChild),a.captionsText=a.captions.querySelector("."+e.options.classPrefix+"captions-text"),a.captionsButton=f["default"].createElement("div"),a.captionsButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"captions-button",a.captionsButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"captions-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'captions-selector-list">')+('<li class="'+e.options.classPrefix+'captions-selector-list-item">')+('<input type="radio" class="'+e.options.classPrefix+'captions-selector-input" ')+('name="'+a.id+'_captions" id="'+a.id+'_captions_none" ')+'value="none" checked disabled>'+('<label class="'+e.options.classPrefix+"captions-selector-label ")+(e.options.classPrefix+'captions-selected" ')+('for="'+a.id+'_captions_none">'+j["default"].t("mejs.none")+"</label>")+"</li></ul></div>",e.addControlElement(a.captionsButton,"tracks"),a.captionsButton.querySelector("."+e.options.classPrefix+"captions-selector-list-item").disabled=!1,a.chaptersButton=f["default"].createElement("div"),a.chaptersButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"chapters-button",a.chaptersButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+i+'" aria-label="'+i+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"chapters-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'chapters-selector-list"></ul>')+"</div>";for(var m=0,p=0;k>p;p++){var q=a.tracks[p].kind;"subtitles"===q||"captions"===q?m++:"chapters"!==q||b.querySelector("."+e.options.classPrefix+"chapter-selector")||a.captionsButton.parentNode.insertBefore(a.chaptersButton,a.captionsButton)}a.trackToLoad=-1,a.selectedTrack=null,a.isLoadingTrack=!1;for(var r=0;k>r;r++){var s=a.tracks[r].kind;("subtitles"===s||"captions"===s)&&a.addTrackButton(a.tracks[r].trackId,a.tracks[r].srclang,a.tracks[r].label)}a.loadNextTrack();var t=["mouseenter","focusin"],u=["mouseleave","focusout"];if(e.options.toggleCaptionsButtonWhenOnlyOne&&1===m)a.captionsButton.addEventListener("click",function(){var b="none";null===a.selectedTrack&&(b=a.tracks[0].trackId),a.setTrack(b)});else{for(var v=a.captionsButton.querySelectorAll("."+e.options.classPrefix+"captions-selector-label"),w=a.captionsButton.querySelectorAll("input[type=radio]"),x=0,y=t.length;y>x;x++)a.captionsButton.addEventListener(t[x],function(){o.removeClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var z=0,A=u.length;A>z;z++)a.captionsButton.addEventListener(u[z],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var B=0,C=w.length;C>B;B++)w[B].addEventListener("click",function(){a.setTrack(this.value)});for(var D=0,E=v.length;E>D;D++)v[D].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)});a.captionsButton.addEventListener("keydown",function(a){a.stopPropagation()})}for(var F=0,G=t.length;G>F;F++)a.chaptersButton.addEventListener(t[F],function(){this.querySelector("."+e.options.classPrefix+"chapters-selector-list").childNodes.length&&o.removeClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});for(var H=0,I=u.length;I>H;H++)a.chaptersButton.addEventListener(u[H],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});a.chaptersButton.addEventListener("keydown",function(a){a.stopPropagation()}),a.options.alwaysShowControls?o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover"):(a.container.addEventListener("controlsshown",function(){o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")}),a.container.addEventListener("controlshidden",function(){d.paused||o.removeClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")})),d.addEventListener("timeupdate",function(){a.displayCaptions()}),""!==a.options.slidesSelector&&(a.slidesContainer=f["default"].querySelectorAll(a.options.slidesSelector),d.addEventListener("timeupdate",function(){a.displaySlides()}))}},cleartracks:function(a){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove(),a.chaptersButton&&a.chaptersButton.remove())},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},findTracks:function(){var a=this,b=a.node.querySelectorAll("track"),c=b.length;a.tracks=[];for(var d=0;c>d;d++){var e=b[d],f=e.getAttribute("srclang").toLowerCase()||"",g=a.id+"_track_"+d+"_"+e.getAttribute("kind")+"_"+f;a.tracks.push({trackId:g,srclang:f,src:e.getAttribute("src"),kind:e.getAttribute("kind"),label:e.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(a){for(var b=this,c=b.captionsButton.querySelectorAll('input[type="radio"]'),d=b.captionsButton.querySelectorAll("."+b.options.classPrefix+"captions-selected"),e=b.captionsButton.querySelector('input[value="'+a+'"]'),f=0,g=c.length;g>f;f++)c[f].checked=!1;for(var h=0,i=d.length;i>h;h++)o.removeClass(d[h],b.options.classPrefix+"captions-selected");e.checked=!0;for(var j=o.siblings(e,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),k=0,l=j.length;l>k;k++)o.addClass(j[k],b.options.classPrefix+"captions-selected");if("none"===a)b.selectedTrack=null,o.removeClass(b.captionsButton,b.options.classPrefix+"captions-enabled");else for(var m=0,p=b.tracks.length;p>m;m++){var q=b.tracks[m];if(q.trackId===a){null===b.selectedTrack&&o.addClass(b.captionsButton,b.options.classPrefix+"captions-enabled"),b.selectedTrack=q,b.captions.setAttribute("lang",b.selectedTrack.srclang),b.displayCaptions();break}}var r=n.createEvent("captionschange",b.media);r.detail.caption=b.selectedTrack,b.media.dispatchEvent(r)},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(a){var b=this,c=b.tracks[a];void 0===c||void 0===c.src&&""===c.src||o.ajax(c.src,"text",function(a){c.entries="string"==typeof a&&/<tt\s+xml/gi.exec(a)?h["default"].TrackFormatParser.dfxp.parse(a):h["default"].TrackFormatParser.webvtt.parse(a),c.isLoaded=!0,b.enableTrackButton(c),b.loadNextTrack(),"slides"===c.kind?b.setupSlides(c):"chapters"!==c.kind||b.hasChapters||(b.drawChapters(c),b.hasChapters=!0)},function(){b.removeTrackButton(c.trackId),b.loadNextTrack()})},enableTrackButton:function(a){var b=this,c=a.srclang,d=f["default"].getElementById(""+a.trackId);if(d){var e=a.label;""===e&&(e=j["default"].t(h["default"].language.codes[c])||c),d.disabled=!1;for(var g=o.siblings(d,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),i=0,k=g.length;k>i;i++)g[i].innerHTML=e;if(b.options.startLanguage===c){d.checked=!0;var l=n.createEvent("click",d);d.dispatchEvent(l)}}},removeTrackButton:function(a){var b=f["default"].getElementById(""+a);if(b){var c=b.closest("li");c&&c.remove()}},addTrackButton:function(a,b,c){var d=this;""===c&&(c=j["default"].t(h["default"].language.codes[b])||b),d.captionsButton.querySelector("ul").innerHTML+='<li class="'+d.options.classPrefix+'captions-selector-list-item">'+('<input type="radio" class="'+d.options.classPrefix+'captions-selector-input" ')+('name="'+d.id+'_captions" id="'+a+'" value="'+a+'" disabled>')+('<label class="'+d.options.classPrefix+'captions-selector-label">'+c+" (loading)</label>")+"</li>"},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(var c=0,d=a.tracks.length;d>c;c++){var e=a.tracks[c].kind;if(("subtitles"===e||"captions"===e)&&a.tracks[c].isLoaded){b=!0;break}}a.captionsButton.style.display=b?"":"none",a.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var a=this,b=a.selectedTrack,c=function(a){var b=f["default"].createElement("div");b.innerHTML=a;for(var c=b.getElementsByTagName("script"),d=c.length;d--;)c[d].remove();for(var e=b.getElementsByTagName("*"),g=0,h=e.length;h>g;g++)for(var i=e[g].attributes,j=Array.prototype.slice.call(i),k=0,l=j.length;l>k;k++)j[k].name.startsWith("on")||j[k].value.startsWith("javascript")?e[g].remove():"style"===j[k].name&&e[g].removeAttribute(j[k].name);return b.innerHTML};if(null!==b&&b.isLoaded){var d=a.searchTrackPosition(b.entries,a.media.currentTime);if(d>-1)return a.captionsText.innerHTML=c(b.entries[d].text),a.captionsText.className=a.options.classPrefix+"captions-text "+(b.entries[d].identifier||""),a.captions.style.display="",void(a.captions.style.height="0px");a.captions.style.display="none"}else a.captions.style.display="none"}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.length],b.showSlide(0)},showSlide:function(a){var b=this,c=this;if(void 0!==c.tracks&&void 0!==c.slidesContainer){var d=c.slides.entries[a].text,e=c.slides.entries[a].imgs;void 0===e||void 0===e.fadeIn?!function(){var g=f["default"].createElement("img");g.src=d,g.addEventListener("load",function(){var a=b,d=o.siblings(a,function(a){return d(a)});a.style.display="none",c.slidesContainer.innerHTML+=a.innerHTML,o.fadeIn(c.slidesContainer.querySelector(g));for(var e=0,f=d.length;f>e;e++)o.fadeOut(d[e],400)}),c.slides.entries[a].imgs=e=g}():o.visible(e)||!function(){var a=o.siblings(self,function(b){return a(b)});o.fadeIn(c.slidesContainer.querySelector(e));for(var b=0,d=a.length;d>b;b++)o.fadeOut(a[b])}()}},displaySlides:function(){var a=this;if(void 0!==this.slides){var b=a.slides,c=a.searchTrackPosition(b.entries,a.media.currentTime);return c>-1?void a.showSlide(c):void 0}},drawChapters:function(a){var b=this,c=a.entries.length;if(c){b.chaptersButton.querySelector("ul").innerHTML="";for(var d=0;c>d;d++)b.chaptersButton.querySelector("ul").innerHTML+='<li class="'+b.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">'+('<input type="radio" class="'+b.options.classPrefix+'captions-selector-input" ')+('name="'+b.id+'_chapters" value="'+a.entries[d].start+'" disabled>')+('<label class="'+b.options.classPrefix+'chapters-selector-label">'+a.entries[d].text+"</label>")+"</li>";for(var e=b.chaptersButton.querySelectorAll('input[type="radio"]'),f=b.chaptersButton.querySelectorAll("."+b.options.classPrefix+"chapters-selector-label"),g=0,h=e.length;h>g;g++)e[g].disabled=!1,e[g].checked=!1,e[g].addEventListener("click",function(){var a=this,c=b.chaptersButton.querySelectorAll("li"),d=o.siblings(a,function(a){return o.hasClass(a,b.options.classPrefix+"chapters-selector-label")})[0];a.checked=!0,a.parentNode.setAttribute("aria-checked",!0),o.addClass(d,b.options.classPrefix+"chapters-selected"),o.removeClass(b.chaptersButton.querySelector("."+b.options.classPrefix+"chapters-selected"),b.options.classPrefix+"chapters-selected");for(var e=0,f=c.length;f>e;e++)c[e].setAttribute("aria-checked",!1);b.media.setCurrentTime(parseFloat(a.value)),b.media.paused&&b.media.play()});for(var i=0,j=f.length;j>i;i++)f[i].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)})}},searchTrackPosition:function(a,b){for(var c=0,d=a.length-1,e=void 0,f=void 0,g=void 0;d>=c;){if(e=c+d>>1,f=a[e].start,g=a[e].stop,b>=f&&g>b)return e;b>f?c=e+1:f>b&&(d=e-1)}return-1}}),h["default"].language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},h["default"].TrackFormatParser={webvtt:{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})?)(.*)$/,parse:function(a){for(var b=a.split(/\r?\n/),c=[],d=void 0,e=void 0,f=void 0,g=0,h=b.length;h>g;g++){if(d=this.pattern.exec(b[g]),d&&g<b.length){for(g-1>=0&&""!==b[g-1]&&(f=b[g-1]),g++,e=b[g],g++;""!==b[g]&&g<b.length;)e=e+"\n"+b[g],g++;e=e.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),c.push({identifier:f,start:0===m.convertSMPTEtoSeconds(d[1])?.2:m.convertSMPTEtoSeconds(d[1]),stop:m.convertSMPTEtoSeconds(d[3]),text:e,settings:d[5]})}f=""}return c}},dfxp:{parse:function(a){a=$(a).filter("tt");var b=a.firstChild,c=b.querySelectorAll("p"),d=a.getElementById(""+b.attr("style")),e=[],f=void 0;if(d.length){d.removeAttribute("id");var g=d.attributes;if(g.length){f={};for(var h=0,i=g.length;i>h;h++)f[g[h].name.split(":")[1]]=g[h].value}}for(var j=0,k=c.length;k>j;j++){var l=void 0,n={start:null,stop:null,style:null,text:null};if(c.eq(j).attr("begin")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j).attr("begin"))),!n.start&&c.eq(j-1).attr("end")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j-1).attr("end"))),c.eq(j).attr("end")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j).attr("end"))),!n.stop&&c.eq(j+1).attr("begin")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j+1).attr("begin"))),f){l="";for(var o in f)l+=o+":"+f[o]+";"}l&&(n.style=l),0===n.start&&(n.start=.2),n.text=c.eq(j).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),e.push(n)}return e}}}},{16:16,2:2,24:24,25:25,28:28,4:4,6:6}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(23),l=a(25),m=a(24);Object.assign(g.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(h["default"].prototype,{buildvolume:function(a,b,c,d){if(!k.IS_ANDROID&&!k.IS_IOS||!this.options.hideVolumeOnTouchDevices){var e=this,g=e.isVideo?e.options.videoVolume:e.options.audioVolume,h=l.isString(e.options.muteText)?e.options.muteText:j["default"].t("mejs.mute"),i=l.isString(e.options.unmuteText)?e.options.unmuteText:j["default"].t("mejs.unmute"),n=l.isString(e.options.allyVolumeControlText)?e.options.allyVolumeControlText:j["default"].t("mejs.volume-help-text"),o=f["default"].createElement("div");if(o.className=e.options.classPrefix+"button "+e.options.classPrefix+"volume-button "+e.options.classPrefix+"mute",o.innerHTML="horizontal"===g?'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>':'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<a href="javascript:void(0);" class="'+e.options.classPrefix+'volume-slider">')+('<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>")+('<div class="'+e.options.classPrefix+'volume-total">')+('<div class="'+e.options.classPrefix+'volume-current"></div>')+('<div class="'+e.options.classPrefix+'volume-handle"></div>')+"</div></a>",e.addControlElement(o,"volume"),"horizontal"===g){var p=f["default"].createElement("a");p.className=e.options.classPrefix+"horizontal-volume-slider",p.href="javascript:void(0);",p.innerHTML+='<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>"+('<div class="'+e.options.classPrefix+'horizontal-volume-total">')+('<div class="'+e.options.classPrefix+'horizontal-volume-current"></div>')+('<div class="'+e.options.classPrefix+'horizontal-volume-handle"></div>')+"</div>",o.parentNode.insertBefore(p,o.nextSibling)}var q="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-slider"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-slider"),r="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-total"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-total"),s="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-current"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-current"),t="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-handle"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-handle"),u=o.firstElementChild,v=function(a){if(a=Math.max(0,a),a=Math.min(a,1),0===a){m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute");var b=o.firstElementChild;b.setAttribute("title",i),b.setAttribute("aria-label",i)}else{m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute");var c=o.firstElementChild;c.setAttribute("title",h),c.setAttribute("aria-label",h)}var d=100*a+"%",f=getComputedStyle(t);"vertical"===g?(s.style.bottom=0,s.style.height=d,t.style.bottom=d,t.style.marginBottom=-parseFloat(f.height)/2+"px"):(s.style.left=0,s.style.width=d,t.style.left=d,t.style.marginLeft=-parseFloat(f.width)/2+"px")},w=function(a){var b=m.offset(r),c=getComputedStyle(r),e=null;if("vertical"===g){var f=parseFloat(c.height),h=a.pageY-b.top;if(e=(f-h)/f,0===b.top||0===b.left)return}else{var i=parseFloat(c.width),j=a.pageX-b.left;e=j/i}e=Math.max(0,e),e=Math.min(e,1),v(e),0===e?d.setMuted(!0):d.setMuted(!1),d.setVolume(e),a.preventDefault(),a.stopPropagation()};o.addEventListener("mouseenter",function(a){a.target===o&&(q.style.display="block",y=!0,a.preventDefault(),a.stopPropagation())}),o.addEventListener("focusin",function(){q.style.display="block",y=!0}),o.addEventListener("mouseleave",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("focusout",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("keydown",function(a){if(e.options.keyActions.length){var b=a.which||a.keyCode||0,c=d.volume;switch(b){case 38:c=Math.min(c+.1,1);break;case 40:c=Math.max(0,c-.1);break;default:return!0}x=!1,v(c),d.setVolume(c),a.preventDefault(),a.stopPropagation()}});var x=!1,y=!1,z=function(){var a=Math.floor(100*d.volume);q.setAttribute("aria-label",j["default"].t("mejs.volume-slider")),q.setAttribute("aria-valuemin",0),q.setAttribute("aria-valuemax",100),q.setAttribute("aria-valuenow",a),q.setAttribute("aria-valuetext",a+"%"),q.setAttribute("role","slider"),q.tabIndex=-1};q.addEventListener("dragstart",function(){return!1}),q.addEventListener("mouseover",function(){y=!0}),q.addEventListener("mousedown",function(a){w(a),e.globalBind("mousemove.vol",function(a){var b=a.target;x&&(b===q||b.closest("vertical"===g?"."+e.options.classPrefix+"volume-slider":"."+e.options.classPrefix+"horizontal-volume-slider"))&&w(a)}),e.globalBind("mouseup.vol",function(){x=!1,e.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==g||(q.style.display="none")}),x=!0,a.preventDefault(),a.stopPropagation()}),u.addEventListener("click",function(){d.setMuted(!d.muted);var a=l.createEvent("volumechange",d);d.dispatchEvent(a)}),u.addEventListener("focus",function(){"vertical"===g&&(q.style.display="block")}),u.addEventListener("blur",function(){"vertical"===g&&(q.style.display="none")}),d.addEventListener("volumechange",function(a){x||(d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))),z(a)}),0===a.options.startVolume&&d.setMuted(!0);var A=null!==e.media.rendererName&&null!==e.media.rendererName.match(/(native|html5)/);A&&d.setVolume(a.options.startVolume),e.container.addEventListener("controlsresize",function(){d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))})}}})},{16:16,2:2,23:23,24:24,25:25,4:4}],14:[function(a,b,c){"use strict";/*!
+ * This is a `i18n` language object.
+ *
+ * English; This can serve as a template for other languages to translate
+ *
+ * @author
+ *   TBD
+ *   Sascha Greuel (Twitter: @SoftCreatR)
+ *
+ * @see core/i18n.js
+ */
+Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(6),h=d(g);"undefined"!=typeof jQuery?h["default"].$=f["default"].jQuery=f["default"].$=jQuery:"undefined"!=typeof Zepto?h["default"].$=f["default"].Zepto=f["default"].$=Zepto:"undefined"!=typeof ender&&(h["default"].$=f["default"].ender=f["default"].$=ender)},{3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.config=void 0;var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},h=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),i=a(3),j=e(i),k=a(2),l=e(k),m=a(6),n=e(m),o=a(5),p=e(o),q=a(4),r=e(q),s=a(23),t=a(25),u=a(28),v=a(26),w=a(24),x=d(w);n["default"].mepIndex=0,n["default"].players={};var y=c.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(a,b){s.IS_FIREFOX||(b.paused||b.ended?b.play():b.pause())}},{keys:[38],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.volume+.1,1);b.setVolume(c),c>0&&b.setMuted(!1)}},{keys:[40],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.volume-.1,0);b.setVolume(c),.1>=c&&b.setMuted(!0)}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a,b,c,d){d.ctrlKey||"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a){a.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",a.isVideo&&(a.showControls(),a.startControlsTimer()),a.media.muted?a.setMuted(!1):a.setMuted(!0)}}]};n["default"].MepDefaults=y;var z=function(){function a(b,c){f(this,a);var d=this,e="string"==typeof b?l["default"].getElementById(b):b;if(d.hasFocus=!1,d.controlsAreVisible=!0,d.controlsEnabled=!0,d.controlsTimer=null,!(d instanceof a))return new a(e,c);if(d.node=d.media=e,d.node){if(void 0!==d.media.player)return d.media.player;void 0===c&&(c=d.node.getAttribute("data-mejsoptions")),d.options=Object.assign({},y,c),d.options.timeFormat||(d.options.timeFormat="mm:ss",d.options.alwaysShowHours&&(d.options.timeFormat="hh:mm:ss"),d.options.showTimecodeFrameCount&&(d.options.timeFormat+=":ff")),u.calculateTimeFormat(0,d.options,d.options.framesPerSecond||25),d.id="mep_"+n["default"].mepIndex++,n["default"].players[d.id]=d;var g=Object.assign({},d.options,{success:function(a,b){d._meReady(a,b)},error:function(a){d._handleError(a)}}),h=d.node.tagName.toLowerCase();if(d.isDynamic="audio"!==h&&"video"!==h,d.isVideo=d.isDynamic?d.options.isVideo:"audio"!==h&&d.options.isVideo,s.IS_IPAD&&d.options.iPadUseNativeControls||s.IS_IPHONE&&d.options.iPhoneUseNativeControls)d.node.setAttribute("controls",!0),s.IS_IPAD&&d.node.getAttribute("autoplay")&&d.play();else if(!(d.isVideo||!d.isVideo&&d.options.features.length)||s.IS_ANDROID&&d.options.AndroidUseNativeControls)d.isVideo||d.options.features.length||(d.node.style.display="none");else{d.node.removeAttribute("controls");var i=d.isVideo?r["default"].t("mejs.video-player"):r["default"].t("mejs.audio-player"),j=l["default"].createElement("span");if(j.className=d.options.classPrefix+"offscreen",j.innerText=i,d.media.parentNode.insertBefore(j,d.media),d.container=l["default"].createElement("div"),d.container.id=d.id,d.container.className=d.options.classPrefix+"container "+d.options.classPrefix+"container-keyboard-inactive "+d.media.className,d.container.tabIndex=0,d.container.setAttribute("role","application"),d.container.setAttribute("aria-label",i),d.container.innerHTML='<div class="'+d.options.classPrefix+'inner">'+('<div class="'+d.options.classPrefix+'layers"></div>')+('<div class="'+d.options.classPrefix+'controls"></div>')+('<div class="'+d.options.classPrefix+'mediaelement"></div>')+('<div class="'+d.options.classPrefix+'clear"></div>')+"</div>",d.container.addEventListener("focus",function(a){if(!d.controlsAreVisible&&!d.hasFocus&&d.controlsEnabled&&(d.showControls(!0),!s.HAS_MS_NATIVE_FULLSCREEN)){var b=t.isNodeAfter(a.relatedTarget,d.container)?"."+d.options.classPrefix+"controls ."+d.options.classPrefix+"button:last-child > button":"."+d.options.classPrefix+"playpause-button > button",c=d.container.querySelector(b);c.focus()}}),d.node.parentNode.insertBefore(d.container,d.node),d.options.features.length||(d.container.style.background="transparent",d.container.querySelector("."+d.options.classPrefix+"controls").style.display="none"),d.isVideo&&"fill"===d.options.stretching&&!x.hasClass(d.container.parentNode,d.options.classPrefix+"fill-container")){d.outerContainer=d.media.parentNode;var k=l["default"].createElement("div");k.className=d.options.classPrefix+"fill-container",d.container.parentNode.insertBefore(k,d.container),k.appendChild(d.container)}s.IS_ANDROID&&x.addClass(d.container,d.options.classPrefix+"android"),s.IS_IOS&&x.addClass(d.container,d.options.classPrefix+"ios"),s.IS_IPAD&&x.addClass(d.container,d.options.classPrefix+"ipad"),s.IS_IPHONE&&x.addClass(d.container,d.options.classPrefix+"iphone"),x.addClass(d.container,d.isVideo?d.options.classPrefix+"video":d.options.classPrefix+"audio"),d.container.querySelector("."+d.options.classPrefix+"mediaelement").appendChild(d.node),d.media.player=d,d.controls=d.container.querySelector("."+d.options.classPrefix+"controls"),d.layers=d.container.querySelector("."+d.options.classPrefix+"layers");var m=d.isVideo?"video":"audio",o=m.substring(0,1).toUpperCase()+m.substring(1);d.options[m+"Width"]>0||d.options[m+"Width"].toString().indexOf("%")>-1?d.width=d.options[m+"Width"]:""!==d.node.style.width&&null!==d.node.style.width?d.width=d.node.style.width:d.node.getAttribute("width")?d.width=d.node.getAttribute("width"):d.width=d.options["default"+o+"Width"],d.options[m+"Height"]>0||d.options[m+"Height"].toString().indexOf("%")>-1?d.height=d.options[m+"Height"]:""!==d.node.style.height&&null!==d.node.style.height?d.height=d.node.style.height:d.node.getAttribute("height")?d.height=d.node.getAttribute("height"):d.height=d.options["default"+o+"Height"],d.initialAspectRatio=d.height>=d.width?d.width/d.height:d.height/d.width,d.setPlayerSize(d.width,d.height),g.pluginWidth=d.width,g.pluginHeight=d.height}if(new p["default"](d.media,g),void 0!==d.container&&d.options.features.length&&d.controlsAreVisible&&!d.options.hideVideoControlsOnLoad){var q=t.createEvent("controlsshown",d.container);d.container.dispatchEvent(q)}return d}}return h(a,[{key:"showControls",value:function(a){var b=this;if(a=void 0===a||a,!b.controlsAreVisible){if(a)!function(){x.removeClass(b.controls,b.options.classPrefix+"offscreen"),x.fadeIn(b.controls,200,function(){var a=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(a)});for(var a=b.container.querySelectorAll("."+b.options.classPrefix+"control"),c=function(c,d){x.fadeIn(a[c],200,function(){x.removeClass(a[c],b.options.classPrefix+"offscreen")})},d=0,e=a.length;e>d;d++)c(d,e)}();else{x.removeClass(b.controls,b.options.classPrefix+"offscreen"),b.controls.style.display="";for(var c=b.container.querySelectorAll("."+b.options.classPrefix+"control"),d=0,e=c.length;e>d;d++)x.removeClass(c[d],b.options.classPrefix+"offscreen"),c[d].style.display="";var f=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(f)}b.controlsAreVisible=!0,b.setControlsSize()}}},{key:"hideControls",value:function(a,b){var c=this;if(a=void 0===a||a,b===!0||!(!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||c.media.paused&&4===c.media.readyState&&(!c.options.hideVideoControlsOnLoad&&c.media.currentTime<=0||!c.options.hideVideoControlsOnPause&&c.media.currentTime>0)||c.isVideo&&!c.options.hideVideoControlsOnLoad&&!c.media.readyState||c.media.ended)){if(a)!function(){x.fadeOut(c.controls,200,function(){x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";var a=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(a)});for(var a=c.container.querySelectorAll("."+c.options.classPrefix+"control"),b=function(b,d){x.fadeOut(a[b],200,function(){x.addClass(a[b],c.options.classPrefix+"offscreen"),a[b].style.display=""})},d=0,e=a.length;e>d;d++)b(d,e)}();else{x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";for(var d=c.container.querySelectorAll("."+c.options.classPrefix+"control"),e=0,f=d.length;f>e;e++)x.addClass(d[e],c.options.classPrefix+"offscreen"),d[e].style.display="";var g=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(g)}c.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(a){var b=this;a="undefined"!=typeof a?a:b.options.controlsTimeoutDefault,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)}},{key:"killControlsTimer",value:function(){var a=this;null!==a.controlsTimer&&(clearTimeout(a.controlsTimer),delete a.controlsTimer,a.controlsTimer=null)}},{key:"disableControls",value:function(){var a=this;a.killControlsTimer(),a.controlsEnabled=!0,a.hideControls(!1,!0)}},{key:"enableControls",value:function(){var a=this;a.controlsEnabled=!0,a.showControls(!1)}},{key:"_meReady",value:function(a,b){var c=this,d=b.getAttribute("autoplay"),e=!(void 0===d||null===d||"false"===d),f=null!==a.rendererName&&null!==a.rendererName.match(/(native|html5)/);if(c.controls&&c.enableControls(),c.container.querySelector("."+c.options.classPrefix+"overlay-play")&&(c.container.querySelector("."+c.options.classPrefix+"overlay-play").style.display=""),!c.created){if(c.created=!0,c.media=a,c.domNode=b,!(s.IS_ANDROID&&c.options.AndroidUseNativeControls||s.IS_IPAD&&c.options.iPadUseNativeControls||s.IS_IPHONE&&c.options.iPhoneUseNativeControls)){var h=function(){if(!c.isVideo&&!c.options.features.length)return e&&f&&c.play(),c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)),{v:void 0};c.buildposter(c,c.controls,c.layers,c.media),c.buildkeyboard(c,c.controls,c.layers,c.media),c.buildoverlays(c,c.controls,c.layers,c.media),c.findTracks(),c.featurePosition={};for(var a=0,b=c.options.features.length;b>a;a++){var d=c.options.features[a];if(c["build"+d])try{c["build"+d](c,c.controls,c.layers,c.media)}catch(g){console.error("error building "+d,g)}}var h=t.createEvent("controlsready",c.container);c.container.dispatchEvent(h),c.setPlayerSize(c.width,c.height),c.setControlsSize(),c.isVideo&&(c.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");c.media.paused&&b?c.pause():c.media.paused?c.play():c.pause(),a.setAttribute("aria-pressed",!b)}},c.createIframeLayer(),c.media.addEventListener("click",c.clickToPlayPauseCallback),!s.IS_ANDROID&&!s.IS_IOS||c.options.alwaysShowControls?(c.container.addEventListener("mouseenter",function(){c.controlsEnabled&&(c.options.alwaysShowControls||(c.killControlsTimer("enter"),c.showControls(),c.startControlsTimer(c.options.controlsTimeoutMouseEnter)))}),c.container.addEventListener("mousemove",function(){c.controlsEnabled&&(c.controlsAreVisible||c.showControls(),c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseEnter))}),c.container.addEventListener("mouseleave",function(){c.controlsEnabled&&(c.media.paused||c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseLeave))})):c.node.addEventListener("touchstart",function(){c.controlsAreVisible?c.hideControls(!1):c.controlsEnabled&&c.showControls(!1)}),c.options.hideVideoControlsOnLoad&&c.hideControls(!1),e&&!c.options.alwaysShowControls&&c.hideControls(),c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(a){c.options.videoHeight<=0&&!c.domNode.getAttribute("height")&&null!==a.target&&!isNaN(a.target.videoHeight)&&(c.setPlayerSize(a.target.videoWidth,a.target.videoHeight),c.setControlsSize(),c.media.setSize(a.target.videoWidth,a.target.videoHeight))})),c.media.addEventListener("play",function(){c.hasFocus=!0;for(var a in n["default"].players)if(n["default"].players.hasOwnProperty(a)){var b=n["default"].players[a];b.id===c.id||!c.options.pauseOtherPlayers||b.paused||b.ended||(b.pause(),b.hasFocus=!1)}}),c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0),setTimeout(function(){c.container.querySelector("."+c.options.classPrefix+"overlay-loading").parentNode.style.display="none"},20)}catch(a){}"function"==typeof c.media.stop?c.media.stop():c.media.pause(),c.setProgressRail&&c.setProgressRail(),c.setCurrentRail&&c.setCurrentRail(),c.options.loop?c.play():!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()}),c.media.addEventListener("loadedmetadata",function(){u.calculateTimeFormat(c.duration,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.isFullScreen||(c.setPlayerSize(c.width,c.height),c.setControlsSize())});var i=null;c.media.addEventListener("timeupdate",function(){i!==c.media.duration&&(i=c.media.duration,u.calculateTimeFormat(i,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.setControlsSize())}),c.container.addEventListener("focusout",function(a){setTimeout(function(){a.relatedTarget&&c.keyboardAction&&!a.relatedTarget.closest(".mejs-container")&&(c.keyboardAction=!1,c.isVideo&&!c.options.alwaysShowControls&&c.hideControls(!0))},0)}),setTimeout(function(){c.setPlayerSize(c.width,c.height),c.setControlsSize()},0),c.globalBind("resize",function(){c.isFullScreen||s.HAS_TRUE_NATIVE_FULLSCREEN&&l["default"].webkitIsFullScreen||c.setPlayerSize(c.width,c.height),c.setControlsSize()}),c.globalBind("click",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.addClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.addClass(a.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")}),c.globalBind("keydown",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.removeClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.removeClass(h.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")})}();if("object"===("undefined"==typeof h?"undefined":g(h)))return h.v}e&&f&&c.play(),c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c))}}},{key:"_handleError",value:function(a){var b=this;b.controls&&b.disableControls();var c=b.layers.querySelector("."+b.options.classPrefix+"overlay-play");c&&(c.style.display="none"),b.options.error&&b.options.error(a)}},{key:"setPlayerSize",value:function(a,b){var c=this;if(!c.options.setDimensions)return!1;if("undefined"!=typeof a&&(c.width=a),"undefined"!=typeof b&&(c.height=b),"undefined"!=typeof FB&&c.isVideo){FB.Event.subscribe("xfbml.ready",function(){var a=c.media.firstChild;return c.width=parseFloat(a.offsetWidth),c.height=parseFloat(a.offsetHeight),c.setDimensions(c.width,c.height),!1});var d=c.media.firstChild;d.length&&(c.width=d.offsetWidth,c.height=d.offsetHeight)}switch(c.options.stretching){case"fill":c.isVideo?c.setFillMode():c.setDimensions(c.width,c.height);break;case"responsive":c.setResponsiveMode();break;case"none":c.setDimensions(c.width,c.height);break;default:c.hasFluidMode()===!0?c.setResponsiveMode():c.setDimensions(c.width,c.height)}}},{key:"hasFluidMode",value:function(){var a=this;return a.height.toString().includes("%")||a.node.style.maxWidth&&"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width||a.node.currentStyle&&"100%"===a.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var a=this,b=function(){for(var b=void 0,c=a.container;c;){if(b=c.parentElement,b&&x.visible(b))return b;c=b}return null}(),c=getComputedStyle(b,null),d=function(){return a.isVideo?a.media.videoWidth&&a.media.videoWidth>0?a.media.videoWidth:a.node.getAttribute("width")?a.node.getAttribute("width"):a.options.defaultVideoWidth:a.options.defaultAudioWidth}(),e=function(){return a.isVideo?a.media.videoHeight&&a.media.videoHeight>0?a.media.videoHeight:a.node.getAttribute("height")?a.node.getAttribute("height"):a.options.defaultVideoHeight:a.options.defaultAudioHeight}(),f=function(){var b=1;return a.isVideo?(b=a.media.videoWidth&&a.media.videoWidth>0&&a.media.videoHeight&&a.media.videoHeight>0?a.height>=a.width?a.media.videoWidth/a.media.videoHeight:a.media.videoHeight/a.media.videoWidth:a.initialAspectRatio,(isNaN(b)||.01>b||b>100)&&(b=1),b):b}(),g=parseFloat(c.height),h=void 0,i=parseFloat(c.width);if(h=a.isVideo?"100%"===a.height?parseInt(i*e/d,10):a.height>=a.width?parseInt(i/f,10):parseInt(i*f,10):e,isNaN(h)&&(h=g),a.container.parentNode.length>0&&"body"===a.container.parentNode.tagName.toLowerCase()&&(i=j["default"].innerWidth||l["default"].documentElement.clientWidth||l["default"].body.clientWidth,h=j["default"].innerHeight||l["default"].documentElement.clientHeight||l["default"].body.clientHeight),h&&i){a.container.style.width=i+"px",a.container.style.height=h+"px",a.node.style.width="100%",a.node.style.height="100%",a.isVideo&&a.media.setSize&&a.media.setSize(i,h);for(var k=a.layers.childNodes,m=0,n=k.length;n>m;m++)k[m].style.width="100%",k[m].style.height="100%"}}},{key:"setFillMode",value:function(){var a=this,b=a.outerContainer,c=getComputedStyle(b);"none"!==a.node.style.height&&a.node.style.height!==a.height&&(a.node.style.height=""),"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width&&(a.node.style.maxWidth=""),"none"!==a.node.style.maxHeight&&a.node.style.maxHeight!==a.height&&(a.node.style.maxHeight=""),a.node.currentStyle&&("100%"===a.node.currentStyle.height&&(a.node.currentStyle.height=""),"100%"===a.node.currentStyle.maxWidth&&(a.node.currentStyle.maxWidth=""),"100%"===a.node.currentStyle.maxHeight&&(a.node.currentStyle.maxHeight="")),parseFloat(c.width)||(b.style.width=a.media.offsetWidth+"px"),parseFloat(c.height)||(b.style.height=a.media.offsetHeight+"px"),c=getComputedStyle(b);var d=parseFloat(c.width),e=parseFloat(c.height);a.setDimensions("100%","100%");var f=a.container.querySelector(a.options.classPrefix+"poster img");f&&(f.style.display="");for(var g=a.container.querySelectorAll("object, embed, iframe, video"),h=a.height,i=a.width,j=d,k=h*d/i,l=i*e/h,m=e,n=l>d==!1,o=n?Math.floor(j):Math.floor(l),p=n?Math.floor(k):Math.floor(m),q=n?d+"px":o+"px",r=n?p+"px":e+"px",s=0,t=g.length;t>s;s++)g[s].style.height=r,g[s].style.width=q,a.media.setSize&&a.media.setSize(q,r),g[s].style.marginLeft=Math.floor((d-o)/2)+"px",g[s].style.marginTop=0}},{key:"setDimensions",value:function(a,b){var c=this;a=t.isString(a)&&a.includes("%")?a:parseFloat(a)+"px",b=t.isString(b)&&b.includes("%")?b:parseFloat(b)+"px",c.container.style.width=a,c.container.style.height=b;for(var d=c.layers.childNodes,e=0,f=d.length;f>e;e++)d[e].style.width=a,d[e].style.height=b}},{key:"setControlsSize",value:function(){var a=this;if(x.visible(a.container)&&a.rail&&x.visible(a.rail)){for(var b=getComputedStyle(a.rail),c=getComputedStyle(a.total),d=parseFloat(b.marginLeft)+parseFloat(b.marginRight),e=parseFloat(c.marginLeft)+parseFloat(c.marginRight)||0,f=0,g=x.siblings(a.rail,function(b){return b!==a.rail}),h=g.length,i=0;h>i;i++)f+=g[i].offsetWidth;f+=e+(0===e?2*d:d)+1;var j=parseFloat(a.controls.offsetWidth);a.rail.style.width=(f>j?0:j-f)+"px";var k=t.createEvent("controlsresize",a.container);a.container.dispatchEvent(k)}}},{key:"addControlElement",value:function(a,b){var c=this;if(void 0!==c.featurePosition[b]){var d=c.controls.childNodes[c.featurePosition[b]-1];d.parentNode.insertBefore(a,d.nextSibling)}else{c.controls.appendChild(a);for(var e=c.controls.childNodes,f=0,g=e.length;g>f;f++)if(a==e[f]){c.featurePosition[b]=f;break}}}},{key:"createIframeLayer",value:function(){var a=this;if(a.isVideo&&null!==a.media.rendererName&&null!==a.media.rendererName.match(/iframe/i)&&!l["default"].getElementById(a.media.id+"-iframe-overlay")){var b=l["default"].createElement("div"),c=l["default"].getElementById(a.media.id+"_"+a.media.rendererName);b.id=a.media.id+"-iframe-overlay",b.className=a.options.classPrefix+"iframe-overlay",b.addEventListener("click",function(b){a.options.clickToPlayPause&&(a.media.paused?a.media.play():a.media.pause(),b.preventDefault(),b.stopPropagation())}),c.parentNode.insertBefore(b,c)}}},{key:"resetSize",value:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},{key:"setPoster",value:function(a){var b=this,c=b.container.querySelector("."+b.options.classPrefix+"poster"),d=c.querySelector("img");d||(d=l["default"].createElement("img"),d.className=b.options.classPrefix+"poster-img",d.width="100%",d.height="100%",c.appendChild(d)),d.setAttribute("src",a),c.style.backgroundImage='url("'+a+'")'}},{key:"changeSkin",value:function(a){var b=this;b.container.className=b.options.classPrefix+"container "+a,b.setPlayerSize(b.width,b.height),b.setControlsSize()}},{key:"globalBind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.addEventListener(c,b,!1),c},"");if(a.w)for(var h=a.w.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].addEventListener(c,b,!1),c},"")}},{key:"globalUnbind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.removeEventListener(c,b,!1),c},"");if(a.w)for(var h=a.d.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].removeEventListener(c,b,!1),c},"")}},{key:"buildposter",value:function(a,b,c,d){var e=this,f=l["default"].createElement("div");f.className=e.options.classPrefix+"poster "+e.options.classPrefix+"layer",c.appendChild(f);var g=a.media.getAttribute("poster");""!==a.options.poster&&(g=a.options.poster),g?e.setPoster(g):f.style.display="none",d.addEventListener("play",function(){f.style.display="none"}),d.addEventListener("playing",function(){f.style.display="none"}),a.options.showPosterWhenEnded&&a.options.autoRewind&&d.addEventListener("ended",function(){f.style.display=""}),d.addEventListener("error",function(){f.style.display="none"}),a.options.showPosterWhenPaused&&d.addEventListener("pause",function(){d.ended||(f.style.display="")})}},{key:"buildoverlays",value:function(a,b,c,d){if(a.isVideo){var e=this,f=l["default"].createElement("div"),g=l["default"].createElement("div"),h=l["default"].createElement("div"),i=b.querySelector("."+e.options.classPrefix+"time-buffering");f.style.display="none",f.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",f.innerHTML='<div class="'+e.options.classPrefix+'overlay-loading">'+('<span class="'+e.options.classPrefix+'overlay-loading-bg-img"></span>')+"</div>",c.appendChild(f),g.style.display="none",g.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",g.innerHTML='<div class="'+e.options.classPrefix+'overlay-error"></div>',c.appendChild(g),h.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer "+e.options.classPrefix+"overlay-play",h.innerHTML='<div class="'+e.options.classPrefix+'overlay-button" role="button" tabindex="0"'+('aria-label="'+r["default"].t("mejs.play")+'" aria-pressed="false"></div>'),h.addEventListener("click",function(){if(e.options.clickToPlayPause){var a=e.container.querySelector("."+e.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");d.paused?d.play():d.pause(),a.setAttribute("aria-pressed",!!b)}}),c.appendChild(h),null!==e.media.rendererName&&(e.media.rendererName.match(/(youtube|facebook)/)&&!a.media.originalNode.getAttribute("poster")&&!a.options.poster||s.IS_STOCK_ANDROID)&&(h.style.display="none"),d.addEventListener("play",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("playing",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("seeking",function(){h.style.display="none",f.style.display="",i&&(i.style.display="")}),d.addEventListener("seeked",function(){h.style.display="",f.style.display="none",i&&(i.style.display="")}),d.addEventListener("pause",function(){f.style.display="none",s.IS_STOCK_ANDROID||(h.style.display=""),i&&(i.style.display="none")}),d.addEventListener("waiting",function(){f.style.display="",i&&(i.style.display="")}),d.addEventListener("loadeddata",function(){f.style.display="",i&&(i.style.display=""),s.IS_ANDROID&&(d.canplayTimeout=setTimeout(function(){if(l["default"].createEvent){var a=l["default"].createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),d.dispatchEvent(a)}},300))}),d.addEventListener("canplay",function(){f.style.display="none",i&&(i.style.display="none"),clearTimeout(d.canplayTimeout)}),d.addEventListener("error",function(a){e._handleError(a),f.style.display="none",h.style.display="none",i&&(i.style.display="none"),g.style.display="block",g.querySelector("."+e.options.classPrefix+"overlay-error").innerHTML=a.message}),d.addEventListener("keydown",function(b){e.onkeydown(a,d,b)})}}},{key:"buildkeyboard",value:function(a,b,c,d){var e=this;e.container.addEventListener("keydown",function(){e.keyboardAction=!0}),e.globalBind("keydown",function(b){var c=l["default"].activeElement.closest("."+e.options.classPrefix+"container"),f=e.media.closest("."+e.options.classPrefix+"container");return e.hasFocus=!(!c||!f||c.id!==f.id),e.onkeydown(a,d,b)}),e.globalBind("click",function(a){e.hasFocus=!!a.target.closest("."+e.options.classPrefix+"container")})}},{key:"onkeydown",value:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)c.keyCode===f.keys[g]&&(f.action(a,b,c.keyCode,c),c.preventDefault(),c.stopPropagation());return!0}},{key:"play",value:function(){var a=this;a.media.getCurrentTime()<=0&&a.load(),a.media.play()}},{key:"pause",value:function(){try{this.media.pause()}catch(a){}}},{key:"load",value:function(){var a=this;a.isLoaded||a.media.load(),a.isLoaded=!0}},{key:"setMuted",value:function(a){this.media.setMuted(a)}},{key:"setCurrentTime",value:function(a){this.media.setCurrentTime(a)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(a){this.media.setVolume(a)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(a){var b=this,c=l["default"].getElementById(b.media.id+"-iframe-overlay");c&&c.remove(),b.media.setSrc(a),b.createIframeLayer()}},{key:"remove",value:function(){var a=this,b=a.media.rendererName;a.media.paused||a.media.pause();
+var c=a.media.originalNode.getAttribute("src");a.media.setSrc("");for(var d in a.options.features){var e=a.options.features[d];if(a["clean"+e])try{a["clean"+e](a)}catch(f){console.error("error cleaning "+e,f)}}var h=a.node.getAttribute("width"),i=a.node.getAttribute("height");if(h?null===h.match("%")&&(h+="px"):h="auto",i?null===i.match("%")&&(i+="px"):i="auto",a.node.style.width=h,a.node.style.height=i,a.isDynamic)a.container.parentNode.insertBefore(a.node,a.container);else{if(a.node.setAttribute("controls",!0),a.node.setAttribute("id",a.node.getAttribute("id").replace("_"+b,"").replace("_from_mejs","")),delete a.node.autoplay,a.media.canPlayType(v.getTypeFromFile(c))&&a.node.setAttribute("src",c),null!==b.match(/iframe/i)){var j=l["default"].getElementById(a.media.id+"-iframe-overlay");j.remove()}var k=a.node.cloneNode(!0);a.container.parentNode.insertBefore(k,a.container),a.node.remove(),delete a.node}if("function"==typeof a.media.destroy&&a.media.destroy(),delete n["default"].players[a.id],"object"===g(a.container)){var m=a.container.parentNode.querySelector("."+a.options.classPrefix+"offscreen");m.remove(),a.container.remove()}a.globalUnbind(),delete a.media.player}}]),a}();j["default"].MediaElementPlayer=z,c["default"]=z,function(a){"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return b===!1?this.each(function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}):this.each(function(){a(this).data("mediaelementplayer",new z(this,b))}),this},a(l["default"]).ready(function(){a("."+y.classPrefix+"player").mediaelementplayer()}))}(n["default"].$)},{2:2,23:23,24:24,25:25,26:26,28:28,3:3,4:4,5:5,6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(26),n=a(23),o={isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){"undefined"!=typeof dashjs?o.createInstance(a):o.isScriptLoaded||!function(){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isScriptLoaded=!0}()},mediaReady:function(){for(o.isLoaded=!0,o.isScriptLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=dashjs.MediaPlayer().create();f["default"]["__ready__"+a.id](b)}},p={name:"native_dash",options:{prefix:"native_dash",dash:{path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(a){return n.HAS_MSE&&["application/dash+xml"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),i=d.autoplay,m=null,n=null;m=d.cloneNode(!0),b=Object.assign(b,a.options);for(var p=j["default"].html5media.properties,q=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);m["get"+b]=function(){return null!==n?m[a]:null},m["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==n&&("src"===a&&(n.attachSource(b),i&&m.play()),m[a]=b)}},r=0,s=p.length;s>r;r++)q(p[r]);if(f["default"]["__ready__"+e]=function(c){a.dashPlayer=n=c,n.getDebug().setLogToBrowserConsole(b.dash.debug),n.setAutoPlay(g&&"auto"===g||i),n.setScheduleWhilePaused(g&&"auto"===g||i);for(var d=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),e=dashjs.MediaPlayer.events,f=function(b){"loadedmetadata"===b&&n.initialize(m,m.src,!1),m.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},k=0,o=d.length;o>k;k++)f(d[k]);var p=function(b){var c=l.createEvent(b.type,m);c.data=b,a.dispatchEvent(c),"error"===b.type.toLowerCase()&&console.error(b)};for(var q in e)e.hasOwnProperty(q)&&n.on(e[q],p)},c&&c.length>0)for(var t=0,u=c.length;u>t;t++)if(k.renderer.renderers[b.prefix].canPlayType(c[t].type)){m.setAttribute("src",c[t].src);break}m.setAttribute("id",e),d.parentNode.insertBefore(m,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.dash,id:e}),m.setSize=function(a,b){return m.style.width=a+"px",m.style.height=b+"px",m},m.hide=function(){return m.pause(),m.style.display="none",m},m.show=function(){return m.style.display="",m};var v=l.createEvent("rendererready",m);return a.dispatchEvent(v),m}};m.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".mpd")?"application/dash+xml":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(25),p=a(23),q=a(26),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var f=k["default"].html5media.properties,h=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null===d.flashApi)return null;if(void 0===d.flashApi["get_"+a])return null;var b=function(){var b=d.flashApi["get_"+a]();return"buffered"===a?{v:{start:function(){return 0},end:function(){return b},length:1}}:{v:b}}();return"object"===("undefined"==typeof b?"undefined":e(b))?b.v:void 0},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},j=0,l=f.length;l>j;j++)h(f[j]);var r=k["default"].html5media.methods,s=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};r.push("stop");for(var t=0,u=r.length;u>t;t++)s(r[t]);for(var v=["rendererready","loadeddata","loadedmetadata","canplay","error"],w=0,x=v.length;x>w;w++){var y=o.createEvent(v[w],d);a.dispatchEvent(y)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var z=a.originalNode.autoplay,A=["uid="+d.id,"autoplay="+z,"allowScriptAccess="+d.options.shimScriptAccess],B=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),C=B?a.originalNode.height:1,D=B?a.originalNode.width:1;a.originalNode.getAttribute("src")&&A.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(A.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),A.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var E=[];if(p.IS_IE){var F=i["default"].createElement("div");d.flashWrapper.appendChild(F),E=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+D+'"','height="'+C+'"'],B||E.push('style="clip: rect(0 0 0 0); position: absolute;"'),F.outerHTML="<object "+E.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+A.join("&amp;")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else E=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+A.join("&")+'"','width="'+D+'"','height="'+C+'"'],B||E.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+E.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){if(B){d.flashNode.style.position="absolute",d.flashNode.style.width="1px",d.flashNode.style.height="1px";try{d.flashNode.style.clip="rect(0 0 0 0);"}catch(a){}}},d.show=function(){if(B){d.flashNode.style.position="",d.flashNode.style.width="",d.flashNode.style.height="";try{d.flashNode.style.clip=""}catch(a){}}},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var G=0,H=c.length;H>G;G++)if(n.renderer.renderers[b.prefix].canPlayType(c[G].type)){d.setSrc(c[G].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{2:2,23:23,25:25,26:26,3:3,4:4,6:6,7:7}],19:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n=a(26),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){"undefined"!=typeof flvjs?o.createInstance(a):o.isMediaStarted||!function(){a.options.path="string"==typeof a.options.path?a.options.path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.1.0/flv.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}()},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=flvjs.createPlayer(a.options);f["default"]["__ready__"+a.id](b)}},p={name:"native_flv",options:{prefix:"native_flv",flv:{path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.1.0/flv.min.js",cors:!0}},canPlayType:function(a){return m.HAS_MSE&&["video/x-flv","video/flv"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=null,i=null;g=d.cloneNode(!0),b=Object.assign(b,a.options);for(var m=j["default"].html5media.properties,n=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);g["get"+b]=function(){return null!==i?g[a]:null},g["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==i&&(g[a]=b,"src"===a&&(i.unload(),i.detachMediaElement(),i.attachMediaElement(g),i.load()))}},p=0,q=m.length;q>p;p++)n(m[p]);if(f["default"]["__ready__"+e]=function(b){a.flvPlayer=i=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=function(b){"loadedmetadata"===b&&(i.unload(),i.detachMediaElement(),i.attachMediaElement(g),i.load()),g.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},e=0,f=c.length;f>e;e++)d(c[e])},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){g.setAttribute("src",c[r].src);break}g.setAttribute("id",e),d.parentNode.insertBefore(g,d),d.autoplay=!1,d.style.display="none",b.flv.type="flv",b.flv.url=g.getAttribute("src"),o.prepareSettings({options:b.flv,id:e}),g.setSize=function(a,b){return g.style.width=a+"px",g.style.height=b+"px",g},g.hide=function(){return null!==i&&i.pause(),g.style.display="none",g},g.show=function(){return g.style.display="",g},g.destroy=function(){null!==i&&i.destroy()};var t=l.createEvent("rendererready",g);return a.dispatchEvent(t),g}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".flv")?"video/flv":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],20:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n=a(26),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){"undefined"!=typeof Hls?o.createInstance(a):o.isMediaStarted||!function(){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}()},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=new Hls(a.options);return f["default"]["__ready__"+a.id](b),b}},p={name:"native_hls",options:{prefix:"native_hls",hls:{path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(a){return m.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),i=d.autoplay,m=null,n=null;n=d.cloneNode(!0),b=Object.assign(b,a.options),b.hls.autoStartLoad=g&&"none"!==g||i;for(var p=j["default"].html5media.properties,q=function(a){var c=""+a.substring(0,1).toUpperCase()+a.substring(1);n["get"+c]=function(){return null!==m?n[a]:null},n["set"+c]=function(c){j["default"].html5media.readOnlyProperties.includes(a)||null!==m&&(n[a]=c,"src"===a&&(m.destroy(),m=o.createInstance({options:b.hls,id:e}),m.loadSource(c),m.attachMedia(n)))}},r=0,s=p.length;s>r;r++)q(p[r]);if(f["default"]["__ready__"+e]=function(b){a.hlsPlayer=m=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=Hls.Events,e=function(b){if("loadedmetadata"===b){m.detachMedia();var c=n.src;m.loadSource(c),m.attachMedia(n)}n.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},f=0,g=c.length;g>f;f++)e(c[f]);var i=void 0,k=void 0,o=function(b,c){var d=l.createEvent(b,n);if(d.data=c,a.dispatchEvent(d),"hlsError"===b&&(console.warn(b,c),c.fatal))switch(c.type){case"mediaError":var e=(new Date).getTime();!i||e-i>3e3?(i=(new Date).getTime(),m.recoverMediaError()):!k||e-k>3e3?(k=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),m.swapAudioCodec(),m.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:m.destroy()}};for(var p in d)d.hasOwnProperty(p)&&m.on(d[p],o)},c&&c.length>0)for(var t=0,u=c.length;u>t;t++)if(k.renderer.renderers[b.prefix].canPlayType(c[t].type)){n.setAttribute("src",c[t].src);break}"auto"===g||i||(n.addEventListener("play",function(){null!==m&&m.startLoad()}),n.addEventListener("pause",function(){null!==m&&m.stopLoad()})),n.setAttribute("id",e),d.parentNode.insertBefore(n,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.hls,id:e}),n.setSize=function(a,b){return n.style.width=a+"px",n.style.height=b+"px",n},n.hide=function(){return n.pause(),n.style.display="none",n},n.show=function(){return n.style.display="",n},n.destroy=function(){null!==m&&m.destroy()},n.stop=function(){null!==m&&m.stopLoad()};var v=l.createEvent("rendererready",n);return a.dispatchEvent(v),n}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".m3u8")?"application/x-mpegURL":null}),k.renderer.add(p)},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],21:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(25),m=a(23),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{2:2,23:23,25:25,3:3,6:6,7:7}],22:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(7),m=a(25),n=a(26),o={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){o.isLoaded="undefined"!=typeof YT&&YT.loaded,o.isLoaded?o.createIframe(a):(o.loadIframeApi(),o.iframeQueue.push(a))},loadIframeApi:function(){if(!o.isIframeStarted){var a=i["default"].createElement("script");a.src="//www.youtube.com/player_api";var b=i["default"].getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),o.isIframeStarted=!0}},iFrameReady:function(){for(o.isLoaded=!0,o.isIframeLoaded=!0;o.iframeQueue.length>0;){var a=o.iframeQueue.pop();o.createIframe(a)}},createIframe:function(a){return new YT.Player(a.containerId,a)},getYouTubeId:function(a){var b="";return a.indexOf("?")>0?(b=o.getYouTubeIdFromParam(a),""===b&&(b=o.getYouTubeIdFromUrl(a))):b=o.getYouTubeIdFromUrl(a),b},getYouTubeIdFromParam:function(a){if(void 0===a||null===a||!a.trim().length)return null;for(var b=a.split("?"),c=b[1].split("&"),d="",e=0,f=c.length;f>e;e++){var g=c[e].split("=");if("v"===g[0]){d=g[1];break}}return d},getYouTubeIdFromUrl:function(a){if(void 0===a||null===a||!a.trim().length)return null;var b=a.split("?");return a=b[0],a.substring(a.lastIndexOf("/")+1)},getYouTubeNoCookieUrl:function(a){if(void 0===a||null===a||!a.trim().length||!a.includes("//www.youtube"))return a;var b=a.split("/");return b[2]=b[2].replace(".com","-nocookie.com"),b.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(a){return["video/youtube","video/x-youtube"].includes(a)},create:function(a,b,c){var d={},f=[],h=4,j=null,l=!0,n=!1,p=null,q=1;d.options=b,d.id=a.id+"_"+b.prefix,d.mediaElement=a;for(var r=k["default"].html5media.properties,s=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);d["get"+c]=function(){if(null!==j){var a=null,c=function(){switch(b){case"currentTime":return{v:j.getCurrentTime()};case"duration":return{v:j.getDuration()};case"volume":return q=j.getVolume()/100,{v:q};case"paused":return{v:l};case"ended":return{v:n};case"muted":return{v:j.isMuted()};case"buffered":var a=j.getVideoLoadedFraction(),c=j.getDuration();return{v:{start:function(){return 0},end:function(){return a*c},length:1}};case"src":return{v:j.getVideoUrl()};case"readyState":return{v:h}}}();return"object"===("undefined"==typeof c?"undefined":e(c))?c.v:a}return null},d["set"+c]=function(c){if(null!==j)switch(b){case"src":var e="string"==typeof c?c:c[0].src,g=o.getYouTubeId(e);a.originalNode.autoplay?j.loadVideoById(g):j.cueVideoById(g);break;case"currentTime":j.seekTo(c);break;case"muted":c?j.mute():j.unMute(),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"volume":q=c,j.setVolume(100*c),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"readyState":var h=m.createEvent("canplay",d);a.dispatchEvent(h)}else f.push({type:"set",propName:b,value:c})}},t=0,u=r.length;u>t;t++)s(r[t]);for(var v=k["default"].html5media.methods,w=function(a){d[a]=function(){if(null!==j)switch(a){case"play":return l=!1,j.playVideo();case"pause":return l=!0,j.pauseVideo();case"load":return null}else f.push({type:"call",methodName:a})}},x=0,y=v.length;y>x;x++)w(v[x]);var z=i["default"].createElement("div");z.id=d.id,d.options.youtube.nocookie&&a.originalNode.setAttribute("src",o.getYouTubeNoCookieUrl(c[0].src)),a.originalNode.parentNode.insertBefore(z,a.originalNode),a.originalNode.style.display="none";var A="audio"===a.originalNode.tagName.toLowerCase(),B=A?"0":a.originalNode.height,C=A?"0":a.originalNode.width,D=o.getYouTubeId(c[0].src),E={id:d.id,containerId:z.id,videoId:D,height:B,width:C,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},d.options.youtube),origin:g["default"].location.host,events:{onReady:function(b){if(a.youTubeApi=j=b.target,a.youTubeState={paused:!0,ended:!1},f.length)for(var c=0,e=f.length;e>c;c++){var g=f[c];if("set"===g.type){var h=g.propName,i=""+h.substring(0,1).toUpperCase()+h.substring(1);d["set"+i](g.value)}else"call"===g.type&&d[g.methodName]()}p=j.getIframe();for(var k=["mouseover","mouseout"],l=function(b){var c=m.createEvent(b.type,d);a.dispatchEvent(c)},n=0,o=k.length;o>n;n++)p.addEventListener(k[n],l,!1);for(var q=["rendererready","loadeddata","loadedmetadata","canplay"],r=0,s=q.length;s>r;r++){var t=m.createEvent(q[r],d);a.dispatchEvent(t)}},onStateChange:function(b){var c=[];switch(b.data){case-1:c=["loadedmetadata"],l=!0,n=!1;break;case 0:c=["ended"],l=!1,n=!0,d.stopInterval();break;case 1:c=["play","playing"],l=!1,n=!1,d.startInterval();break;case 2:c=["pause"],l=!0,n=!1,d.stopInterval();break;case 3:c=["progress"],n=!1;break;case 5:c=["loadeddata","loadedmetadata","canplay"],l=!0,n=!1}for(var e=0,f=c.length;f>e;e++){var g=m.createEvent(c[e],d);a.dispatchEvent(g)}},onError:function(b){var c=m.createEvent("error",d);c.data=b.data,a.dispatchEvent(c)}}};return A&&(E.playerVars.playsinline=1),o.enqueueIframe(E),d.onEvent=function(b,c,d){null!==d&&void 0!==d&&(a.youTubeState=d)},d.setSize=function(a,b){null!==j&&j.setSize(a,b)},d.hide=function(){d.stopInterval(),d.pause(),p&&(p.style.display="none")},d.show=function(){p&&(p.style.display="")},d.destroy=function(){j.destroy()},d.interval=null,d.startInterval=function(){d.interval=setInterval(function(){var b=m.createEvent("timeupdate",d);a.dispatchEvent(b)},250)},d.stopInterval=function(){d.interval&&clearInterval(d.interval)},d}};g["default"].postMessage&&e(g["default"].addEventListener)&&(g["default"].onYouTubePlayerAPIReady=function(){o.iFrameReady()},n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.youtube")||a.includes("//youtu.be")?"video/x-youtube":null}),l.renderer.add(p))},{2:2,25:25,26:26,3:3,6:6,7:7}],23:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S,j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],24:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){var b=a.getBoundingClientRect(),c=m["default"].pageXOffset||o["default"].documentElement.scrollLeft,d=m["default"].pageYOffset||o["default"].documentElement.scrollTop;return{top:b.top+d,left:b.left+c}}function f(a,b){u(a,b)?w(a,b):v(a,b)}function g(a){
+var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=1);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d;a.style.opacity=parseFloat(1-g/b,2),g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function h(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=0);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d;a.style.opacity=parseFloat(g/b,2),g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function i(a,b){var c=[];a=a.parentNode.firstChild;do(!b||b(a))&&c.push(a);while(a=a.nextSibling);return c}function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(a,b,c,d){var e=m["default"].XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),f="application/x-www-form-urlencoded; charset=UTF-8",g=!1,h="*/".concat("*");switch(b){case"text":f="text/plain";break;case"json":f="application/json, text/javascript";break;case"html":f="text/html";break;case"xml":f="application/xml, text/xml"}f.includes("application/x-www-form-urlencoded")||(h=f+", */*; q=0.01"),e&&(e.open("GET",a,!0),e.setRequestHeader("Accept",h),e.onreadystatechange=function(){if(!g&&4===e.readyState)if(200===e.status){g=!0;var a=void 0;switch(b){case"json":a=JSON.parse(e.responseText);break;case"xml":a=e.responseXML;break;default:a=e.responseText}c(a)}else"function"==typeof d&&d(e.status)},e.send())}Object.defineProperty(c,"__esModule",{value:!0}),c.removeClass=c.addClass=c.hasClass=void 0,c.offset=e,c.toggleClass=f,c.fadeOut=g,c.fadeIn=h,c.siblings=i,c.visible=j,c.ajax=k;var l=a(3),m=d(l),n=a(2),o=d(n),p=a(6),q=d(p),r=void 0,s=void 0,t=void 0;"classList"in o["default"].documentElement?(r=function(a,b){return void 0!==a.classList&&a.classList.contains(b)},s=function(a,b){return a.classList.add(b)},t=function(a,b){return a.classList.remove(b)}):(r=function(a,b){return new RegExp("\\b"+b+"\\b").test(a.className)},s=function(a,b){u(a,b)||(a.className+=" "+b)},t=function(a,b){a.className=a.className.replace(new RegExp("\\b"+b+"\\b","g"),"")});var u=c.hasClass=r,v=c.addClass=s,w=c.removeClass=t;q["default"].Utils=q["default"].Utils||{},q["default"].Utils.offset=e,q["default"].Utils.hasClass=u,q["default"].Utils.addClass=v,q["default"].Utils.removeClass=w,q["default"].Utils.toggleClass=f,q["default"].Utils.fadeIn=h,q["default"].Utils.fadeOut=g,q["default"].Utils.siblings=i,q["default"].Utils.visible=j,q["default"].Utils.ajax=k},{2:2,3:3,6:6}],25:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1;if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],26:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(25),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{25:25,6:6}],27:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}()},{2:2}],28:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:25;return!(a%1===0)}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!1,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;a=!a||"number"!=typeof a||0>a?0:a;var g=Math.round(.066666*d),h=Math.round(d),i=24*Math.round(3600*d),j=Math.round(600*d),k=e(d)?";":":",l=void 0,m=void 0,n=void 0,o=void 0,p=Math.round(a*d);if(e(d)){0>p&&(p=i+p),p%=i;var q=Math.floor(p/j),r=p%j;p+=9*g*q,r>g&&(p+=g*Math.floor((r-g)/Math.round(60*h-g)));var s=Math.floor(p/h);l=Math.floor(Math.floor(s/60)/60),m=Math.floor(s/60)%60,n=c?s%60:(p/h%60).toFixed(f)}else l=Math.floor(a/3600)%24,m=Math.floor(a/60)%60,n=c?Math.floor(a%60):(a%60).toFixed(f);l=0>=l?0:l,m=0>=m?0:m,n=0>=n?0:n;var t=b||l>0?(10>l?"0"+l:l)+":":"";return t+=(10>m?"0"+m:m)+":",t+=""+(10>n?"0"+n:n),c&&(o=(p%h).toFixed(0),o=0>=o?0:o,t+=10>o?k+"0"+o:""+k+o),t}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof a)throw new TypeError("Time must be a string");if(a.indexOf(";")>0&&(a=a.replace(";",":")),!a.match(/\d{2}(\:\d{2}){0,3}/))throw new TypeError("Time code must have the format `00:00:00`");var c=a.split(":"),d=void 0,f=0,g=0,h=0,i=0,j=0,k=Math.round(.066666*b),l=Math.round(b),m=3600*l,n=60*l;switch(c.length){default:case 1:h=parseInt(c[0],10);break;case 2:g=parseInt(c[0],10),h=parseInt(c[1],10);break;case 3:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10);break;case 4:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10),i=parseInt(c[3],10)}return e(b)?(j=60*f+g,d=m*f+n*g+l*h+i-k*(j-Math.floor(j/10))):d=(m*f+n*g+b*h+i)/b,parseFloat(d.toFixed(3))}function h(a,b){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;a=!a||"number"!=typeof a||0>a?0:a;for(var d=Math.floor(a/3600)%24,e=Math.floor(a/60)%60,f=Math.floor(a%60),g=Math.floor((a%1*c).toFixed(3)),h=[[g,"f"],[f,"s"],[e,"m"],[d,"h"]],i=b.timeFormat,j=i[1]===i[0],k=j?2:1,l=i.length<k?i[k]:":",m=i[0],n=!1,o=0,p=h.length;p>o;o++)if(i.indexOf(h[o][1])>-1)n=!0;else if(n){for(var q=!1,r=o;p>r;r++)if(h[r][0]>0){q=!0;break}if(!q)break;j||(i=m+i),i=h[o][1]+l+i,j&&(i=h[o][1]+i),m=h[o][1]}b.currentTimeFormat=i}function i(a){if("string"!=typeof a)throw new TypeError("Argument must be a string value");a=a.replace(",",".");var b=a.indexOf(".")>-1?a.split(".")[1].length:0,c=0,d=1;a=a.split(":").reverse();for(var e=0,f=a.length;f>e;e++)d=1,e>0&&(d=Math.pow(60,e)),c+=Number(a[e])*d;return Number(c.toFixed(b))}Object.defineProperty(c,"__esModule",{value:!0}),c.isDropFrame=e,c.secondsToTimeCode=f,c.timeCodeToSeconds=g,c.calculateTimeFormat=h,c.convertSMPTEtoSeconds=i;var j=a(6),k=d(j);k["default"].Utils=k["default"].Utils||{},k["default"].Utils.secondsToTimeCode=f,k["default"].Utils.timeCodeToSeconds=g,k["default"].Utils.calculateTimeFormat=h,k["default"].Utils.convertSMPTEtoSeconds=i},{6:6}]},{},[27,5,4,14,21,18,17,19,20,22,15,16,8,9,10,11,12,13]);
\ No newline at end of file
diff --git a/lib/mejs/mediaelement.js b/lib/mejs/mediaelement.js
index 5d4ee742..d1c069cf 100644
--- a/lib/mejs/mediaelement.js
+++ b/lib/mejs/mediaelement.js
@@ -1,1961 +1,4301 @@
 /*!
-* MediaElement.js
-* HTML5 <video> and <audio> shim and player
-* http://mediaelementjs.com/
-*
-* Creates a JavaScript object that mimics HTML5 MediaElement API
-* for browsers that don't understand HTML5 or can't play the provided codec
-* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
-*
-* Copyright 2010-2014, John Dyer (http://j.hn)
-* License: MIT
-*
-*/
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
+ *
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
+ *
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
+ * License: MIT
+ *
+ */(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){
+
+},{}],2:[function(_dereq_,module,exports){
+(function (global){
+var topLevel = typeof global !== 'undefined' ? global :
+    typeof window !== 'undefined' ? window : {}
+var minDoc = _dereq_(1);
+
+if (typeof document !== 'undefined') {
+    module.exports = document;
+} else {
+    var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
+
+    if (!doccy) {
+        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
+    }
+
+    module.exports = doccy;
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"1":1}],3:[function(_dereq_,module,exports){
+(function (global){
+if (typeof window !== "undefined") {
+    module.exports = window;
+} else if (typeof global !== "undefined") {
+    module.exports = global;
+} else if (typeof self !== "undefined"){
+    module.exports = self;
+} else {
+    module.exports = {};
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],4:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+
+var _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; };
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _en = _dereq_(8);
+
+var _general = _dereq_(16);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Locale.
+ *
+ * This object manages translations with pluralization. Also deals with WordPress compatibility.
+ * @type {Object}
+ */
+var i18n = { lang: 'en', en: _en.EN };
+
+/**
+ * Language setter/getter
+ *
+ * @param {*} args  Can pass the language code and/or the translation strings as an Object
+ * @return {string}
+ */
+i18n.language = function () {
+	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+		args[_key] = arguments[_key];
+	}
+
+	if (args !== null && args !== undefined && args.length) {
+
+		if (typeof args[0] !== 'string') {
+			throw new TypeError('Language code must be a string value');
+		}
+
+		if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) {
+			throw new TypeError('Language code must have format `xx` or `xx-xx`');
+		}
+
+		i18n.lang = args[0];
+
+		// Check if language strings were added; otherwise, check the second argument or set to English as default
+		if (i18n[args[0]] === undefined) {
+			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
+			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
+		} else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
+			i18n[args[0]] = args[1];
+		}
+	}
+
+	return i18n.lang;
+};
+
+/**
+ * Translate a string in the language set up (or English by default)
+ *
+ * @param {string} message
+ * @param {number} pluralParam
+ * @return {string}
+ */
+i18n.t = function (message) {
+	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+
+
+	if (typeof message === 'string' && message.length) {
+
+		var str = void 0,
+		    pluralForm = void 0;
+
+		var language = i18n.language();
+
+		/**
+   * Modify string using algorithm to detect plural forms.
+   *
+   * @private
+   * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings
+   * @param {String|String[]} input   - String or array of strings to pick the plural form
+   * @param {Number} number           - Number to determine the proper plural form
+   * @param {Number} form             - Number of language family to apply plural form
+   * @return {String}
+   */
+		var _plural = function _plural(input, number, form) {
+
+			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
+				return input;
+			}
+
+			/**
+    *
+    * @return {Function[]}
+    * @private
+    */
+			var _pluralForms = function () {
+				return [
+				// 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará,
+				// Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay,
+				// Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof
+				function () {
+					return arguments.length <= 1 ? undefined : arguments[1];
+				},
+
+				// 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish,
+				// Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans,
+				// Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri,
+				// Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa,
+				// Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch,
+				// Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal,
+				// Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento,
+				// Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala,
+				// Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba
+				function () {
+					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
+				},
+
+				// 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino,
+				// Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon
+				function () {
+					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];
+				},
+
+				// 3: Latvian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 4: Scottish Gaelic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
+
+				// 5:  Romanian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 6: Lithuanian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return [3];
+					}
+				},
+
+				// 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 8:  Slovak, Czech
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 9: Polish
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 10: Slovenian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					}
+				},
+
+				// 11: Irish Gaelic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else {
+						return arguments.length <= 5 ? undefined : arguments[5];
+					}
+				},
+
+				// 12: Arabic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
+						return arguments.length <= 5 ? undefined : arguments[5];
+					} else {
+						return arguments.length <= 6 ? undefined : arguments[6];
+					}
+				},
+
+				// 13: Maltese
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
+
+				// 14: Macedonian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 15:  Icelandic
+				function () {
+					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];
+				},
+
+				// New additions
+
+				// 16:  Kashubian
+				// In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules
+				// Breton is listed as #16 but in the Localization Guide it belongs to the group 2
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
+
+				// 17:  Welsh
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
+
+				// 18:  Javanese
+				function () {
+					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
+				},
+
+				// 19:  Cornish
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
+
+				// 20:  Mandinka
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				}];
+			}();
+
+			// Perform plural form or return original text
+			return _pluralForms[form].apply(null, [number].concat(input));
+		};
+
+		// Fetch the localized version of the string
+		if (i18n[language] !== undefined) {
+			str = i18n[language][message];
+			if (pluralParam !== null && typeof pluralParam === 'number') {
+				pluralForm = i18n[language]['mejs.plural-form'];
+				str = _plural.apply(null, [str, pluralParam, pluralForm]);
+			}
+		}
+
+		// Fallback to default language if requested uid is not translated
+		if (!str && i18n.en) {
+			str = i18n.en[message];
+			if (pluralParam !== null && typeof pluralParam === 'number') {
+				pluralForm = i18n.en['mejs.plural-form'];
+				str = _plural.apply(null, [str, pluralParam, pluralForm]);
+			}
+		}
+
+		// As a last resort, use the requested uid, to mimic original behavior of i18n utils
+		// (in which uid was the english text)
+		str = str || message;
+
+		// Replace token
+		if (pluralParam !== null && typeof pluralParam === 'number') {
+			str = str.replace('%1', pluralParam);
+		}
+
+		return (0, _general.escapeHTML)(str);
+	}
+
+	return message;
+};
+
+_mejs2.default.i18n = i18n;
+
+// `i18n` compatibility workflow with WordPress
+if (typeof mejsL10n !== 'undefined') {
+	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
+}
+
+exports.default = i18n;
+
+},{"16":16,"6":6,"8":8}],5:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _general = _dereq_(16);
+
+var _media = _dereq_(17);
+
+var _renderer = _dereq_(7);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ * Media Core
+ *
+ * This class is the foundation to create/render different media formats.
+ * @class MediaElement
+ */
+var MediaElement = function MediaElement(idOrNode, options) {
+	var _this = this;
+
+	_classCallCheck(this, MediaElement);
+
+	var t = this;
+
+	t.defaults = {
+		/**
+   * List of the renderers to use
+   * @type {String[]}
+   */
+		renderers: [],
+		/**
+   * Name of MediaElement container
+   * @type {String}
+   */
+		fakeNodeName: 'mediaelementwrapper',
+		/**
+   * The path where shims are located
+   * @type {String}
+   */
+		pluginPath: 'build/',
+		/**
+   * Flag in `<object>` and `<embed>` to determine whether to use local or CDN
+   * Possible values: 'always' (CDN version) or 'sameDomain' (local files)
+   */
+		shimScriptAccess: 'sameDomain',
+		/**
+   * If error happens, set up HTML message
+   * @type {String}
+   */
+		customError: ''
+	};
+
+	options = Object.assign(t.defaults, options);
+
+	// create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes)
+	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
+	t.mediaElement.options = options;
+
+	var id = idOrNode,
+	    error = false;
+
+	if (typeof idOrNode === 'string') {
+		t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
+	} else {
+		t.mediaElement.originalNode = idOrNode;
+		id = idOrNode.id;
+	}
+
+	id = id || 'mejs_' + Math.random().toString().slice(2);
+
+	if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) {
+		// change id
+		t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
+
+		// to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set
+		// only if video/audio tags are detected
+		var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
+		if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) {
+			t.mediaElement.originalNode.setAttribute('preload', 'none');
+		}
+
+		// add next to this one
+		t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
+
+		// insert this one inside
+		t.mediaElement.appendChild(t.mediaElement.originalNode);
+	} else {
+		// TODO: where to put the node?
+	}
+
+	t.mediaElement.id = id;
+	t.mediaElement.renderers = {};
+	t.mediaElement.renderer = null;
+	t.mediaElement.rendererName = null;
+	/**
+  * Determine whether the renderer was found or not
+  *
+  * @public
+  * @param {String} rendererName
+  * @param {Object[]} mediaFiles
+  * @return {Boolean}
+  */
+	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
+
+		var t = _this;
+
+		// check for a match on the current renderer
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
+			t.mediaElement.renderer.pause();
+			if (t.mediaElement.renderer.stop) {
+				t.mediaElement.renderer.stop();
+			}
+			t.mediaElement.renderer.show();
+			t.mediaElement.renderer.setSrc(mediaFiles[0].src);
+			return true;
+		}
+
+		// if existing renderer is not the right one, then hide it
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+			t.mediaElement.renderer.pause();
+			if (t.mediaElement.renderer.stop) {
+				t.mediaElement.renderer.stop();
+			}
+			t.mediaElement.renderer.hide();
+		}
+
+		// see if we have the renderer already created
+		var newRenderer = t.mediaElement.renderers[rendererName],
+		    newRendererType = null;
+
+		if (newRenderer !== undefined && newRenderer !== null) {
+			newRenderer.show();
+			newRenderer.setSrc(mediaFiles[0].src);
+			t.mediaElement.renderer = newRenderer;
+			t.mediaElement.rendererName = rendererName;
+			return true;
+		}
+
+		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
+
+		// find the desired renderer in the array of possible ones
+		for (var i = 0, total = rendererArray.length; i < total; i++) {
+
+			var index = rendererArray[i];
+
+			if (index === rendererName) {
+
+				// create the renderer
+				var rendererList = _renderer.renderer.renderers;
+				newRendererType = rendererList[index];
+
+				var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
+				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
+				newRenderer.name = rendererName;
+
+				// store for later
+				t.mediaElement.renderers[newRendererType.name] = newRenderer;
+				t.mediaElement.renderer = newRenderer;
+				t.mediaElement.rendererName = rendererName;
+
+				newRenderer.show();
+
+				return true;
+			}
+		}
+
+		return false;
+	};
+
+	/**
+  * Set the element dimensions based on selected renderer's setSize method
+  *
+  * @public
+  * @param {number} width
+  * @param {number} height
+  */
+	t.mediaElement.setSize = function (width, height) {
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+			t.mediaElement.renderer.setSize(width, height);
+		}
+	};
+
+	/**
+  *
+  * @param {Object[]} urlList
+  */
+	t.mediaElement.createErrorMessage = function (urlList) {
+
+		urlList = Array.isArray(urlList) ? urlList : [];
+
+		var errorContainer = _document2.default.createElement('div');
+		errorContainer.className = 'me_cannotplay';
+		errorContainer.style.width = '100%';
+		errorContainer.style.height = '100%';
+
+		var errorContent = t.mediaElement.options.customError;
+
+		if (!errorContent) {
+
+			var poster = t.mediaElement.originalNode.getAttribute('poster');
+			if (poster) {
+				errorContent += '<img src="' + poster + '" width="100%" height="100%" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
+			}
+
+			for (var i = 0, total = urlList.length; i < total; i++) {
+				var url = urlList[i];
+				errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
+			}
+		}
+
+		errorContainer.innerHTML = errorContent;
+
+		t.mediaElement.originalNode.parentNode.insertBefore(errorContainer, t.mediaElement.originalNode);
+		t.mediaElement.originalNode.style.display = 'none';
+		error = true;
+	};
+
+	var props = _mejs2.default.html5media.properties,
+	    methods = _mejs2.default.html5media.methods,
+	    addProperty = function addProperty(obj, name, onGet, onSet) {
+
+		// wrapper functions
+		var oldValue = obj[name];
+		var getFn = function getFn() {
+			return onGet.apply(obj, [oldValue]);
+		},
+		    setFn = function setFn(newValue) {
+			oldValue = onSet.apply(obj, [newValue]);
+			return oldValue;
+		};
+
+		Object.defineProperty(obj, name, {
+			get: getFn,
+			set: setFn
+		});
+	},
+	    assignGettersSetters = function assignGettersSetters(propName) {
+		if (propName !== 'src') {
+			(function () {
+
+				var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
+				    getFn = function getFn() {
+					return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer['get' + capName]() : null;
+				},
+				    setFn = function setFn(value) {
+					if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+						t.mediaElement.renderer['set' + capName](value);
+					}
+				};
+
+				addProperty(t.mediaElement, propName, getFn, setFn);
+				t.mediaElement['get' + capName] = getFn;
+				t.mediaElement['set' + capName] = setFn;
+			})();
+		}
+	},
+
+	// `src` is a property separated from the others since it carries the logic to set the proper renderer
+	// based on the media files detected
+	getSrc = function getSrc() {
+		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
+	},
+	    setSrc = function setSrc(value) {
+
+		var mediaFiles = [];
+
+		// clean up URLs
+		if (typeof value === 'string') {
+			mediaFiles.push({
+				src: value,
+				type: value ? (0, _media.getTypeFromFile)(value) : ''
+			});
+		} else {
+			for (var i = 0, total = value.length; i < total; i++) {
+
+				var src = (0, _media.absolutizeUrl)(value[i].src),
+				    type = value[i].type;
+
+				mediaFiles.push({
+					src: src,
+					type: (type === '' || type === null || type === undefined) && src ? (0, _media.getTypeFromFile)(src) : type
+				});
+			}
+		}
+
+		// find a renderer and URL match
+		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
+		    event = void 0;
+
+		// Ensure that the original gets the first source found
+		if (!t.mediaElement.paused) {
+			t.mediaElement.pause();
+			event = (0, _general.createEvent)('pause', t.mediaElement);
+			t.mediaElement.dispatchEvent(event);
+		}
+
+		t.mediaElement.originalNode.setAttribute('src', mediaFiles[0].src || '');
+
+		if (t.mediaElement.querySelector('.me_cannotplay')) {
+			t.mediaElement.querySelector('.me_cannotplay').remove();
+		}
+
+		// did we find a renderer?
+		if (renderInfo === null) {
+			t.mediaElement.createErrorMessage(mediaFiles);
+			event = (0, _general.createEvent)('error', t.mediaElement);
+			event.message = 'No renderer found';
+			t.mediaElement.dispatchEvent(event);
+			return;
+		}
+
+		// turn on the renderer (this checks for the existing renderer already)
+		t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles);
+
+		if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) {
+			event = (0, _general.createEvent)('error', t.mediaElement);
+			event.message = 'Error creating renderer';
+			t.mediaElement.dispatchEvent(event);
+			t.mediaElement.createErrorMessage(mediaFiles);
+			return;
+		}
+	},
+	    assignMethods = function assignMethods(methodName) {
+		// run the method on the current renderer
+		t.mediaElement[methodName] = function () {
+			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+				args[_key] = arguments[_key];
+			}
+
+			if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
+				try {
+					t.mediaElement.renderer[methodName](args);
+				} catch (e) {
+					t.mediaElement.createErrorMessage();
+				}
+			}
+			return null;
+		};
+	};
+
+	// Assign all methods/properties/events to fake node if renderer was found
+	addProperty(t.mediaElement, 'src', getSrc, setSrc);
+	t.mediaElement.getSrc = getSrc;
+	t.mediaElement.setSrc = setSrc;
+
+	for (var i = 0, total = props.length; i < total; i++) {
+		assignGettersSetters(props[i]);
+	}
+
+	for (var _i = 0, _total = methods.length; _i < _total; _i++) {
+		assignMethods(methods[_i]);
+	}
+
+	// IE && iOS
+	t.mediaElement.events = {};
+
+	// start: fake events
+	t.mediaElement.addEventListener = function (eventName, callback) {
+		// create or find the array of callbacks for this eventName
+		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
+
+		// push the callback into the stack
+		t.mediaElement.events[eventName].push(callback);
+	};
+	t.mediaElement.removeEventListener = function (eventName, callback) {
+		// no eventName means remove all listeners
+		if (!eventName) {
+			t.mediaElement.events = {};
+			return true;
+		}
+
+		// see if we have any callbacks for this eventName
+		var callbacks = t.mediaElement.events[eventName];
+
+		if (!callbacks) {
+			return true;
+		}
+
+		// check for a specific callback
+		if (!callback) {
+			t.mediaElement.events[eventName] = [];
+			return true;
+		}
+
+		// remove the specific callback
+		for (var _i2 = 0; _i2 < callbacks.length; _i2++) {
+			if (callbacks[_i2] === callback) {
+				t.mediaElement.events[eventName].splice(_i2, 1);
+				return true;
+			}
+		}
+		return false;
+	};
+
+	/**
+  *
+  * @param {Event} event
+  */
+	t.mediaElement.dispatchEvent = function (event) {
+
+		var callbacks = t.mediaElement.events[event.type];
+
+		if (callbacks) {
+			for (var _i3 = 0; _i3 < callbacks.length; _i3++) {
+				callbacks[_i3].apply(null, [event]);
+			}
+		}
+	};
+
+	if (t.mediaElement.originalNode !== null) {
+		var mediaFiles = [];
+
+		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
+
+			case 'iframe':
+				mediaFiles.push({
+					type: '',
+					src: t.mediaElement.originalNode.getAttribute('src')
+				});
+
+				break;
+
+			case 'audio':
+			case 'video':
+				var n = void 0,
+				    src = void 0,
+				    type = void 0,
+				    sources = t.mediaElement.originalNode.childNodes.length,
+				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
+
+				// Consider if node contains the `src` and `type` attributes
+				if (nodeSource) {
+					var node = t.mediaElement.originalNode;
+					mediaFiles.push({
+						type: (0, _media.formatType)(nodeSource, node.getAttribute('type')),
+						src: nodeSource
+					});
+				}
+
+				// test <source> types to see if they are usable
+				for (var _i4 = 0; _i4 < sources; _i4++) {
+					n = t.mediaElement.originalNode.childNodes[_i4];
+					if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') {
+						src = n.getAttribute('src');
+						type = (0, _media.formatType)(src, n.getAttribute('type'));
+						mediaFiles.push({ type: type, src: src });
+					}
+				}
+				break;
+		}
+
+		if (mediaFiles.length > 0) {
+			t.mediaElement.src = mediaFiles;
+		}
+	}
+
+	if (t.mediaElement.options.success) {
+		t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
+	}
+
+	if (error && t.mediaElement.options.error) {
+		t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
+	}
+
+	return t.mediaElement;
+};
+
+_window2.default.MediaElement = MediaElement;
+
+exports.default = MediaElement;
+
+},{"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
 // Namespace
-var mejs = mejs || {};
+var mejs = {};
+
+// version number
+mejs.version = '4.0.2';
+
+// Basic HTML5 settings
+mejs.html5media = {
+	/**
+  * @type {String[]}
+  */
+	properties: [
+	// GET/SET
+	'volume', 'src', 'currentTime', 'muted',
+
+	// GET only
+	'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable',
+
+	// OTHERS
+	'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
+	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
+	/**
+  * @type {String[]}
+  */
+	methods: ['load', 'play', 'pause', 'canPlayType'],
+	/**
+  * @type {String[]}
+  */
+	events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'],
+	/**
+  * @type {String[]}
+  */
+	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']
+};
+
+_window2.default.mejs = mejs;
+
+exports.default = mejs;
+
+},{"3":3}],7:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.renderer = undefined;
+
+var _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; };
+
+var _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; }; }();
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+/**
+ *
+ * Class to manage renderer selection and addition.
+ * @class Renderer
+ */
+var Renderer = function () {
+	function Renderer() {
+		_classCallCheck(this, Renderer);
+
+		this.renderers = {};
+		this.order = [];
+	}
+
+	/**
+  * Register a new renderer.
+  *
+  * @param {Object} renderer - An object with all the rendered information (name REQUIRED)
+  * @method add
+  */
+
+
+	_createClass(Renderer, [{
+		key: 'add',
+		value: function add(renderer) {
+
+			if (renderer.name === undefined) {
+				throw new TypeError('renderer must contain at least `name` property');
+			}
+
+			this.renderers[renderer.name] = renderer;
+			this.order.push(renderer.name);
+		}
+
+		/**
+   * Iterate a list of renderers to determine which one should the player use.
+   *
+   * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}]
+   * @param {?String[]} renderers - Optional list of pre-selected renderers
+   * @return {?Object} The renderer's name and source selected
+   * @method select
+   */
+
+	}, {
+		key: 'select',
+		value: function select(mediaFiles) {
+			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+
+			var renderersLength = renderers.length;
+
+			renderers = renderers.length ? renderers : this.order;
+
+			// If renderers are not set, set a default order:
+			// 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV)
+			// 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG)
+			// 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.)
+			if (!renderersLength) {
+				(function () {
+					var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/],
+					    rendererRanking = function rendererRanking(renderer) {
+						for (var i = 0, total = rendererIndicator.length; i < total; i++) {
+							if (renderer.match(rendererIndicator[i]) !== null) {
+								return i;
+							}
+						}
+						return rendererIndicator.length;
+					};
+
+					renderers.sort(function (a, b) {
+						return rendererRanking(a) - rendererRanking(b);
+					});
+				})();
+			}
+
+			for (var i = 0, total = renderers.length; i < total; i++) {
+				var key = renderers[i],
+				    _renderer = this.renderers[key];
+
+				if (_renderer !== null && _renderer !== undefined) {
+					for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
+						if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
+							return {
+								rendererName: _renderer.name,
+								src: mediaFiles[j].src
+							};
+						}
+					}
+				}
+			}
+
+			return null;
+		}
+
+		// Setters/getters
+
+	}, {
+		key: 'order',
+		set: function set(order) {
+
+			if (!Array.isArray(order)) {
+				throw new TypeError('order must be an array of strings.');
+			}
+
+			this._order = order;
+		},
+		get: function get() {
+			return this._order;
+		}
+	}, {
+		key: 'renderers',
+		set: function set(renderers) {
+
+			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
+				throw new TypeError('renderers must be an array of objects.');
+			}
+
+			this._renderers = renderers;
+		},
+		get: function get() {
+			return this._renderers;
+		}
+	}]);
+
+	return Renderer;
+}();
+
+var renderer = exports.renderer = new Renderer();
+
+_mejs2.default.Renderers = renderer;
+
+},{"6":6}],8:[function(_dereq_,module,exports){
+'use strict';
+
+/*!
+ * This is a `i18n` language object.
+ *
+ * English; This can serve as a template for other languages to translate
+ *
+ * @author
+ *   TBD
+ *   Sascha Greuel (Twitter: @SoftCreatR)
+ *
+ * @see core/i18n.js
+ */
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+var EN = exports.EN = {
+	"mejs.plural-form": 1,
+
+	// core/mediaelement.js
+	"mejs.download-file": "Download File",
+
+	// renderers/flash.js
+	"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/",
+
+	// features/fullscreen.js
+	"mejs.fullscreen": "Fullscreen",
+
+	// features/playpause.js
+	"mejs.play": "Play",
+	"mejs.pause": "Pause",
+
+	// features/progress.js
+	"mejs.time-slider": "Time Slider",
+	"mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.",
+	"mejs.live-broadcast": "Live Broadcast",
+
+	// features/volume.js
+	"mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.",
+	"mejs.unmute": "Unmute",
+	"mejs.mute": "Mute",
+	"mejs.volume-slider": "Volume Slider",
+
+	// core/player.js
+	"mejs.video-player": "Video Player",
+	"mejs.audio-player": "Audio Player",
+
+	// features/tracks.js
+	"mejs.captions-subtitles": "Captions/Subtitles",
+	"mejs.captions-chapters": "Chapters",
+	"mejs.none": "None",
+	"mejs.afrikaans": "Afrikaans",
+	"mejs.albanian": "Albanian",
+	"mejs.arabic": "Arabic",
+	"mejs.belarusian": "Belarusian",
+	"mejs.bulgarian": "Bulgarian",
+	"mejs.catalan": "Catalan",
+	"mejs.chinese": "Chinese",
+	"mejs.chinese-simplified": "Chinese (Simplified)",
+	"mejs.chinese-traditional": "Chinese (Traditional)",
+	"mejs.croatian": "Croatian",
+	"mejs.czech": "Czech",
+	"mejs.danish": "Danish",
+	"mejs.dutch": "Dutch",
+	"mejs.english": "English",
+	"mejs.estonian": "Estonian",
+	"mejs.filipino": "Filipino",
+	"mejs.finnish": "Finnish",
+	"mejs.french": "French",
+	"mejs.galician": "Galician",
+	"mejs.german": "German",
+	"mejs.greek": "Greek",
+	"mejs.haitian-creole": "Haitian Creole",
+	"mejs.hebrew": "Hebrew",
+	"mejs.hindi": "Hindi",
+	"mejs.hungarian": "Hungarian",
+	"mejs.icelandic": "Icelandic",
+	"mejs.indonesian": "Indonesian",
+	"mejs.irish": "Irish",
+	"mejs.italian": "Italian",
+	"mejs.japanese": "Japanese",
+	"mejs.korean": "Korean",
+	"mejs.latvian": "Latvian",
+	"mejs.lithuanian": "Lithuanian",
+	"mejs.macedonian": "Macedonian",
+	"mejs.malay": "Malay",
+	"mejs.maltese": "Maltese",
+	"mejs.norwegian": "Norwegian",
+	"mejs.persian": "Persian",
+	"mejs.polish": "Polish",
+	"mejs.portuguese": "Portuguese",
+	"mejs.romanian": "Romanian",
+	"mejs.russian": "Russian",
+	"mejs.serbian": "Serbian",
+	"mejs.slovak": "Slovak",
+	"mejs.slovenian": "Slovenian",
+	"mejs.spanish": "Spanish",
+	"mejs.swahili": "Swahili",
+	"mejs.swedish": "Swedish",
+	"mejs.tagalog": "Tagalog",
+	"mejs.thai": "Thai",
+	"mejs.turkish": "Turkish",
+	"mejs.ukrainian": "Ukrainian",
+	"mejs.vietnamese": "Vietnamese",
+	"mejs.welsh": "Welsh",
+	"mejs.yiddish": "Yiddish"
+};
+
+},{}],9:[function(_dereq_,module,exports){
+'use strict';
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _renderer = _dereq_(7);
+
+var _general = _dereq_(16);
+
+var _media = _dereq_(17);
+
+var _constants = _dereq_(15);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Native M(PEG)-Dash renderer
+ *
+ * Uses dash.js, a reference client implementation for the playback of M(PEG)-DASH via Javascript and compliant browsers.
+ * It relies on HTML5 video and MediaSource Extensions for playback.
+ * This renderer integrates new events associated with mpd files.
+ * @see https://github.com/Dash-Industry-Forum/dash.js
+ *
+ */
+var NativeDash = {
+	/**
+  * @type {Boolean}
+  */
+	isMediaLoaded: false,
+	/**
+  * @type {Array}
+  */
+	creationQueue: [],
+
+	/**
+  * Create a queue to prepare the loading of an DASH source
+  *
+  * @param {Object} settings - an object with settings needed to load an DASH player instance
+  */
+	prepareSettings: function prepareSettings(settings) {
+		if (NativeDash.isLoaded) {
+			NativeDash.createInstance(settings);
+		} else {
+			NativeDash.loadScript(settings);
+			NativeDash.creationQueue.push(settings);
+		}
+	},
+
+	/**
+  * Load dash.mediaplayer.js script on the header of the document
+  *
+  * @param {Object} settings - an object with settings needed to load an DASH player instance
+  */
+	loadScript: function loadScript(settings) {
+
+		// Skip script loading since it is already loaded
+		if (typeof dashjs !== 'undefined') {
+			NativeDash.createInstance(settings);
+		} else if (!NativeDash.isScriptLoaded) {
+			(function () {
+
+				settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.dashjs.org/latest/dash.mediaplayer.min.js';
+
+				var script = _document2.default.createElement('script'),
+				    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
+
+				var done = false;
+
+				script.src = settings.options.path;
+
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function () {
+					if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
+						done = true;
+						NativeDash.mediaReady();
+						script.onload = script.onreadystatechange = null;
+					}
+				};
+
+				firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
+
+				NativeDash.isScriptLoaded = true;
+			})();
+		}
+	},
+
+	/**
+  * Process queue of DASH player creation
+  *
+  */
+	mediaReady: function mediaReady() {
+
+		NativeDash.isLoaded = true;
+		NativeDash.isScriptLoaded = true;
+
+		while (NativeDash.creationQueue.length > 0) {
+			var settings = NativeDash.creationQueue.pop();
+			NativeDash.createInstance(settings);
+		}
+	},
+
+	/**
+  * Create a new instance of DASH player and trigger a custom event to initialize it
+  *
+  * @param {Object} settings - an object with settings needed to instantiate DASH object
+  */
+	createInstance: function createInstance(settings) {
+
+		var player = dashjs.MediaPlayer().create();
+		_window2.default['__ready__' + settings.id](player);
+	}
+};
+
+var DashNativeRenderer = {
+	name: 'native_dash',
+
+	options: {
+		prefix: 'native_dash',
+		dash: {
+			// Special config: used to set the local path/URL of dash.js player library
+			path: '//cdn.dashjs.org/latest/dash.mediaplayer.min.js',
+			debug: false
+		}
+	},
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {Boolean}
+  */
+	canPlayType: function canPlayType(type) {
+		return _constants.HAS_MSE && ['application/dash+xml'].includes(type);
+	},
+
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var originalNode = mediaElement.originalNode,
+		    id = mediaElement.id + '_' + options.prefix,
+		    preload = originalNode.getAttribute('preload'),
+		    autoplay = originalNode.autoplay;
+
+		var node = null,
+		    dashPlayer = null;
+
+		node = originalNode.cloneNode(true);
+		options = Object.assign(options, mediaElement.options);
+
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			node['get' + capName] = function () {
+				return dashPlayer !== null ? node[propName] : null;
+			};
+
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					if (dashPlayer !== null) {
+						if (propName === 'src') {
+
+							dashPlayer.attachSource(value);
+							if (autoplay) {
+								node.play();
+							}
+						}
+
+						node[propName] = value;
+					}
+				}
+			};
+		};
+
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
+
+		// Initial method to register all M-Dash events
+		_window2.default['__ready__' + id] = function (_dashPlayer) {
+
+			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
+
+			dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug);
+			dashPlayer.setAutoPlay(preload && preload === 'auto' || autoplay);
+			dashPlayer.setScheduleWhilePaused(preload && preload === 'auto' || autoplay);
+
+			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+			    dashEvents = dashjs.MediaPlayer.events,
+			    assignEvents = function assignEvents(eventName) {
+
+				if (eventName === 'loadedmetadata') {
+					dashPlayer.initialize(node, node.src, false);
+				}
+
+				node.addEventListener(eventName, function (e) {
+					var event = _document2.default.createEvent('HTMLEvents');
+					event.initEvent(e.type, e.bubbles, e.cancelable);
+					mediaElement.dispatchEvent(event);
+				});
+			};
+
+			for (var _i = 0, _total = events.length; _i < _total; _i++) {
+				assignEvents(events[_i]);
+			}
+
+			/**
+    * Custom M(PEG)-DASH events
+    *
+    * These events can be attached to the original node using addEventListener and the name of the event,
+    * not using dashjs.MediaPlayer.events object
+    * @see http://cdn.dashjs.org/latest/jsdoc/MediaPlayerEvents.html
+    */
+			var assignMdashEvents = function assignMdashEvents(e) {
+				var event = (0, _general.createEvent)(e.type, node);
+				event.data = e;
+				mediaElement.dispatchEvent(event);
+
+				if (e.type.toLowerCase() === 'error') {
+					console.error(e);
+				}
+			};
+
+			for (var eventType in dashEvents) {
+				if (dashEvents.hasOwnProperty(eventType)) {
+					dashPlayer.on(dashEvents[eventType], assignMdashEvents);
+				}
+			}
+		};
+
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
+			}
+		}
+
+		node.setAttribute('id', id);
+
+		originalNode.parentNode.insertBefore(node, originalNode);
+		originalNode.autoplay = false;
+		originalNode.style.display = 'none';
+
+		NativeDash.prepareSettings({
+			options: options.dash,
+			id: id
+		});
+
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
+		};
+
+		node.hide = function () {
+			node.pause();
+			node.style.display = 'none';
+			return node;
+		};
+
+		node.show = function () {
+			node.style.display = '';
+			return node;
+		};
+
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
+
+		return node;
+	}
+};
+
+/**
+ * Register Native M(PEG)-Dash type based on URL structure
+ *
+ */
+_media.typeChecks.push(function (url) {
+	url = url.toLowerCase();
+	return url.includes('.mpd') ? 'application/dash+xml' : null;
+});
+
+_renderer.renderer.add(DashNativeRenderer);
+
+},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],10:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.PluginDetector = undefined;
+
+var _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; };
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _renderer = _dereq_(7);
+
+var _general = _dereq_(16);
+
+var _constants = _dereq_(15);
+
+var _media = _dereq_(17);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Shim that falls back to Flash if a media type is not supported.
+ *
+ * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE),
+ * will play using Flash.
+ */
+
+/**
+ * Core detector, plugins are added below
+ *
+ */
+var PluginDetector = exports.PluginDetector = {
+	/**
+  * Cached version numbers
+  * @type {Array}
+  */
+	plugins: [],
+
+	/**
+  * Test a plugin version number
+  * @param {String} plugin - In this scenario 'flash' will be tested
+  * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision)
+  * @return {Boolean}
+  */
+	hasPluginVersion: function hasPluginVersion(plugin, v) {
+		var pv = PluginDetector.plugins[plugin];
+		v[1] = v[1] || 0;
+		v[2] = v[2] || 0;
+		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];
+	},
+
+	/**
+  * Detect plugin and store its version number
+  *
+  * @see PluginDetector.detectPlugin
+  * @param {String} p
+  * @param {String} pluginName
+  * @param {String} mimeType
+  * @param {String} activeX
+  * @param {Function} axDetect
+  */
+	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
+		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
+	},
+
+	/**
+  * Obtain version number from the mime-type (all but IE) or ActiveX (IE)
+  *
+  * @param {String} pluginName
+  * @param {String} mimeType
+  * @param {String} activeX
+  * @param {Function} axDetect
+  * @return {int[]}
+  */
+	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
+
+		var version = [0, 0, 0],
+		    description = void 0,
+		    ax = void 0;
+
+		// Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed
+		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
+			description = _constants.NAV.plugins[pluginName].description;
+			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
+				version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
+				for (var i = 0, total = version.length; i < total; i++) {
+					version[i] = parseInt(version[i].match(/\d+/), 10);
+				}
+			}
+			// Internet Explorer / ActiveX
+		} else if (_window2.default.ActiveXObject !== undefined) {
+			try {
+				ax = new ActiveXObject(activeX);
+				if (ax) {
+					version = axDetect(ax);
+				}
+			} catch (e) {
+				
+			}
+		}
+		return version;
+	}
+};
+
+/**
+ * Add Flash detection
+ *
+ */
+PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
+	// adapted from SWFObject
+	var version = [],
+	    d = ax.GetVariable("$version");
+
+	if (d) {
+		d = d.split(" ")[1].split(",");
+		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
+	}
+	return version;
+});
+
+var FlashMediaElementRenderer = {
+
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var flash = {};
+
+		// store main variable
+		flash.options = options;
+		flash.id = mediaElement.id + '_' + flash.options.prefix;
+		flash.mediaElement = mediaElement;
+
+		// insert data
+		flash.flashState = {};
+		flash.flashApi = null;
+		flash.flashApiStack = [];
+
+		// mediaElements for get/set
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+
+			// add to flash state that we will store
+			flash.flashState[propName] = null;
+
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			flash['get' + capName] = function () {
+
+				if (flash.flashApi !== null) {
+
+					if (flash.flashApi['get_' + propName] !== undefined) {
+						var _ret = function () {
+							var value = flash.flashApi['get_' + propName]();
+
+							// special case for buffered to conform to HTML5's newest
+							if (propName === 'buffered') {
+								return {
+									v: {
+										start: function start() {
+											return 0;
+										},
+										end: function end() {
+											return value;
+										},
+										length: 1
+									}
+								};
+							}
+
+							return {
+								v: value
+							};
+						}();
+
+						if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
+					} else {
+						return null;
+					}
+				} else {
+					return null;
+				}
+			};
+
+			flash['set' + capName] = function (value) {
+				if (propName === 'src') {
+					value = (0, _media.absolutizeUrl)(value);
+				}
+
+				// send value to Flash
+				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
+					flash.flashApi['set_' + propName](value);
+				} else {
+					// store for after "READY" event fires
+					flash.flashApiStack.push({
+						type: 'set',
+						propName: propName,
+						value: value
+					});
+				}
+			};
+		};
+
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
+
+		// add mediaElements for native methods
+		var methods = _mejs2.default.html5media.methods,
+		    assignMethods = function assignMethods(methodName) {
+
+			// run the method on the native HTMLMediaElement
+			flash[methodName] = function () {
+
+				if (flash.flashApi !== null) {
+
+					// send call up to Flash ExternalInterface API
+					if (flash.flashApi['fire_' + methodName]) {
+						try {
+							flash.flashApi['fire_' + methodName]();
+						} catch (e) {
+							
+						}
+					} else {
+						
+					}
+				} else {
+					// store for after "READY" event fires
+					flash.flashApiStack.push({
+						type: 'call',
+						methodName: methodName
+					});
+				}
+			};
+		};
+		methods.push('stop');
+		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
+			assignMethods(methods[_i]);
+		}
+
+		// give initial events like in others renderers
+		var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay', 'error'];
+
+		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
+			var event = (0, _general.createEvent)(initEvents[_i2], flash);
+			mediaElement.dispatchEvent(event);
+		}
+
+		// add a ready method that Flash can call to
+		_window2.default['__ready__' + flash.id] = function () {
+
+			flash.flashReady = true;
+			flash.flashApi = _document2.default.getElementById('__' + flash.id);
+
+			// do call stack
+			if (flash.flashApiStack.length) {
+				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
+
+					var stackItem = flash.flashApiStack[_i3];
+
+					if (stackItem.type === 'set') {
+						var propName = stackItem.propName,
+						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+						flash['set' + capName](stackItem.value);
+					} else if (stackItem.type === 'call') {
+						flash[stackItem.methodName]();
+					}
+				}
+			}
+		};
+
+		_window2.default['__event__' + flash.id] = function (eventName, message) {
+
+			var event = (0, _general.createEvent)(eventName, flash);
+			event.message = message || '';
+
+			// send event from Flash up to the mediaElement
+			flash.mediaElement.dispatchEvent(event);
+		};
+
+		// insert Flash object
+		flash.flashWrapper = _document2.default.createElement('div');
+
+		// If the access script flag does not have any of the valid values, set to `sameDomain` by default
+		if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) {
+			flash.options.shimScriptAccess = 'sameDomain';
+		}
+
+		var autoplay = mediaElement.originalNode.autoplay,
+		    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess],
+		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
+		    flashHeight = isVideo ? mediaElement.originalNode.height : 1,
+		    flashWidth = isVideo ? mediaElement.originalNode.width : 1;
+
+		if (mediaElement.originalNode.getAttribute('src')) {
+			flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
+		}
+
+		if (flash.options.enablePseudoStreaming === true) {
+			flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
+			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
+		}
+
+		mediaElement.appendChild(flash.flashWrapper);
+
+		if (mediaElement.originalNode !== null) {
+			mediaElement.originalNode.style.display = 'none';
+		}
+
+		var settings = [];
+
+		if (_constants.IS_IE) {
+			var specialIEContainer = _document2.default.createElement('div');
+			flash.flashWrapper.appendChild(specialIEContainer);
+
+			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 + '"'];
+
+			if (!isVideo) {
+				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
+			}
+
+			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>';
+		} else {
+
+			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('&') + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
+
+			if (!isVideo) {
+				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
+			}
+
+			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
+		}
+
+		flash.flashNode = flash.flashWrapper.lastChild;
+
+		flash.hide = function () {
+			if (isVideo) {
+				flash.flashNode.style.position = 'absolute';
+				flash.flashNode.style.width = '1px';
+				flash.flashNode.style.height = '1px';
+				try {
+					flash.flashNode.style.clip = 'rect(0 0 0 0);';
+				} catch (e) {
+					
+				}
+			}
+		};
+		flash.show = function () {
+			if (isVideo) {
+				flash.flashNode.style.position = '';
+				flash.flashNode.style.width = '';
+				flash.flashNode.style.height = '';
+				try {
+					flash.flashNode.style.clip = '';
+				} catch (e) {
+					
+				}
+			}
+		};
+		flash.setSize = function (width, height) {
+			flash.flashNode.style.width = width + 'px';
+			flash.flashNode.style.height = height + 'px';
+
+			if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
+				flash.flashApi.fire_setSize(width, height);
+			}
+		};
+
+		flash.destroy = function () {
+			flash.flashNode.remove();
+		};
+
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
+					flash.setSrc(mediaFiles[_i4].src);
+					break;
+				}
+			}
+		}
+
+		return flash;
+	}
+};
+
+var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
+
+if (hasFlash) {
+
+	/**
+  * Register media type based on URL structure if Flash is detected
+  *
+  */
+	_media.typeChecks.push(function (url) {
+
+		url = url.toLowerCase();
+
+		if (url.startsWith('rtmp')) {
+			if (url.includes('.mp3')) {
+				return 'audio/rtmp';
+			} else {
+				return 'video/rtmp';
+			}
+		} else if (url.includes('.oga') || url.includes('.ogg')) {
+			return 'audio/ogg';
+		} else if (url.includes('.m3u8')) {
+			return 'application/x-mpegURL';
+		} else if (url.includes('.mpd')) {
+			return 'application/dash+xml';
+		} else if (url.includes('.flv')) {
+			return 'video/flv';
+		} else {
+			return null;
+		}
+	});
+
+	// VIDEO
+	var FlashMediaElementVideoRenderer = {
+		name: 'flash_video',
+
+		options: {
+			prefix: 'flash_video',
+			filename: 'mediaelement-flash-video.swf',
+			enablePseudoStreaming: false,
+			// start query parameter sent to server for pseudo-streaming
+			pseudoStreamingStartQueryParam: 'start',
+			// pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV)
+			pseudoStreamingType: 'byte'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase());
+		},
+
+		create: FlashMediaElementRenderer.create
+
+	};
+	_renderer.renderer.add(FlashMediaElementVideoRenderer);
+
+	// HLS
+	var FlashMediaElementHlsVideoRenderer = {
+		name: 'flash_hls',
+
+		options: {
+			prefix: 'flash_hls',
+			filename: 'mediaelement-flash-video-hls.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+		},
+
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
+
+	// M(PEG)-DASH
+	var FlashMediaElementMdashVideoRenderer = {
+		name: 'flash_dash',
+
+		options: {
+			prefix: 'flash_dash',
+			filename: 'mediaelement-flash-video-mdash.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['application/dash+xml'].includes(type.toLowerCase());
+		},
+
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
+
+	// AUDIO
+	var FlashMediaElementAudioRenderer = {
+		name: 'flash_audio',
+
+		options: {
+			prefix: 'flash_audio',
+			filename: 'mediaelement-flash-audio.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['audio/mp3'].includes(type.toLowerCase());
+		},
+
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementAudioRenderer);
+
+	// AUDIO - ogg
+	var FlashMediaElementAudioOggRenderer = {
+		name: 'flash_audio_ogg',
+
+		options: {
+			prefix: 'flash_audio_ogg',
+			filename: 'mediaelement-flash-audio-ogg.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase());
+		},
+
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
+}
+
+},{"15":15,"16":16,"17":17,"2":2,"3":3,"4":4,"6":6,"7":7}],11:[function(_dereq_,module,exports){
+'use strict';
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _renderer = _dereq_(7);
+
+var _general = _dereq_(16);
+
+var _constants = _dereq_(15);
+
+var _media = _dereq_(17);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Native FLV renderer
+ *
+ * Uses flv.js, which is a JavaScript library which implements mechanisms to play flv files inspired by flv.js.
+ * It relies on HTML5 video and MediaSource Extensions for playback.
+ * Currently, it can only play files with the same origin.
+ *
+ * @see https://github.com/Bilibili/flv.js
+ *
+ */
+var NativeFlv = {
+	/**
+  * @type {Boolean}
+  */
+	isMediaStarted: false,
+	/**
+  * @type {Boolean}
+  */
+	isMediaLoaded: false,
+	/**
+  * @type {Array}
+  */
+	creationQueue: [],
+
+	/**
+  * Create a queue to prepare the loading of an FLV source
+  * @param {Object} settings - an object with settings needed to load an FLV player instance
+  */
+	prepareSettings: function prepareSettings(settings) {
+		if (NativeFlv.isLoaded) {
+			NativeFlv.createInstance(settings);
+		} else {
+			NativeFlv.loadScript(settings);
+			NativeFlv.creationQueue.push(settings);
+		}
+	},
+
+	/**
+  * Load flv.js script on the header of the document
+  *
+  * @param {Object} settings - an object with settings needed to load an FLV player instance
+  */
+	loadScript: function loadScript(settings) {
+
+		// Skip script loading since it is already loaded
+		if (typeof flvjs !== 'undefined') {
+			NativeFlv.createInstance(settings);
+		} else if (!NativeFlv.isMediaStarted) {
+			(function () {
+
+				settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.1.0/flv.min.js';
+
+				var script = _document2.default.createElement('script'),
+				    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
+
+				var done = false;
+
+				script.src = settings.options.path;
+
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function () {
+					if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
+						done = true;
+						NativeFlv.mediaReady();
+						script.onload = script.onreadystatechange = null;
+					}
+				};
+
+				firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
+				NativeFlv.isMediaStarted = true;
+			})();
+		}
+	},
+
+	/**
+  * Process queue of FLV player creation
+  *
+  */
+	mediaReady: function mediaReady() {
+		NativeFlv.isLoaded = true;
+		NativeFlv.isMediaLoaded = true;
+
+		while (NativeFlv.creationQueue.length > 0) {
+			var settings = NativeFlv.creationQueue.pop();
+			NativeFlv.createInstance(settings);
+		}
+	},
+
+	/**
+  * Create a new instance of FLV player and trigger a custom event to initialize it
+  *
+  * @param {Object} settings - an object with settings needed to instantiate FLV object
+  */
+	createInstance: function createInstance(settings) {
+		var player = flvjs.createPlayer(settings.options);
+		_window2.default['__ready__' + settings.id](player);
+	}
+};
 
-// version number
-mejs.version = '2.15.1'; 
-
-
-// player number (for missing, same id attr)
-mejs.meIndex = 0;
-
-// media types accepted by plugins
-mejs.plugins = {
-	silverlight: [
-		{version: [3,0], types: ['video/mp4','video/m4v','video/mov','video/wmv','audio/wma','audio/m4a','audio/mp3','audio/wav','audio/mpeg']}
-	],
-	flash: [
-		{version: [9,0,124], types: ['video/mp4','video/m4v','video/mov','video/flv','video/rtmp','video/x-flv','audio/flv','audio/x-flv','audio/mp3','audio/m4a','audio/mpeg', 'video/youtube', 'video/x-youtube', 'application/x-mpegURL']}
-		//,{version: [12,0], types: ['video/webm']} // for future reference (hopefully!)
-	],
-	youtube: [
-		{version: null, types: ['video/youtube', 'video/x-youtube', 'audio/youtube', 'audio/x-youtube']}
-	],
-	vimeo: [
-		{version: null, types: ['video/vimeo', 'video/x-vimeo']}
-	]
+var FlvNativeRenderer = {
+	name: 'native_flv',
+
+	options: {
+		prefix: 'native_flv',
+		flv: {
+			// Special config: used to set the local path/URL of flv.js library
+			path: '//cdnjs.cloudflare.com/ajax/libs/flv.js/1.1.0/flv.min.js',
+			// To modify more elements from FLV player,
+			// see https://github.com/Bilibili/flv.js/blob/master/docs/api.md#config
+			cors: true
+		}
+	},
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {Boolean}
+  */
+	canPlayType: function canPlayType(type) {
+		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].includes(type);
+	},
+
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var originalNode = mediaElement.originalNode,
+		    id = mediaElement.id + '_' + options.prefix;
+
+		var node = null,
+		    flvPlayer = null;
+
+		node = originalNode.cloneNode(true);
+		options = Object.assign(options, mediaElement.options);
+
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			node['get' + capName] = function () {
+				return flvPlayer !== null ? node[propName] : null;
+			};
+
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					if (flvPlayer !== null) {
+						node[propName] = value;
+
+						if (propName === 'src') {
+							flvPlayer.unload();
+							flvPlayer.detachMediaElement();
+							flvPlayer.attachMediaElement(node);
+							flvPlayer.load();
+						}
+					}
+				}
+			};
+		};
+
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
+
+		// Initial method to register all FLV events
+		_window2.default['__ready__' + id] = function (_flvPlayer) {
+
+			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
+
+			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+			    assignEvents = function assignEvents(eventName) {
+
+				if (eventName === 'loadedmetadata') {
+
+					flvPlayer.unload();
+					flvPlayer.detachMediaElement();
+					flvPlayer.attachMediaElement(node);
+					flvPlayer.load();
+				}
+
+				node.addEventListener(eventName, function (e) {
+					var event = _document2.default.createEvent('HTMLEvents');
+					event.initEvent(e.type, e.bubbles, e.cancelable);
+					mediaElement.dispatchEvent(event);
+				});
+			};
+
+			for (var _i = 0, _total = events.length; _i < _total; _i++) {
+				assignEvents(events[_i]);
+			}
+		};
+
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
+			}
+		}
+
+		node.setAttribute('id', id);
+
+		originalNode.parentNode.insertBefore(node, originalNode);
+		originalNode.autoplay = false;
+		originalNode.style.display = 'none';
+
+		// Options that cannot be overridden
+		options.flv.type = 'flv';
+		options.flv.url = node.getAttribute('src');
+
+		NativeFlv.prepareSettings({
+			options: options.flv,
+			id: id
+		});
+
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
+		};
+
+		node.hide = function () {
+			if (flvPlayer !== null) {
+				flvPlayer.pause();
+			}
+			node.style.display = 'none';
+			return node;
+		};
+
+		node.show = function () {
+			node.style.display = '';
+			return node;
+		};
+
+		node.destroy = function () {
+			if (flvPlayer !== null) {
+				flvPlayer.destroy();
+			}
+		};
+
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
+
+		return node;
+	}
+};
+
+/**
+ * Register Native FLV type based on URL structure
+ *
+ */
+_media.typeChecks.push(function (url) {
+	url = url.toLowerCase();
+	return url.includes('.flv') ? 'video/flv' : null;
+});
+
+_renderer.renderer.add(FlvNativeRenderer);
+
+},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],12:[function(_dereq_,module,exports){
+'use strict';
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _renderer = _dereq_(7);
+
+var _general = _dereq_(16);
+
+var _constants = _dereq_(15);
+
+var _media = _dereq_(17);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Native HLS renderer
+ *
+ * Uses DailyMotion's hls.js, which is a JavaScript library which implements an HTTP Live Streaming client.
+ * It relies on HTML5 video and MediaSource Extensions for playback.
+ * This renderer integrates new events associated with m3u8 files the same way Flash version of Hls does.
+ * @see https://github.com/dailymotion/hls.js
+ *
+ */
+var NativeHls = {
+	/**
+  * @type {Boolean}
+  */
+	isMediaStarted: false,
+	/**
+  * @type {Boolean}
+  */
+	isMediaLoaded: false,
+	/**
+  * @type {Array}
+  */
+	creationQueue: [],
+
+	/**
+  * Create a queue to prepare the loading of an HLS source
+  *
+  * @param {Object} settings - an object with settings needed to load an HLS player instance
+  */
+	prepareSettings: function prepareSettings(settings) {
+		if (NativeHls.isLoaded) {
+			NativeHls.createInstance(settings);
+		} else {
+			NativeHls.loadScript(settings);
+			NativeHls.creationQueue.push(settings);
+		}
+	},
+
+	/**
+  * Load hls.js script on the header of the document
+  *
+  * @param {Object} settings - an object with settings needed to load an HLS player instance
+  */
+	loadScript: function loadScript(settings) {
+
+		// Skip script loading since it is already loaded
+		if (typeof Hls !== 'undefined') {
+			NativeHls.createInstance(settings);
+		} else if (!NativeHls.isMediaStarted) {
+			(function () {
+
+				settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : '//cdn.jsdelivr.net/hls.js/latest/hls.min.js';
+
+				var script = _document2.default.createElement('script'),
+				    firstScriptTag = _document2.default.getElementsByTagName('script')[0];
+
+				var done = false;
+
+				script.src = settings.options.path;
+
+				// Attach handlers for all browsers
+				script.onload = script.onreadystatechange = function () {
+					if (!done && (!this.readyState || this.readyState === undefined || this.readyState === 'loaded' || this.readyState === 'complete')) {
+						done = true;
+						NativeHls.mediaReady();
+						script.onload = script.onreadystatechange = null;
+					}
+				};
+
+				firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
+				NativeHls.isMediaStarted = true;
+			})();
+		}
+	},
+
+	/**
+  * Process queue of HLS player creation
+  *
+  */
+	mediaReady: function mediaReady() {
+		NativeHls.isLoaded = true;
+		NativeHls.isMediaLoaded = true;
+
+		while (NativeHls.creationQueue.length > 0) {
+			var settings = NativeHls.creationQueue.pop();
+			NativeHls.createInstance(settings);
+		}
+	},
+
+	/**
+  * Create a new instance of HLS player and trigger a custom event to initialize it
+  *
+  * @param {Object} settings - an object with settings needed to instantiate HLS object
+  * @return {Hls}
+  */
+	createInstance: function createInstance(settings) {
+		var player = new Hls(settings.options);
+		_window2.default['__ready__' + settings.id](player);
+		return player;
+	}
+};
+
+var HlsNativeRenderer = {
+	name: 'native_hls',
+
+	options: {
+		prefix: 'native_hls',
+		hls: {
+			// Special config: used to set the local path/URL of hls.js library
+			path: '//cdn.jsdelivr.net/hls.js/latest/hls.min.js',
+			// To modify more elements from hls.js,
+			// see https://github.com/dailymotion/hls.js/blob/master/API.md#user-content-fine-tuning
+			autoStartLoad: false,
+			debug: false
+		}
+	},
+
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {Boolean}
+  */
+	canPlayType: function canPlayType(type) {
+		return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+	},
+
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var originalNode = mediaElement.originalNode,
+		    id = mediaElement.id + '_' + options.prefix,
+		    preload = originalNode.getAttribute('preload'),
+		    autoplay = originalNode.autoplay;
+
+		var hlsPlayer = null,
+		    node = null;
+
+		node = originalNode.cloneNode(true);
+		options = Object.assign(options, mediaElement.options);
+		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
+
+		// WRAPPERS for PROPs
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			node['get' + capName] = function () {
+				return hlsPlayer !== null ? node[propName] : null;
+			};
+
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					if (hlsPlayer !== null) {
+						node[propName] = value;
+
+						if (propName === 'src') {
+
+							hlsPlayer.destroy();
+							hlsPlayer = NativeHls.createInstance({
+								options: options.hls,
+								id: id
+							});
+
+							hlsPlayer.loadSource(value);
+							hlsPlayer.attachMedia(node);
+						}
+					}
+				}
+			};
+		};
+
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
+
+		// Initial method to register all HLS events
+		_window2.default['__ready__' + id] = function (_hlsPlayer) {
+
+			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
+
+			var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+			    hlsEvents = Hls.Events,
+			    assignEvents = function assignEvents(eventName) {
+
+				if (eventName === 'loadedmetadata') {
+
+					hlsPlayer.detachMedia();
+
+					var url = node.src;
+
+					hlsPlayer.loadSource(url);
+					hlsPlayer.attachMedia(node);
+				}
+
+				node.addEventListener(eventName, function (e) {
+					// copy event
+					var event = _document2.default.createEvent('HTMLEvents');
+					event.initEvent(e.type, e.bubbles, e.cancelable);
+					mediaElement.dispatchEvent(event);
+				});
+			};
+
+			for (var _i = 0, _total = events.length; _i < _total; _i++) {
+				assignEvents(events[_i]);
+			}
+
+			/**
+    * Custom HLS events
+    *
+    * These events can be attached to the original node using addEventListener and the name of the event,
+    * not using Hls.Events object
+    * @see https://github.com/dailymotion/hls.js/blob/master/src/events.js
+    * @see https://github.com/dailymotion/hls.js/blob/master/src/errors.js
+    * @see https://github.com/dailymotion/hls.js/blob/master/API.md#runtime-events
+    * @see https://github.com/dailymotion/hls.js/blob/master/API.md#errors
+    */
+			var recoverDecodingErrorDate = void 0,
+			    recoverSwapAudioCodecDate = void 0;
+			var assignHlsEvents = function assignHlsEvents(e, data) {
+				var event = (0, _general.createEvent)(e, node);
+				event.data = data;
+				mediaElement.dispatchEvent(event);
+
+				if (e === 'hlsError') {
+					console.warn(e, data);
+
+					// borrowed from http://dailymotion.github.io/hls.js/demo/
+					if (data.fatal) {
+						switch (data.type) {
+							case 'mediaError':
+								var now = new Date().getTime();
+								if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
+									recoverDecodingErrorDate = new Date().getTime();
+									hlsPlayer.recoverMediaError();
+								} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
+									recoverSwapAudioCodecDate = new Date().getTime();
+									console.warn('Attempting to swap Audio Codec and recover from media error');
+									hlsPlayer.swapAudioCodec();
+									hlsPlayer.recoverMediaError();
+								} else {
+									console.error('Cannot recover, last media error recovery failed');
+								}
+								break;
+							case 'networkError':
+								console.error('Network error');
+								break;
+							default:
+								hlsPlayer.destroy();
+								break;
+
+						}
+					}
+				}
+			};
+
+			for (var eventType in hlsEvents) {
+				if (hlsEvents.hasOwnProperty(eventType)) {
+					hlsPlayer.on(hlsEvents[eventType], assignHlsEvents);
+				}
+			}
+		};
+
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
+			}
+		}
+
+		if (preload !== 'auto' && !autoplay) {
+			node.addEventListener('play', function () {
+				if (hlsPlayer !== null) {
+					hlsPlayer.startLoad();
+				}
+			});
+
+			node.addEventListener('pause', function () {
+				if (hlsPlayer !== null) {
+					hlsPlayer.stopLoad();
+				}
+			});
+		}
+
+		node.setAttribute('id', id);
+
+		originalNode.parentNode.insertBefore(node, originalNode);
+		originalNode.autoplay = false;
+		originalNode.style.display = 'none';
+
+		NativeHls.prepareSettings({
+			options: options.hls,
+			id: id
+		});
+
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
+		};
+
+		node.hide = function () {
+			node.pause();
+			node.style.display = 'none';
+			return node;
+		};
+
+		node.show = function () {
+			node.style.display = '';
+			return node;
+		};
+
+		node.destroy = function () {
+			if (hlsPlayer !== null) {
+				hlsPlayer.destroy();
+			}
+		};
+
+		node.stop = function () {
+			if (hlsPlayer !== null) {
+				hlsPlayer.stopLoad();
+			}
+		};
+
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
+
+		return node;
+	}
+};
+
+/**
+ * Register Native HLS type based on URL structure
+ *
+ */
+_media.typeChecks.push(function (url) {
+	url = url.toLowerCase();
+	return url.includes('.m3u8') ? 'application/x-mpegURL' : null;
+});
+
+_renderer.renderer.add(HlsNativeRenderer);
+
+},{"15":15,"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],13:[function(_dereq_,module,exports){
+'use strict';
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _renderer = _dereq_(7);
+
+var _general = _dereq_(16);
+
+var _constants = _dereq_(15);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Native HTML5 Renderer
+ *
+ * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement.
+ */
+var HtmlMediaElement = {
+
+	name: 'html5',
+
+	options: {
+		prefix: 'html5'
+	},
+
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {String}
+  */
+	canPlayType: function canPlayType(type) {
+
+		var mediaElement = _document2.default.createElement('video');
+
+		// Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS;
+		// also consider URLs that might have obfuscated URLs
+		if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
+			return 'yes';
+		} else if (mediaElement.canPlayType) {
+			return mediaElement.canPlayType(type).replace(/no/, '');
+		} else {
+			return '';
+		}
+	},
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var id = mediaElement.id + '_' + options.prefix;
+
+		var node = null;
+
+		// CREATE NODE
+		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
+			node = _document2.default.createElement('audio');
+			mediaElement.appendChild(node);
+		} else {
+			node = mediaElement.originalNode;
+		}
+
+		node.setAttribute('id', id);
+
+		// WRAPPERS for PROPs
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			node['get' + capName] = function () {
+				return node[propName];
+			};
+
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					node[propName] = value;
+				}
+			};
+		};
+
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
+
+		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+		    assignEvents = function assignEvents(eventName) {
+
+			node.addEventListener(eventName, function (e) {
+				// copy event
+
+				var event = _document2.default.createEvent('HTMLEvents');
+				event.initEvent(e.type, e.bubbles, e.cancelable);
+				mediaElement.dispatchEvent(event);
+			});
+		};
+
+		for (var _i = 0, _total = events.length; _i < _total; _i++) {
+			assignEvents(events[_i]);
+		}
+
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
+		};
+
+		node.hide = function () {
+			node.style.display = 'none';
+
+			return node;
+		};
+
+		node.show = function () {
+			node.style.display = '';
+
+			return node;
+		};
+
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
+			}
+		}
+
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
+
+		return node;
+	}
 };
 
-/*
-Utility methods
-*/
-mejs.Utility = {
-	encodeUrl: function(url) {
-		return encodeURIComponent(url); //.replace(/\?/gi,'%3F').replace(/=/gi,'%3D').replace(/&/gi,'%26');
+_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
+
+_renderer.renderer.add(HtmlMediaElement);
+
+},{"15":15,"16":16,"2":2,"3":3,"6":6,"7":7}],14:[function(_dereq_,module,exports){
+'use strict';
+
+var _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; };
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _renderer = _dereq_(7);
+
+var _general = _dereq_(16);
+
+var _media = _dereq_(17);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * YouTube renderer
+ *
+ * Uses <iframe> approach and uses YouTube API to manipulate it.
+ * Note: IE6-7 don't have postMessage so don't support <iframe> API, and IE8 doesn't fire the onReady event,
+ * so it doesn't work - not sure if Google problem or not.
+ * @see https://developers.google.com/youtube/iframe_api_reference
+ */
+var YouTubeApi = {
+	/**
+  * @type {Boolean}
+  */
+	isIframeStarted: false,
+	/**
+  * @type {Boolean}
+  */
+	isIframeLoaded: false,
+	/**
+  * @type {Array}
+  */
+	iframeQueue: [],
+
+	/**
+  * Create a queue to prepare the creation of <iframe>
+  *
+  * @param {Object} settings - an object with settings needed to create <iframe>
+  */
+	enqueueIframe: function enqueueIframe(settings) {
+
+		// Check whether YouTube API is already loaded.
+		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
+
+		if (YouTubeApi.isLoaded) {
+			YouTubeApi.createIframe(settings);
+		} else {
+			YouTubeApi.loadIframeApi();
+			YouTubeApi.iframeQueue.push(settings);
+		}
+	},
+
+	/**
+  * Load YouTube API script on the header of the document
+  *
+  */
+	loadIframeApi: function loadIframeApi() {
+		if (!YouTubeApi.isIframeStarted) {
+			var tag = _document2.default.createElement('script');
+			tag.src = '//www.youtube.com/player_api';
+			var firstScriptTag = _document2.default.getElementsByTagName('script')[0];
+			firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
+			YouTubeApi.isIframeStarted = true;
+		}
 	},
-	escapeHTML: function(s) {
-		return s.toString().split('&').join('&amp;').split('<').join('&lt;').split('"').join('&quot;');
+
+	/**
+  * Process queue of YouTube <iframe> element creation
+  *
+  */
+	iFrameReady: function iFrameReady() {
+
+		YouTubeApi.isLoaded = true;
+		YouTubeApi.isIframeLoaded = true;
+
+		while (YouTubeApi.iframeQueue.length > 0) {
+			var settings = YouTubeApi.iframeQueue.pop();
+			YouTubeApi.createIframe(settings);
+		}
 	},
-	absolutizeUrl: function(url) {
-		var el = document.createElement('div');
-		el.innerHTML = '<a href="' + this.escapeHTML(url) + '">x</a>';
-		return el.firstChild.href;
+
+	/**
+  * Create a new instance of YouTube API player and trigger a custom event to initialize it
+  *
+  * @param {Object} settings - an object with settings needed to create <iframe>
+  */
+	createIframe: function createIframe(settings) {
+		return new YT.Player(settings.containerId, settings);
 	},
-	getScriptPath: function(scriptNames) {
-		var
-			i = 0,
-			j,
-			codePath = '',
-			testname = '',
-			slashPos,
-			filenamePos,
-			scriptUrl,
-			scriptPath,			
-			scriptFilename,
-			scripts = document.getElementsByTagName('script'),
-			il = scripts.length,
-			jl = scriptNames.length;
-			
-		// go through all <script> tags
-		for (; i < il; i++) {
-			scriptUrl = scripts[i].src;
-			slashPos = scriptUrl.lastIndexOf('/');
-			if (slashPos > -1) {
-				scriptFilename = scriptUrl.substring(slashPos + 1);
-				scriptPath = scriptUrl.substring(0, slashPos + 1);
-			} else {
-				scriptFilename = scriptUrl;
-				scriptPath = '';			
-			}
-			
-			// see if any <script> tags have a file name that matches the 
-			for (j = 0; j < jl; j++) {
-				testname = scriptNames[j];
-				filenamePos = scriptFilename.indexOf(testname);
-				if (filenamePos > -1) {
-					codePath = scriptPath;
-					break;
-				}
+
+	/**
+  * Extract ID from YouTube's URL to be loaded through API
+  * Valid URL format(s):
+  * - http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
+  * - http://www.youtube.com/v/VIDEO_ID?version=3
+  * - http://youtu.be/Djd6tPrxc08
+  * - http://www.youtube-nocookie.com/watch?feature=player_embedded&v=yyWWXSwtPP0
+  *
+  * @param {String} url
+  * @return {string}
+  */
+	getYouTubeId: function getYouTubeId(url) {
+
+		var youTubeId = '';
+
+		if (url.indexOf('?') > 0) {
+			// assuming: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
+			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
+
+			// if it's http://www.youtube.com/v/VIDEO_ID?version=3
+			if (youTubeId === '') {
+				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
 			}
-			
-			// if we found a path, then break and return it
-			if (codePath !== '') {
+		} else {
+			youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
+		}
+
+		return youTubeId;
+	},
+
+	/**
+  * Get ID from URL with format: http://www.youtube.com/watch?feature=player_embedded&v=yyWWXSwtPP0
+  *
+  * @param {String} url
+  * @returns {string}
+  */
+	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
+
+		if (url === undefined || url === null || !url.trim().length) {
+			return null;
+		}
+
+		var parts = url.split('?'),
+		    parameters = parts[1].split('&');
+
+		var youTubeId = '';
+
+		for (var i = 0, total = parameters.length; i < total; i++) {
+			var paramParts = parameters[i].split('=');
+			if (paramParts[0] === 'v') {
+				youTubeId = paramParts[1];
 				break;
 			}
 		}
-		
-		// send the best path back
-		return codePath;
-	},
-	secondsToTimeCode: function(time, forceHours, showFrameCount, fps) {
-		//add framecount
-		if (typeof showFrameCount == 'undefined') {
-		    showFrameCount=false;
-		} else if(typeof fps == 'undefined') {
-		    fps = 25;
-		}
-	
-		var hours = Math.floor(time / 3600) % 24,
-			minutes = Math.floor(time / 60) % 60,
-			seconds = Math.floor(time % 60),
-			frames = Math.floor(((time % 1)*fps).toFixed(3)),
-			result = 
-					( (forceHours || hours > 0) ? (hours < 10 ? '0' + hours : hours) + ':' : '')
-						+ (minutes < 10 ? '0' + minutes : minutes) + ':'
-						+ (seconds < 10 ? '0' + seconds : seconds)
-						+ ((showFrameCount) ? ':' + (frames < 10 ? '0' + frames : frames) : '');
-	
-		return result;
+
+		return youTubeId;
 	},
-	
-	timeCodeToSeconds: function(hh_mm_ss_ff, forceHours, showFrameCount, fps){
-		if (typeof showFrameCount == 'undefined') {
-		    showFrameCount=false;
-		} else if(typeof fps == 'undefined') {
-		    fps = 25;
-		}
-	
-		var tc_array = hh_mm_ss_ff.split(":"),
-			tc_hh = parseInt(tc_array[0], 10),
-			tc_mm = parseInt(tc_array[1], 10),
-			tc_ss = parseInt(tc_array[2], 10),
-			tc_ff = 0,
-			tc_in_seconds = 0;
-		
-		if (showFrameCount) {
-		    tc_ff = parseInt(tc_array[3])/fps;
-		}
-		
-		tc_in_seconds = ( tc_hh * 3600 ) + ( tc_mm * 60 ) + tc_ss + tc_ff;
-		
-		return tc_in_seconds;
+
+	/**
+  * Get ID from URL with formats
+  *  - http://www.youtube.com/v/VIDEO_ID?version=3
+  *  - http://youtu.be/Djd6tPrxc08
+  * @param {String} url
+  * @return {?String}
+  */
+	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
+
+		if (url === undefined || url === null || !url.trim().length) {
+			return null;
+		}
+
+		var parts = url.split('?');
+		url = parts[0];
+		return url.substring(url.lastIndexOf('/') + 1);
 	},
-	
 
-	convertSMPTEtoSeconds: function (SMPTE) {
-		if (typeof SMPTE != 'string') 
-			return false;
+	/**
+  * Inject `no-cookie` element to URL. Only works with format: http://www.youtube.com/v/VIDEO_ID?version=3
+  * @param {String} url
+  * @return {?String}
+  */
+	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
+		if (url === undefined || url === null || !url.trim().length || !url.includes('//www.youtube')) {
+			return url;
+		}
 
-		SMPTE = SMPTE.replace(',', '.');
-		
-		var secs = 0,
-			decimalLen = (SMPTE.indexOf('.') != -1) ? SMPTE.split('.')[1].length : 0,
-			multiplier = 1;
-		
-		SMPTE = SMPTE.split(':').reverse();
-		
-		for (var i = 0; i < SMPTE.length; i++) {
-			multiplier = 1;
-			if (i > 0) {
-				multiplier = Math.pow(60, i); 
-			}
-			secs += Number(SMPTE[i]) * multiplier;
-		}
-		return Number(secs.toFixed(decimalLen));
-	},	
-	
-	/* borrowed from SWFObject: http://code.google.com/p/swfobject/source/browse/trunk/swfobject/src/swfobject.js#474 */
-	removeSwf: function(id) {
-		var obj = document.getElementById(id);
-		if (obj && /object|embed/i.test(obj.nodeName)) {
-			if (mejs.MediaFeatures.isIE) {
-				obj.style.display = "none";
-				(function(){
-					if (obj.readyState == 4) {
-						mejs.Utility.removeObjectInIE(id);
-					} else {
-						setTimeout(arguments.callee, 10);
-					}
-				})();
-			} else {
-				obj.parentNode.removeChild(obj);
-			}
+		var parts = url.split('/');
+		parts[2] = parts[2].replace('.com', '-nocookie.com');
+		return parts.join('/');
+	}
+};
+
+var YouTubeIframeRenderer = {
+	name: 'youtube_iframe',
+
+	options: {
+		prefix: 'youtube_iframe',
+		/**
+   * Custom configuration for YouTube player
+   *
+   * @see https://developers.google.com/youtube/player_parameters#Parameters
+   * @type {Object}
+   */
+		youtube: {
+			autoplay: 0,
+			controls: 0,
+			disablekb: 1,
+			end: 0,
+			loop: 0,
+			modestbranding: 0,
+			playsinline: 0,
+			rel: 0,
+			showinfo: 0,
+			start: 0,
+			iv_load_policy: 3,
+			// custom to inject `-nocookie` element in URL
+			nocookie: false
 		}
 	},
-	removeObjectInIE: function(id) {
-		var obj = document.getElementById(id);
-		if (obj) {
-			for (var i in obj) {
-				if (typeof obj[i] == "function") {
-					obj[i] = null;
+
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {Boolean}
+  */
+	canPlayType: function canPlayType(type) {
+		return ['video/youtube', 'video/x-youtube'].includes(type);
+	},
+
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		// API objects
+		var youtube = {},
+		    apiStack = [],
+		    readyState = 4;
+
+		var youTubeApi = null,
+		    paused = true,
+		    ended = false,
+		    youTubeIframe = null,
+		    volume = 1;
+
+		youtube.options = options;
+		youtube.id = mediaElement.id + '_' + options.prefix;
+		youtube.mediaElement = mediaElement;
+
+		// wrappers for get/set
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+
+			// add to flash state that we will store
+
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			youtube['get' + capName] = function () {
+				if (youTubeApi !== null) {
+					var value = null;
+
+					// figure out how to get youtube dta here
+
+					var _ret = function () {
+						switch (propName) {
+							case 'currentTime':
+								return {
+									v: youTubeApi.getCurrentTime()
+								};
+
+							case 'duration':
+								return {
+									v: youTubeApi.getDuration()
+								};
+
+							case 'volume':
+								volume = youTubeApi.getVolume() / 100;
+								return {
+									v: volume
+								};
+
+							case 'paused':
+								return {
+									v: paused
+								};
+
+							case 'ended':
+								return {
+									v: ended
+								};
+
+							case 'muted':
+								return {
+									v: youTubeApi.isMuted()
+								};
+
+							case 'buffered':
+								var percentLoaded = youTubeApi.getVideoLoadedFraction(),
+								    duration = youTubeApi.getDuration();
+								return {
+									v: {
+										start: function start() {
+											return 0;
+										},
+										end: function end() {
+											return percentLoaded * duration;
+										},
+										length: 1
+									}
+								};
+							case 'src':
+								return {
+									v: youTubeApi.getVideoUrl()
+								};
+
+							case 'readyState':
+								return {
+									v: readyState
+								};
+						}
+					}();
+
+					if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
+					return value;
+				} else {
+					return null;
 				}
-			}
-			obj.parentNode.removeChild(obj);
-		}		
-	}
-};
+			};
 
+			youtube['set' + capName] = function (value) {
 
-// Core detector, plugins are added below
-mejs.PluginDetector = {
+				if (youTubeApi !== null) {
 
-	// main public function to test a plug version number PluginDetector.hasPluginVersion('flash',[9,0,125]);
-	hasPluginVersion: function(plugin, v) {
-		var pv = this.plugins[plugin];
-		v[1] = v[1] || 0;
-		v[2] = v[2] || 0;
-		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])) ? true : false;
-	},
+					// do something
+					switch (propName) {
 
-	// cached values
-	nav: window.navigator,
-	ua: window.navigator.userAgent.toLowerCase(),
+						case 'src':
+							var url = typeof value === 'string' ? value : value[0].src,
+							    _videoId = YouTubeApi.getYouTubeId(url);
 
-	// stored version numbers
-	plugins: [],
+							if (mediaElement.originalNode.autoplay) {
+								youTubeApi.loadVideoById(_videoId);
+							} else {
+								youTubeApi.cueVideoById(_videoId);
+							}
+							break;
 
-	// runs detectPlugin() and stores the version number
-	addPlugin: function(p, pluginName, mimeType, activeX, axDetect) {
-		this.plugins[p] = this.detectPlugin(pluginName, mimeType, activeX, axDetect);
-	},
+						case 'currentTime':
+							youTubeApi.seekTo(value);
+							break;
+
+						case 'muted':
+							if (value) {
+								youTubeApi.mute();
+							} else {
+								youTubeApi.unMute();
+							}
+							setTimeout(function () {
+								var event = (0, _general.createEvent)('volumechange', youtube);
+								mediaElement.dispatchEvent(event);
+							}, 50);
+							break;
+
+						case 'volume':
+							volume = value;
+							youTubeApi.setVolume(value * 100);
+							setTimeout(function () {
+								var event = (0, _general.createEvent)('volumechange', youtube);
+								mediaElement.dispatchEvent(event);
+							}, 50);
+							break;
+						case 'readyState':
+							var event = (0, _general.createEvent)('canplay', youtube);
+							mediaElement.dispatchEvent(event);
+							break;
+
+						default:
+							
+							break;
+					}
+				} else {
+					// store for after "READY" event fires
+					apiStack.push({ type: 'set', propName: propName, value: value });
+				}
+			};
+		};
 
-	// get the version number from the mimetype (all but IE) or ActiveX (IE)
-	detectPlugin: function(pluginName, mimeType, activeX, axDetect) {
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
 
-		var version = [0,0,0],
-			description,
-			i,
-			ax;
+		// add wrappers for native methods
+		var methods = _mejs2.default.html5media.methods,
+		    assignMethods = function assignMethods(methodName) {
 
-		// Firefox, Webkit, Opera
-		if (typeof(this.nav.plugins) != 'undefined' && typeof this.nav.plugins[pluginName] == 'object') {
-			description = this.nav.plugins[pluginName].description;
-			if (description && !(typeof this.nav.mimeTypes != 'undefined' && this.nav.mimeTypes[mimeType] && !this.nav.mimeTypes[mimeType].enabledPlugin)) {
-				version = description.replace(pluginName, '').replace(/^\s+/,'').replace(/\sr/gi,'.').split('.');
-				for (i=0; i<version.length; i++) {
-					version[i] = parseInt(version[i].match(/\d+/), 10);
+			// run the method on the native HTMLMediaElement
+			youtube[methodName] = function () {
+
+				if (youTubeApi !== null) {
+
+					// DO method
+					switch (methodName) {
+						case 'play':
+							paused = false;
+							return youTubeApi.playVideo();
+						case 'pause':
+							paused = true;
+							return youTubeApi.pauseVideo();
+						case 'load':
+							return null;
+
+					}
+				} else {
+					apiStack.push({ type: 'call', methodName: methodName });
 				}
-			}
-		// Internet Explorer / ActiveX
-		} else if (typeof(window.ActiveXObject) != 'undefined') {
-			try {
-				ax = new ActiveXObject(activeX);
-				if (ax) {
-					version = axDetect(ax);
+			};
+		};
+
+		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
+			assignMethods(methods[_i]);
+		}
+
+		// CREATE YouTube
+		var youtubeContainer = _document2.default.createElement('div');
+		youtubeContainer.id = youtube.id;
+
+		// If `nocookie` feature was enabled, modify original URL
+		if (youtube.options.youtube.nocookie) {
+			mediaElement.originalNode.setAttribute('src', YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src));
+		}
+
+		mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
+		mediaElement.originalNode.style.display = 'none';
+
+		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
+		    height = isAudio ? '0' : mediaElement.originalNode.height,
+		    width = isAudio ? '0' : mediaElement.originalNode.width,
+		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
+		    youtubeSettings = {
+			id: youtube.id,
+			containerId: youtubeContainer.id,
+			videoId: videoId,
+			height: height,
+			width: width,
+			playerVars: Object.assign({
+				controls: 0,
+				rel: 0,
+				disablekb: 1,
+				showinfo: 0,
+				modestbranding: 0,
+				html5: 1,
+				playsinline: 0,
+				start: 0,
+				end: 0,
+				iv_load_policy: 3
+			}, youtube.options.youtube),
+			origin: _window2.default.location.host,
+			events: {
+				onReady: function onReady(e) {
+					mediaElement.youTubeApi = youTubeApi = e.target;
+					mediaElement.youTubeState = {
+						paused: true,
+						ended: false
+					};
+
+					// do call stack
+					if (apiStack.length) {
+						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
+
+							var stackItem = apiStack[_i2];
+
+							if (stackItem.type === 'set') {
+								var propName = stackItem.propName,
+								    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+								youtube['set' + capName](stackItem.value);
+							} else if (stackItem.type === 'call') {
+								youtube[stackItem.methodName]();
+							}
+						}
+					}
+
+					// a few more events
+					youTubeIframe = youTubeApi.getIframe();
+
+					var events = ['mouseover', 'mouseout'],
+					    assignEvents = function assignEvents(e) {
+
+						var newEvent = (0, _general.createEvent)(e.type, youtube);
+						mediaElement.dispatchEvent(newEvent);
+					};
+
+					for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
+						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
+					}
+
+					// send init events
+					var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay'];
+
+					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
+						var event = (0, _general.createEvent)(initEvents[_i4], youtube);
+						mediaElement.dispatchEvent(event);
+					}
+				},
+				onStateChange: function onStateChange(e) {
+
+					// translate events
+					var events = [];
+
+					switch (e.data) {
+						case -1:
+							// not started
+							events = ['loadedmetadata'];
+							paused = true;
+							ended = false;
+							break;
+
+						case 0:
+							// YT.PlayerState.ENDED
+							events = ['ended'];
+							paused = false;
+							ended = true;
+
+							youtube.stopInterval();
+							break;
+
+						case 1:
+							// YT.PlayerState.PLAYING
+							events = ['play', 'playing'];
+							paused = false;
+							ended = false;
+
+							youtube.startInterval();
+
+							break;
+
+						case 2:
+							// YT.PlayerState.PAUSED
+							events = ['pause'];
+							paused = true;
+							ended = false;
+
+							youtube.stopInterval();
+							break;
+
+						case 3:
+							// YT.PlayerState.BUFFERING
+							events = ['progress'];
+							ended = false;
+
+							break;
+						case 5:
+							// YT.PlayerState.CUED
+							events = ['loadeddata', 'loadedmetadata', 'canplay'];
+							paused = true;
+							ended = false;
+
+							break;
+					}
+
+					// send events up
+					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
+						var event = (0, _general.createEvent)(events[_i5], youtube);
+						mediaElement.dispatchEvent(event);
+					}
+				},
+				onError: function onError(e) {
+					var event = (0, _general.createEvent)('error', youtube);
+					event.data = e.data;
+					mediaElement.dispatchEvent(event);
 				}
 			}
-			catch (e) { }
+		};
+
+		// The following will prevent that in mobile devices, YouTube is displayed in fullscreen when using audio
+		if (isAudio) {
+			youtubeSettings.playerVars.playsinline = 1;
 		}
-		return version;
-	}
-};
 
-// Add Flash detection
-mejs.PluginDetector.addPlugin('flash','Shockwave Flash','application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash', function(ax) {
-	// adapted from SWFObject
-	var version = [],
-		d = ax.GetVariable("$version");
-	if (d) {
-		d = d.split(" ")[1].split(",");
-		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
-	}
-	return version;
-});
+		// send it off for async loading and creation
+		YouTubeApi.enqueueIframe(youtubeSettings);
 
-// Add Silverlight detection
-mejs.PluginDetector.addPlugin('silverlight','Silverlight Plug-In','application/x-silverlight-2','AgControl.AgControl', function (ax) {
-	// Silverlight cannot report its version number to IE
-	// but it does have a isVersionSupported function, so we have to loop through it to get a version number.
-	// adapted from http://www.silverlightversion.com/
-	var v = [0,0,0,0],
-		loopMatch = function(ax, v, i, n) {
-			while(ax.isVersionSupported(v[0]+ "."+ v[1] + "." + v[2] + "." + v[3])){
-				v[i]+=n;
+		youtube.onEvent = function (eventName, player, _youTubeState) {
+			if (_youTubeState !== null && _youTubeState !== undefined) {
+				mediaElement.youTubeState = _youTubeState;
 			}
-			v[i] -= n;
 		};
-	loopMatch(ax, v, 0, 1);
-	loopMatch(ax, v, 1, 1);
-	loopMatch(ax, v, 2, 10000); // the third place in the version number is usually 5 digits (4.0.xxxxx)
-	loopMatch(ax, v, 2, 1000);
-	loopMatch(ax, v, 2, 100);
-	loopMatch(ax, v, 2, 10);
-	loopMatch(ax, v, 2, 1);
-	loopMatch(ax, v, 3, 1);
-
-	return v;
-});
-// add adobe acrobat
-/*
-PluginDetector.addPlugin('acrobat','Adobe Acrobat','application/pdf','AcroPDF.PDF', function (ax) {
-	var version = [],
-		d = ax.GetVersions().split(',')[0].split('=')[1].split('.');
 
-	if (d) {
-		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
-	}
-	return version;
-});
-*/
-// necessary detection (fixes for <IE9)
-mejs.MediaFeatures = {
-	init: function() {
-		var
-			t = this,
-			d = document,
-			nav = mejs.PluginDetector.nav,
-			ua = mejs.PluginDetector.ua.toLowerCase(),
-			i,
-			v,
-			html5Elements = ['source','track','audio','video'];
-
-		// detect browsers (only the ones that have some kind of quirk we need to work around)
-		t.isiPad = (ua.match(/ipad/i) !== null);
-		t.isiPhone = (ua.match(/iphone/i) !== null);
-		t.isiOS = t.isiPhone || t.isiPad;
-		t.isAndroid = (ua.match(/android/i) !== null);
-		t.isBustedAndroid = (ua.match(/android 2\.[12]/) !== null);
-		t.isBustedNativeHTTPS = (location.protocol === 'https:' && (ua.match(/android [12]\./) !== null || ua.match(/macintosh.* version.* safari/) !== null));
-		t.isIE = (nav.appName.toLowerCase().indexOf("microsoft") != -1 || nav.appName.toLowerCase().match(/trident/gi) !== null);
-		t.isChrome = (ua.match(/chrome/gi) !== null);
-		t.isChromium = (ua.match(/chromium/gi) !== null);
-		t.isFirefox = (ua.match(/firefox/gi) !== null);
-		t.isWebkit = (ua.match(/webkit/gi) !== null);
-		t.isGecko = (ua.match(/gecko/gi) !== null) && !t.isWebkit && !t.isIE;
-		t.isOpera = (ua.match(/opera/gi) !== null);
-		t.hasTouch = ('ontouchstart' in window); //  && window.ontouchstart != null); // this breaks iOS 7
-		
-		// borrowed from Modernizr
-		t.svg = !! document.createElementNS &&
-				!! document.createElementNS('http://www.w3.org/2000/svg','svg').createSVGRect;
-
-		// create HTML5 media elements for IE before 9, get a <video> element for fullscreen detection
-		for (i=0; i<html5Elements.length; i++) {
-			v = document.createElement(html5Elements[i]);
-		}
-		
-		t.supportsMediaTag = (typeof v.canPlayType !== 'undefined' || t.isBustedAndroid);
-
-		// Fix for IE9 on Windows 7N / Windows 7KN (Media Player not installer)
-		try{
-			v.canPlayType("video/mp4");
-		}catch(e){
-			t.supportsMediaTag = false;
-		}
-
-		// detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
-		
-		// iOS
-		t.hasSemiNativeFullScreen = (typeof v.webkitEnterFullscreen !== 'undefined');
-		
-		// W3C
-		t.hasNativeFullscreen = (typeof v.requestFullscreen !== 'undefined');
-		
-		// webkit/firefox/IE11+
-		t.hasWebkitNativeFullScreen = (typeof v.webkitRequestFullScreen !== 'undefined');
-		t.hasMozNativeFullScreen = (typeof v.mozRequestFullScreen !== 'undefined');
-		t.hasMsNativeFullScreen = (typeof v.msRequestFullscreen !== 'undefined');
-		
-		t.hasTrueNativeFullScreen = (t.hasWebkitNativeFullScreen || t.hasMozNativeFullScreen || t.hasMsNativeFullScreen);
-		t.nativeFullScreenEnabled = t.hasTrueNativeFullScreen;
-		
-		// Enabled?
-		if (t.hasMozNativeFullScreen) {
-			t.nativeFullScreenEnabled = document.mozFullScreenEnabled;
-		} else if (t.hasMsNativeFullScreen) {
-			t.nativeFullScreenEnabled = document.msFullscreenEnabled;		
-		}
-		
-		if (t.isChrome) {
-			t.hasSemiNativeFullScreen = false;
-		}
-		
-		if (t.hasTrueNativeFullScreen) {
-			
-			t.fullScreenEventName = '';
-			if (t.hasWebkitNativeFullScreen) { 
-				t.fullScreenEventName = 'webkitfullscreenchange';
-				
-			} else if (t.hasMozNativeFullScreen) {
-				t.fullScreenEventName = 'mozfullscreenchange';
-				
-			} else if (t.hasMsNativeFullScreen) {
-				t.fullScreenEventName = 'MSFullscreenChange';
+		youtube.setSize = function (width, height) {
+			if (youTubeApi !== null) {
+				youTubeApi.setSize(width, height);
 			}
-			
-			t.isFullScreen = function() {
-				if (t.hasMozNativeFullScreen) {
-					return d.mozFullScreen;
-				
-				} else if (t.hasWebkitNativeFullScreen) {
-					return d.webkitIsFullScreen;
-				
-				} else if (t.hasMsNativeFullScreen) {
-					return d.msFullscreenElement !== null;
-				}
+		};
+		youtube.hide = function () {
+			youtube.stopInterval();
+			youtube.pause();
+			if (youTubeIframe) {
+				youTubeIframe.style.display = 'none';
 			}
-					
-			t.requestFullScreen = function(el) {
-		
-				if (t.hasWebkitNativeFullScreen) {
-					el.webkitRequestFullScreen();
-					
-				} else if (t.hasMozNativeFullScreen) {
-					el.mozRequestFullScreen();
+		};
+		youtube.show = function () {
+			if (youTubeIframe) {
+				youTubeIframe.style.display = '';
+			}
+		};
+		youtube.destroy = function () {
+			youTubeApi.destroy();
+		};
+		youtube.interval = null;
 
-				} else if (t.hasMsNativeFullScreen) {
-					el.msRequestFullscreen();
+		youtube.startInterval = function () {
+			// create timer
+			youtube.interval = setInterval(function () {
 
-				}
+				var event = (0, _general.createEvent)('timeupdate', youtube);
+				mediaElement.dispatchEvent(event);
+			}, 250);
+		};
+		youtube.stopInterval = function () {
+			if (youtube.interval) {
+				clearInterval(youtube.interval);
 			}
-			
-			t.cancelFullScreen = function() {				
-				if (t.hasWebkitNativeFullScreen) {
-					document.webkitCancelFullScreen();
-					
-				} else if (t.hasMozNativeFullScreen) {
-					document.mozCancelFullScreen();
-					
-				} else if (t.hasMsNativeFullScreen) {
-					document.msExitFullscreen();
-					
-				}
-			}	
-			
-		}
-		
-		
-		// OS X 10.5 can't do this even if it says it can :(
-		if (t.hasSemiNativeFullScreen && ua.match(/mac os x 10_5/i)) {
-			t.hasNativeFullScreen = false;
-			t.hasSemiNativeFullScreen = false;
-		}
-		
+		};
+
+		return youtube;
 	}
 };
-mejs.MediaFeatures.init();
 
-/*
-extension methods to <video> or <audio> object to bring it into parity with PluginMediaElement (see below)
-*/
-mejs.HtmlMediaElement = {
-	pluginType: 'native',
-	isFullScreen: false,
+if (_window2.default.postMessage && _typeof(_window2.default.addEventListener)) {
 
-	setCurrentTime: function (time) {
-		this.currentTime = time;
-	},
+	_window2.default.onYouTubePlayerAPIReady = function () {
+		YouTubeApi.iFrameReady();
+	};
 
-	setMuted: function (muted) {
-		this.muted = muted;
-	},
+	_media.typeChecks.push(function (url) {
+		url = url.toLowerCase();
+		return url.includes('//www.youtube') || url.includes('//youtu.be') ? 'video/x-youtube' : null;
+	});
 
-	setVolume: function (volume) {
-		this.volume = volume;
-	},
+	_renderer.renderer.add(YouTubeIframeRenderer);
+}
 
-	// for parity with the plugin versions
-	stop: function () {
-		this.pause();
-	},
+},{"16":16,"17":17,"2":2,"3":3,"6":6,"7":7}],15:[function(_dereq_,module,exports){
+'use strict';
 
-	// This can be a url string
-	// or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}]
-	setSrc: function (url) {
-		
-		// Fix for IE9 which can't set .src when there are <source> elements. Awesome, right?
-		var 
-			existingSources = this.getElementsByTagName('source');
-		while (existingSources.length > 0){
-			this.removeChild(existingSources[0]);
-		}
-	
-		if (typeof url == 'string') {
-			this.src = url;
-		} else {
-			var i, media;
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.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_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_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
 
-			for (i=0; i<url.length; i++) {
-				media = url[i];
-				if (this.canPlayType(media.type)) {
-					this.src = media.src;
-					break;
-				}
-			}
-		}
-	},
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var NAV = exports.NAV = _window2.default.navigator;
+var UA = exports.UA = NAV.userAgent.toLowerCase();
 
-	setVideoSize: function (width, height) {
-		this.width = width;
-		this.height = height;
+var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null;
+var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null;
+var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD;
+var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null;
+var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null;
+var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
+var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null;
+var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null;
+var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME;
+var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null;
+
+var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
+var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
+	var element = _document2.default.createElement('x'),
+	    documentElement = _document2.default.documentElement,
+	    getComputedStyle = _window2.default.getComputedStyle;
+
+	if (!('pointerEvents' in element.style)) {
+		return false;
 	}
-};
 
-/*
-Mimics the <video/audio> element by calling Flash's External Interface or Silverlights [ScriptableMember]
-*/
-mejs.PluginMediaElement = function (pluginid, pluginType, mediaUrl) {
-	this.id = pluginid;
-	this.pluginType = pluginType;
-	this.src = mediaUrl;
-	this.events = {};
-	this.attributes = {};
-};
+	element.style.pointerEvents = 'auto';
+	element.style.pointerEvents = 'x';
+	documentElement.appendChild(element);
+	var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
+	element.remove();
+	return !!supports;
+}();
 
-// JavaScript values and ExternalInterface methods that match HTML5 video properties methods
-// http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html
-// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html
-mejs.PluginMediaElement.prototype = {
-
-	// special
-	pluginElement: null,
-	pluginType: '',
-	isFullScreen: false,
-
-	// not implemented :(
-	playbackRate: -1,
-	defaultPlaybackRate: -1,
-	seekable: [],
-	played: [],
-
-	// HTML5 read-only properties
-	paused: true,
-	ended: false,
-	seeking: false,
-	duration: 0,
-	error: null,
-	tagName: '',
-
-	// HTML5 get/set properties, but only set (updated by event handlers)
-	muted: false,
-	volume: 1,
-	currentTime: 0,
-
-	// HTML5 methods
-	play: function () {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-				this.pluginApi.playVideo();
-			} else {
-				this.pluginApi.playMedia();
-			}
-			this.paused = false;
-		}
-	},
-	load: function () {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-			} else {
-				this.pluginApi.loadMedia();
-			}
-			
-			this.paused = false;
-		}
-	},
-	pause: function () {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-				this.pluginApi.pauseVideo();
-			} else {
-				this.pluginApi.pauseMedia();
-			}			
-			
-			
-			this.paused = true;
+// for IE
+var html5Elements = ['source', 'track', 'audio', 'video'];
+var video = void 0;
+
+for (var i = 0, total = html5Elements.length; i < total; i++) {
+	video = _document2.default.createElement(html5Elements[i]);
+}
+
+// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge)
+var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null;
+
+// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
+
+// iOS
+var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
+
+// W3C
+var hasNativeFullscreen = video.requestFullscreen !== undefined;
+
+// OS X 10.5 can't do this even if it says it can :(
+if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) {
+	hasNativeFullscreen = false;
+	hasiOSFullScreen = false;
+}
+
+// webkit/firefox/IE11+
+var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
+var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
+var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
+
+var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
+var nativeFullScreenEnabled = hasTrueNativeFullScreen;
+var fullScreenEventName = '';
+var isFullScreen = void 0,
+    requestFullScreen = void 0,
+    cancelFullScreen = void 0;
+
+// Enabled?
+if (hasMozNativeFullScreen) {
+	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
+} else if (hasMsNativeFullScreen) {
+	nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
+}
+
+if (IS_CHROME) {
+	hasiOSFullScreen = false;
+}
+
+if (hasTrueNativeFullScreen) {
+
+	if (hasWebkitNativeFullScreen) {
+		fullScreenEventName = 'webkitfullscreenchange';
+	} else if (hasMozNativeFullScreen) {
+		fullScreenEventName = 'mozfullscreenchange';
+	} else if (hasMsNativeFullScreen) {
+		fullScreenEventName = 'MSFullscreenChange';
+	}
+
+	exports.isFullScreen = isFullScreen = function isFullScreen() {
+		if (hasMozNativeFullScreen) {
+			return _document2.default.mozFullScreen;
+		} else if (hasWebkitNativeFullScreen) {
+			return _document2.default.webkitIsFullScreen;
+		} else if (hasMsNativeFullScreen) {
+			return _document2.default.msFullscreenElement !== null;
 		}
-	},
-	stop: function () {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-				this.pluginApi.stopVideo();
-			} else {
-				this.pluginApi.stopMedia();
-			}	
-			this.paused = true;
+	};
+
+	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
+
+		if (hasWebkitNativeFullScreen) {
+			el.webkitRequestFullScreen();
+		} else if (hasMozNativeFullScreen) {
+			el.mozRequestFullScreen();
+		} else if (hasMsNativeFullScreen) {
+			el.msRequestFullscreen();
 		}
-	},
-	canPlayType: function(type) {
-		var i,
-			j,
-			pluginInfo,
-			pluginVersions = mejs.plugins[this.pluginType];
-
-		for (i=0; i<pluginVersions.length; i++) {
-			pluginInfo = pluginVersions[i];
-
-			// test if user has the correct plugin version
-			if (mejs.PluginDetector.hasPluginVersion(this.pluginType, pluginInfo.version)) {
-
-				// test for plugin playback types
-				for (j=0; j<pluginInfo.types.length; j++) {
-					// find plugin that can play the type
-					if (type == pluginInfo.types[j]) {
-						return 'probably';
-					}
-				}
-			}
+	};
+
+	exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
+		if (hasWebkitNativeFullScreen) {
+			_document2.default.webkitCancelFullScreen();
+		} else if (hasMozNativeFullScreen) {
+			_document2.default.mozCancelFullScreen();
+		} else if (hasMsNativeFullScreen) {
+			_document2.default.msExitFullscreen();
 		}
+	};
+}
 
-		return '';
-	},
-	
-	positionFullscreenButton: function(x,y,visibleAndAbove) {
-		if (this.pluginApi != null && this.pluginApi.positionFullscreenButton) {
-			this.pluginApi.positionFullscreenButton(Math.floor(x),Math.floor(y),visibleAndAbove);
-		}
-	},
-	
-	hideFullscreenButton: function() {
-		if (this.pluginApi != null && this.pluginApi.hideFullscreenButton) {
-			this.pluginApi.hideFullscreenButton();
-		}		
-	},	
-	
-
-	// custom methods since not all JavaScript implementations support get/set
-
-	// This can be a url string
-	// or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}]
-	setSrc: function (url) {
-		if (typeof url == 'string') {
-			this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(url));
-			this.src = mejs.Utility.absolutizeUrl(url);
-		} else {
-			var i, media;
+var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
+var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
+var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
+var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
+var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
+var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
+var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
+var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
+
+exports.isFullScreen = isFullScreen;
+exports.requestFullScreen = requestFullScreen;
+exports.cancelFullScreen = cancelFullScreen;
+
+
+_mejs2.default.Features = _mejs2.default.Features || {};
+_mejs2.default.Features.isiPad = IS_IPAD;
+_mejs2.default.Features.isiPhone = IS_IPHONE;
+_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
+_mejs2.default.Features.isAndroid = IS_ANDROID;
+_mejs2.default.Features.isIE = IS_IE;
+_mejs2.default.Features.isEdge = IS_EDGE;
+_mejs2.default.Features.isChrome = IS_CHROME;
+_mejs2.default.Features.isFirefox = IS_FIREFOX;
+_mejs2.default.Features.isSafari = IS_SAFARI;
+_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
+_mejs2.default.Features.hasMSE = HAS_MSE;
+_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
+
+_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
+_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
+_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
+_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
+_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
+_mejs2.default.Features.isFullScreen = isFullScreen;
+_mejs2.default.Features.requestFullScreen = requestFullScreen;
+_mejs2.default.Features.cancelFullScreen = cancelFullScreen;
+
+},{"2":2,"3":3,"6":6}],16:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.escapeHTML = escapeHTML;
+exports.debounce = debounce;
+exports.isObjectEmpty = isObjectEmpty;
+exports.splitEvents = splitEvents;
+exports.createEvent = createEvent;
+exports.isNodeAfter = isNodeAfter;
+exports.isString = isString;
 
-			for (i=0; i<url.length; i++) {
-				media = url[i];
-				if (this.canPlayType(media.type)) {
-					this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(media.src));
-					this.src = mejs.Utility.absolutizeUrl(url);
-					break;
-				}
-			}
-		}
+var _mejs = _dereq_(6);
 
-	},
-	setCurrentTime: function (time) {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') {
-				this.pluginApi.seekTo(time);
-			} else {
-				this.pluginApi.setCurrentTime(time);
-			}				
-			
-			
-			
-			this.currentTime = time;
-		}
-	},
-	setVolume: function (volume) {
-		if (this.pluginApi != null) {
-			// same on YouTube and MEjs
-			if (this.pluginType == 'youtube') {
-				this.pluginApi.setVolume(volume * 100);
-			} else {
-				this.pluginApi.setVolume(volume);
+var _mejs2 = _interopRequireDefault(_mejs);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ *
+ * @param {String} input
+ * @return {string}
+ */
+function escapeHTML(input) {
+
+	if (typeof input !== 'string') {
+		throw new Error('Argument passed must be a string');
+	}
+
+	var map = {
+		'&': '&amp;',
+		'<': '&lt;',
+		'>': '&gt;',
+		'"': '&quot;'
+	};
+
+	return input.replace(/[&<>"]/g, function (c) {
+		return map[c];
+	});
+}
+
+// taken from underscore
+function debounce(func, wait) {
+	var _this = this,
+	    _arguments = arguments;
+
+	var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+
+	if (typeof func !== 'function') {
+		throw new Error('First argument must be a function');
+	}
+
+	if (typeof wait !== 'number') {
+		throw new Error('Second argument must be a numeric value');
+	}
+
+	var timeout = void 0;
+	return function () {
+		var context = _this,
+		    args = _arguments;
+		var later = function later() {
+			timeout = null;
+			if (!immediate) {
+				func.apply(context, args);
 			}
-			this.volume = volume;
+		};
+		var callNow = immediate && !timeout;
+		clearTimeout(timeout);
+		timeout = setTimeout(later, wait);
+
+		if (callNow) {
+			func.apply(context, args);
 		}
-	},
-	setMuted: function (muted) {
-		if (this.pluginApi != null) {
-			if (this.pluginType == 'youtube') {
-				if (muted) {
-					this.pluginApi.mute();
-				} else {
-					this.pluginApi.unMute();
-				}
-				this.muted = muted;
-				this.dispatchEvent('volumechange');
-			} else {
-				this.pluginApi.setMuted(muted);
-			}
-			this.muted = muted;
+	};
+}
+
+/**
+ * Determine if an object contains any elements
+ *
+ * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object
+ * @param {Object} instance
+ * @return {Boolean}
+ */
+function isObjectEmpty(instance) {
+	return Object.getOwnPropertyNames(instance).length <= 0;
+}
+
+/**
+ * Group a string of events into `document` (d) and `window` (w) events
+ *
+ * @param {String} events  List of space separated events
+ * @param {String} id      Namespace appended to events
+ * @return {{d: Array, w: Array}}
+ */
+function splitEvents(events, id) {
+	// Global events
+	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
+	// add player ID as an event namespace so it's easier to unbind them all later
+	var ret = { d: [], w: [] };
+	(events || '').split(' ').forEach(function (v) {
+		var eventName = '' + v + (id ? '.' + id : '');
+
+		if (eventName.startsWith('.')) {
+			ret.d.push(eventName);
+			ret.w.push(eventName);
+		} else {
+			ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
 		}
-	},
+	});
+
+	ret.d = ret.d.join(' ');
+	ret.w = ret.w.join(' ');
+	return ret;
+}
+
+/**
+ *
+ * @param {string} eventName
+ * @param {*} target
+ * @return {Event|Object}
+ */
+function createEvent(eventName, target) {
+
+	if (typeof eventName !== 'string') {
+		throw new Error('Event name must be a string');
+	}
+
+	var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/),
+	    detail = {
+		target: target
+	};
+
+	if (eventFrags !== null) {
+		eventName = eventFrags[0];
+		detail.namespace = eventFrags[1];
+	}
 
-	// additional non-HTML5 methods
-	setVideoSize: function (width, height) {
-		
-		//if (this.pluginType == 'flash' || this.pluginType == 'silverlight') {
-			if (this.pluginElement && this.pluginElement.style) {
-				this.pluginElement.style.width = width + 'px';
-				this.pluginElement.style.height = height + 'px';
-			}
-			if (this.pluginApi != null && this.pluginApi.setVideoSize) {
-				this.pluginApi.setVideoSize(width, height);
-			}
-		//}
-	},
+	return new window.CustomEvent(eventName, {
+		detail: detail
+	});
+}
 
-	setFullscreen: function (fullscreen) {
-		if (this.pluginApi != null && this.pluginApi.setFullscreen) {
-			this.pluginApi.setFullscreen(fullscreen);
-		}
-	},
-	
-	enterFullScreen: function() {
-		if (this.pluginApi != null && this.pluginApi.setFullscreen) {
-			this.setFullscreen(true);
-		}		
-		
-	},
-	
-	exitFullScreen: function() {
-		if (this.pluginApi != null && this.pluginApi.setFullscreen) {
-			this.setFullscreen(false);
-		}
-	},	
+/**
+ * Returns true if targetNode appears after sourceNode in the dom.
+ * @param {HTMLElement} sourceNode - the source node for comparison
+ * @param {HTMLElement} targetNode - the node to compare against sourceNode
+ */
+function isNodeAfter(sourceNode, targetNode) {
 
-	// start: fake events
-	addEventListener: function (eventName, callback, bubble) {
-		this.events[eventName] = this.events[eventName] || [];
-		this.events[eventName].push(callback);
-	},
-	removeEventListener: function (eventName, callback) {
-		if (!eventName) { this.events = {}; return true; }
-		var callbacks = this.events[eventName];
-		if (!callbacks) return true;
-		if (!callback) { this.events[eventName] = []; return true; }
-		for (var i = 0; i < callbacks.length; i++) {
-			if (callbacks[i] === callback) {
-				this.events[eventName].splice(i, 1);
-				return true;
-			}
-		}
-		return false;
-	},	
-	dispatchEvent: function (eventName) {
-		var i,
-			args,
-			callbacks = this.events[eventName];
+	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING
+	);
+}
 
-		if (callbacks) {
-			args = Array.prototype.slice.call(arguments, 1);
-			for (i = 0; i < callbacks.length; i++) {
-				callbacks[i].apply(null, args);
-			}
-		}
-	},
-	// end: fake events
-	
-	// fake DOM attribute methods
-	hasAttribute: function(name){
-		return (name in this.attributes);  
-	},
-	removeAttribute: function(name){
-		delete this.attributes[name];
-	},
-	getAttribute: function(name){
-		if (this.hasAttribute(name)) {
-			return this.attributes[name];
-		}
-		return '';
-	},
-	setAttribute: function(name, value){
-		this.attributes[name] = value;
-	},
+/**
+ * Determines if a value is a string
+ *
+ * @param {*} value to check
+ * @returns {Boolean} True if a value is a string
+ */
+function isString(value) {
+	return typeof value === 'string';
+}
 
-	remove: function() {
-		mejs.Utility.removeSwf(this.pluginElement.id);
-		mejs.MediaPluginBridge.unregisterPluginElement(this.pluginElement.id);
-	}
-};
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.escapeHTML = escapeHTML;
+_mejs2.default.Utils.debounce = debounce;
+_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
+_mejs2.default.Utils.splitEvents = splitEvents;
+_mejs2.default.Utils.createEvent = createEvent;
+_mejs2.default.Utils.isNodeAfter = isNodeAfter;
+_mejs2.default.Utils.isString = isString;
+
+},{"6":6}],17:[function(_dereq_,module,exports){
+'use strict';
 
-// Handles calls from Flash/Silverlight and reports them as native <video/audio> events and properties
-mejs.MediaPluginBridge = {
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.typeChecks = undefined;
+exports.absolutizeUrl = absolutizeUrl;
+exports.formatType = formatType;
+exports.getMimeFromType = getMimeFromType;
+exports.getTypeFromFile = getTypeFromFile;
+exports.getExtension = getExtension;
+exports.normalizeExtension = normalizeExtension;
 
-	pluginMediaElements:{},
-	htmlMediaElements:{},
+var _mejs = _dereq_(6);
 
-	registerPluginElement: function (id, pluginMediaElement, htmlMediaElement) {
-		this.pluginMediaElements[id] = pluginMediaElement;
-		this.htmlMediaElements[id] = htmlMediaElement;
-	},
+var _mejs2 = _interopRequireDefault(_mejs);
 
-	unregisterPluginElement: function (id) {
-		delete this.pluginMediaElements[id];
-		delete this.htmlMediaElements[id];
-	},
+var _general = _dereq_(16);
 
-	// when Flash/Silverlight is ready, it calls out to this method
-	initPlugin: function (id) {
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-		var pluginMediaElement = this.pluginMediaElements[id],
-			htmlMediaElement = this.htmlMediaElements[id];
+var typeChecks = exports.typeChecks = [];
 
-		if (pluginMediaElement) {
-			// find the javascript bridge
-			switch (pluginMediaElement.pluginType) {
-				case "flash":
-					pluginMediaElement.pluginElement = pluginMediaElement.pluginApi = document.getElementById(id);
-					break;
-				case "silverlight":
-					pluginMediaElement.pluginElement = document.getElementById(pluginMediaElement.id);
-					pluginMediaElement.pluginApi = pluginMediaElement.pluginElement.Content.MediaElementJS;
-					break;
-			}
-	
-			if (pluginMediaElement.pluginApi != null && pluginMediaElement.success) {
-				pluginMediaElement.success(pluginMediaElement, htmlMediaElement);
-			}
-		}
-	},
+/**
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function absolutizeUrl(url) {
 
-	// receives events from Flash/Silverlight and sends them out as HTML5 media events
-	// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html
-	fireEvent: function (id, eventName, values) {
-
-		var
-			e,
-			i,
-			bufferedTime,
-			pluginMediaElement = this.pluginMediaElements[id];
-
-		if(!pluginMediaElement){
-            return;
-        }
-        
-		// fake event object to mimic real HTML media event.
-		e = {
-			type: eventName,
-			target: pluginMediaElement
-		};
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-		// attach all values to element and event object
-		for (i in values) {
-			pluginMediaElement[i] = values[i];
-			e[i] = values[i];
-		}
+	var el = document.createElement('div');
+	el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
+	return el.firstChild.href;
+}
+
+/**
+ * Get the format of a specific media, based on URL and additionally its mime type
+ *
+ * @param {String} url
+ * @param {String} type
+ * @return {String}
+ */
+function formatType(url) {
+	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
 
-		// fake the newer W3C buffered TimeRange (loaded and total have been removed)
-		bufferedTime = values.bufferedTime || 0;
+	return url && !type ? getTypeFromFile(url) : getMimeFromType(type);
+}
 
-		e.target.buffered = e.buffered = {
-			start: function(index) {
-				return 0;
-			},
-			end: function (index) {
-				return bufferedTime;
-			},
-			length: 1
-		};
+/**
+ * Return the mime part of the type in case the attribute contains the codec
+ * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`)
+ *
+ * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
+ * @param {String} type
+ * @return {String}
+ */
+function getMimeFromType(type) {
 
-		pluginMediaElement.dispatchEvent(e.type, e);
+	if (typeof type !== 'string') {
+		throw new Error('`type` argument must be a string');
 	}
-};
 
-/*
-Default options
-*/
-mejs.MediaElementDefaults = {
-	// allows testing on HTML5, flash, silverlight
-	// auto: attempts to detect what the browser can do
-	// auto_plugin: prefer plugins and then attempt native HTML5
-	// native: forces HTML5 playback
-	// shim: disallows HTML5, will attempt either Flash or Silverlight
-	// none: forces fallback view
-	mode: 'auto',
-	// remove or reorder to change plugin priority and availability
-	plugins: ['flash','silverlight','youtube','vimeo'],
-	// shows debug errors on screen
-	enablePluginDebug: false,
-	// use plugin for browsers that have trouble with Basic Authentication on HTTPS sites
-	httpsBasicAuthSite: false,
-	// overrides the type specified, useful for dynamic instantiation
-	type: '',
-	// path to Flash and Silverlight plugins
-	pluginPath: mejs.Utility.getScriptPath(['mediaelement.js','mediaelement.min.js','mediaelement-and-player.js','mediaelement-and-player.min.js']),
-	// name of flash file
-	flashName: 'flashmediaelement.swf',
-	// streamer for RTMP streaming
-	flashStreamer: '',
-	// turns on the smoothing filter in Flash
-	enablePluginSmoothing: false,
-	// enabled pseudo-streaming (seek) on .mp4 files
-	enablePseudoStreaming: false,
-	// start query parameter sent to server for pseudo-streaming
-	pseudoStreamingStartQueryParam: 'start',
-	// name of silverlight file
-	silverlightName: 'silverlightmediaelement.xap',
-	// default if the <video width> is not specified
-	defaultVideoWidth: 480,
-	// default if the <video height> is not specified
-	defaultVideoHeight: 270,
-	// overrides <video width>
-	pluginWidth: -1,
-	// overrides <video height>
-	pluginHeight: -1,
-	// additional plugin variables in 'key=value' form
-	pluginVars: [],	
-	// rate in milliseconds for Flash and Silverlight to fire the timeupdate event
-	// larger number is less accurate, but less strain on plugin->JavaScript bridge
-	timerRate: 250,
-	// initial volume for player
-	startVolume: 0.8,
-	success: function () { },
-	error: function () { }
-};
+	return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type;
+}
 
-/*
-Determines if a browser supports the <video> or <audio> element
-and returns either the native element or a Flash/Silverlight version that
-mimics HTML5 MediaElement
-*/
-mejs.MediaElement = function (el, o) {
-	return mejs.HtmlMediaElementShim.create(el,o);
-};
+/**
+ * Get the type of media based on URL structure
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function getTypeFromFile(url) {
 
-mejs.HtmlMediaElementShim = {
-
-	create: function(el, o) {
-		var
-			options = mejs.MediaElementDefaults,
-			htmlMediaElement = (typeof(el) == 'string') ? document.getElementById(el) : el,
-			tagName = htmlMediaElement.tagName.toLowerCase(),
-			isMediaTag = (tagName === 'audio' || tagName === 'video'),
-			src = (isMediaTag) ? htmlMediaElement.getAttribute('src') : htmlMediaElement.getAttribute('href'),
-			poster = htmlMediaElement.getAttribute('poster'),
-			autoplay =  htmlMediaElement.getAttribute('autoplay'),
-			preload =  htmlMediaElement.getAttribute('preload'),
-			controls =  htmlMediaElement.getAttribute('controls'),
-			playback,
-			prop;
-
-		// extend options
-		for (prop in o) {
-			options[prop] = o[prop];
-		}
-
-		// clean up attributes
-		src = 		(typeof src == 'undefined' 	|| src === null || src == '') ? null : src;		
-		poster =	(typeof poster == 'undefined' 	|| poster === null) ? '' : poster;
-		preload = 	(typeof preload == 'undefined' 	|| preload === null || preload === 'false') ? 'none' : preload;
-		autoplay = 	!(typeof autoplay == 'undefined' || autoplay === null || autoplay === 'false');
-		controls = 	!(typeof controls == 'undefined' || controls === null || controls === 'false');
-
-		// test for HTML5 and plugin capabilities
-		playback = this.determinePlayback(htmlMediaElement, options, mejs.MediaFeatures.supportsMediaTag, isMediaTag, src);
-		playback.url = (playback.url !== null) ? mejs.Utility.absolutizeUrl(playback.url) : '';
-
-		if (playback.method == 'native') {
-			// second fix for android
-			if (mejs.MediaFeatures.isBustedAndroid) {
-				htmlMediaElement.src = playback.url;
-				htmlMediaElement.addEventListener('click', function() {
-					htmlMediaElement.play();
-				}, false);
-			}
-		
-			// add methods to native HTMLMediaElement
-			return this.updateNative(playback, options, autoplay, preload);
-		} else if (playback.method !== '') {
-			// create plugin to mimic HTMLMediaElement
-			
-			return this.createPlugin( playback,  options, poster, autoplay, preload, controls);
-		} else {
-			// boo, no HTML5, no Flash, no Silverlight.
-			this.createErrorMessage( playback, options, poster );
-			
-			return this;
-		}
-	},
-	
-	determinePlayback: function(htmlMediaElement, options, supportsMediaTag, isMediaTag, src) {
-		var
-			mediaFiles = [],
-			i,
-			j,
-			k,
-			l,
-			n,
-			type,
-			result = { method: '', url: '', htmlMediaElement: htmlMediaElement, isVideo: (htmlMediaElement.tagName.toLowerCase() != 'audio')},
-			pluginName,
-			pluginVersions,
-			pluginInfo,
-			dummy,
-			media;
-			
-		// STEP 1: Get URL and type from <video src> or <source src>
-
-		// supplied type overrides <video type> and <source type>
-		if (typeof options.type != 'undefined' && options.type !== '') {
-			
-			// accept either string or array of types
-			if (typeof options.type == 'string') {
-				mediaFiles.push({type:options.type, url:src});
-			} else {
-				
-				for (i=0; i<options.type.length; i++) {
-					mediaFiles.push({type:options.type[i], url:src});
-				}
-			}
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-		// test for src attribute first
-		} else if (src !== null) {
-			type = this.formatType(src, htmlMediaElement.getAttribute('type'));
-			mediaFiles.push({type:type, url:src});
+	for (var i = 0, total = typeChecks.length; i < total; i++) {
+		var type = typeChecks[i](url);
 
-		// then test for <source> elements
-		} else {
-			// test <source> types to see if they are usable
-			for (i = 0; i < htmlMediaElement.childNodes.length; i++) {
-				n = htmlMediaElement.childNodes[i];
-				if (n.nodeType == 1 && n.tagName.toLowerCase() == 'source') {
-					src = n.getAttribute('src');
-					type = this.formatType(src, n.getAttribute('type'));
-					media = n.getAttribute('media');
-
-					if (!media || !window.matchMedia || (window.matchMedia && window.matchMedia(media).matches)) {
-						mediaFiles.push({type:type, url:src});
-					}
-				}
-			}
-		}
-		
-		// in the case of dynamicly created players
-		// check for audio types
-		if (!isMediaTag && mediaFiles.length > 0 && mediaFiles[0].url !== null && this.getTypeFromFile(mediaFiles[0].url).indexOf('audio') > -1) {
-			result.isVideo = false;
+		if (type) {
+			return type;
 		}
-		
+	}
 
-		// STEP 2: Test for playback method
-		
-		// special case for Android which sadly doesn't implement the canPlayType function (always returns '')
-		if (mejs.MediaFeatures.isBustedAndroid) {
-			htmlMediaElement.canPlayType = function(type) {
-				return (type.match(/video\/(mp4|m4v)/gi) !== null) ? 'maybe' : '';
-			};
-		}		
-		
-		// special case for Chromium to specify natively supported video codecs (i.e. WebM and Theora) 
-		if (mejs.MediaFeatures.isChromium) { 
-			htmlMediaElement.canPlayType = function(type) { 
-				return (type.match(/video\/(webm|ogv|ogg)/gi) !== null) ? 'maybe' : ''; 
-			}; 
-		}
+	// the do standard extension check
+	var ext = getExtension(url),
+	    normalizedExt = normalizeExtension(ext);
 
-		// test for native playback first
-		if (supportsMediaTag && (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'native')  && !(mejs.MediaFeatures.isBustedNativeHTTPS && options.httpsBasicAuthSite === true)) {
-						
-			if (!isMediaTag) {
+	var mime = 'video/mp4';
 
-				// create a real HTML5 Media Element 
-				dummy = document.createElement( result.isVideo ? 'video' : 'audio');			
-				htmlMediaElement.parentNode.insertBefore(dummy, htmlMediaElement);
-				htmlMediaElement.style.display = 'none';
-				
-				// use this one from now on
-				result.htmlMediaElement = htmlMediaElement = dummy;
-			}
-				
-			for (i=0; i<mediaFiles.length; i++) {
-				// normal check
-				if (mediaFiles[i].type == "video/m3u8" || htmlMediaElement.canPlayType(mediaFiles[i].type).replace(/no/, '') !== ''
-					// special case for Mac/Safari 5.0.3 which answers '' to canPlayType('audio/mp3') but 'maybe' to canPlayType('audio/mpeg')
-					|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== ''
-					// special case for m4a supported by detecting mp4 support
-					|| htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/m4a/,'mp4')).replace(/no/, '') !== '') {
-					result.method = 'native';
-					result.url = mediaFiles[i].url;
-					break;
-				}
-			}			
-			
-			if (result.method === 'native') {
-				if (result.url !== null) {
-					htmlMediaElement.src = result.url;
-				}
-			
-				// if `auto_plugin` mode, then cache the native result but try plugins.
-				if (options.mode !== 'auto_plugin') {
-					return result;
-				}
-			}
+	// Obtain correct MIME types
+	if (normalizedExt) {
+		if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) {
+			mime = 'video/' + normalizedExt;
+		} else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) {
+			mime = 'audio/' + normalizedExt;
 		}
+	}
 
-		// if native playback didn't work, then test plugins
-		if (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'shim') {
-			for (i=0; i<mediaFiles.length; i++) {
-				type = mediaFiles[i].type;
+	return mime;
+}
 
-				// test all plugins in order of preference [silverlight, flash]
-				for (j=0; j<options.plugins.length; j++) {
+/**
+ * Get media file extension from URL
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function getExtension(url) {
 
-					pluginName = options.plugins[j];
-			
-					// test version of plugin (for future features)
-					pluginVersions = mejs.plugins[pluginName];				
-					
-					for (k=0; k<pluginVersions.length; k++) {
-						pluginInfo = pluginVersions[k];
-					
-						// test if user has the correct plugin version
-						
-						// for youtube/vimeo
-						if (pluginInfo.version == null || 
-							
-							mejs.PluginDetector.hasPluginVersion(pluginName, pluginInfo.version)) {
-
-							// test for plugin playback types
-							for (l=0; l<pluginInfo.types.length; l++) {
-								// find plugin that can play the type
-								if (type == pluginInfo.types[l]) {
-									result.method = pluginName;
-									result.url = mediaFiles[i].url;
-									return result;
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-		
-		// at this point, being in 'auto_plugin' mode implies that we tried plugins but failed.
-		// if we have native support then return that.
-		if (options.mode === 'auto_plugin' && result.method === 'native') {
-			return result;
-		}
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-		// what if there's nothing to play? just grab the first available
-		if (result.method === '' && mediaFiles.length > 0) {
-			result.url = mediaFiles[0].url;
-		}
+	var baseUrl = url.split('?')[0],
+	    baseName = baseUrl.split('\\').pop().split('/').pop();
 
-		return result;
-	},
+	return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
+}
 
-	formatType: function(url, type) {
-		var ext;
+/**
+ * Get standard extension of a media file
+ *
+ * @param {String} extension
+ * @return {String}
+ */
+function normalizeExtension(extension) {
 
-		// if no type is supplied, fake it with the extension
-		if (url && !type) {		
-			return this.getTypeFromFile(url);
-		} else {
-			// only return the mime part of the type in case the attribute contains the codec
-			// see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
-			// `video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`
-			
-			if (type && ~type.indexOf(';')) {
-				return type.substr(0, type.indexOf(';')); 
-			} else {
-				return type;
-			}
-		}
-	},
-	
-	getTypeFromFile: function(url) {
-		url = url.split('?')[0];
-		var ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase();
-		return (/(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(ext) ? 'video' : 'audio') + '/' + this.getTypeFromExtension(ext);
-	},
-	
-	getTypeFromExtension: function(ext) {
-		
-		switch (ext) {
-			case 'mp4':
-			case 'm4v':
-			case 'm4a':
-				return 'mp4';
-			case 'webm':
-			case 'webma':
-			case 'webmv':	
-				return 'webm';
-			case 'ogg':
-			case 'oga':
-			case 'ogv':	
-				return 'ogg';
-			default:
-				return ext;
-		}
-	},
+	if (typeof extension !== 'string') {
+		throw new Error('`extension` argument must be a string');
+	}
 
-	createErrorMessage: function(playback, options, poster) {
-		var 
-			htmlMediaElement = playback.htmlMediaElement,
-			errorContainer = document.createElement('div');
-			
-		errorContainer.className = 'me-cannotplay';
-
-		try {
-			errorContainer.style.width = htmlMediaElement.width + 'px';
-			errorContainer.style.height = htmlMediaElement.height + 'px';
-		} catch (e) {}
-
-    if (options.customError) {
-      errorContainer.innerHTML = options.customError;
-    } else {
-      errorContainer.innerHTML = (poster !== '') ?
-        '<a href="' + playback.url + '"><img src="' + poster + '" width="100%" height="100%" /></a>' :
-        '<a href="' + playback.url + '"><span>' + mejs.i18n.t('Download File') + '</span></a>';
-    }
+	switch (extension) {
+		case 'mp4':
+		case 'm4v':
+			return 'mp4';
+		case 'webm':
+		case 'webma':
+		case 'webmv':
+			return 'webm';
+		case 'ogg':
+		case 'oga':
+		case 'ogv':
+			return 'ogg';
+		default:
+			return extension;
+	}
+}
 
-		htmlMediaElement.parentNode.insertBefore(errorContainer, htmlMediaElement);
-		htmlMediaElement.style.display = 'none';
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.typeChecks = typeChecks;
+_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
+_mejs2.default.Utils.formatType = formatType;
+_mejs2.default.Utils.getMimeFromType = getMimeFromType;
+_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
+_mejs2.default.Utils.getExtension = getExtension;
+_mejs2.default.Utils.normalizeExtension = normalizeExtension;
 
-		options.error(htmlMediaElement);
-	},
+},{"16":16,"6":6}],18:[function(_dereq_,module,exports){
+'use strict';
 
-	createPlugin:function(playback, options, poster, autoplay, preload, controls) {
-		var 
-			htmlMediaElement = playback.htmlMediaElement,
-			width = 1,
-			height = 1,
-			pluginid = 'me_' + playback.method + '_' + (mejs.meIndex++),
-			pluginMediaElement = new mejs.PluginMediaElement(pluginid, playback.method, playback.url),
-			container = document.createElement('div'),
-			specialIEContainer,
-			node,
-			initVars;
-
-		// copy tagName from html media element
-		pluginMediaElement.tagName = htmlMediaElement.tagName
-
-		// copy attributes from html media element to plugin media element
-		for (var i = 0; i < htmlMediaElement.attributes.length; i++) {
-			var attribute = htmlMediaElement.attributes[i];
-			if (attribute.specified == true) {
-				pluginMediaElement.setAttribute(attribute.name, attribute.value);
-			}
-		}
+var _document = _dereq_(2);
 
-		// check for placement inside a <p> tag (sometimes WYSIWYG editors do this)
-		node = htmlMediaElement.parentNode;
-		while (node !== null && node.tagName.toLowerCase() !== 'body' && node.parentNode != null) {
-			if (node.parentNode.tagName.toLowerCase() === 'p') {
-				node.parentNode.parentNode.insertBefore(node, node.parentNode);
-				break;
-			}
-			node = node.parentNode;
-		}
+var _document2 = _interopRequireDefault(_document);
 
-		if (playback.isVideo) {
-			width = (options.pluginWidth > 0) ? options.pluginWidth : (options.videoWidth > 0) ? options.videoWidth : (htmlMediaElement.getAttribute('width') !== null) ? htmlMediaElement.getAttribute('width') : options.defaultVideoWidth;
-			height = (options.pluginHeight > 0) ? options.pluginHeight : (options.videoHeight > 0) ? options.videoHeight : (htmlMediaElement.getAttribute('height') !== null) ? htmlMediaElement.getAttribute('height') : options.defaultVideoHeight;
-		
-			// in case of '%' make sure it's encoded
-			width = mejs.Utility.encodeUrl(width);
-			height = mejs.Utility.encodeUrl(height);
-		
-		} else {
-			if (options.enablePluginDebug) {
-				width = 320;
-				height = 240;
-			}
-		}
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-		// register plugin
-		pluginMediaElement.success = options.success;
-		mejs.MediaPluginBridge.registerPluginElement(pluginid, pluginMediaElement, htmlMediaElement);
+/**
+ * Polyfill
+ *
+ * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list
+ * of polyfills provided by Babel.
+ */
 
-		// add container (must be added to DOM before inserting HTML for IE)
-		container.className = 'me-plugin';
-		container.id = pluginid + '_container';
-		
-		if (playback.isVideo) {
-				htmlMediaElement.parentNode.insertBefore(container, htmlMediaElement);
-		} else {
-				document.body.insertBefore(container, document.body.childNodes[0]);
-		}
-
-		// flash/silverlight vars
-		initVars = [
-			'id=' + pluginid,
-			'isvideo=' + ((playback.isVideo) ? "true" : "false"),
-			'autoplay=' + ((autoplay) ? "true" : "false"),
-			'preload=' + preload,
-			'width=' + width,
-			'startvolume=' + options.startVolume,
-			'timerrate=' + options.timerRate,
-			'flashstreamer=' + options.flashStreamer,
-			'height=' + height,
-      'pseudostreamstart=' + options.pseudoStreamingStartQueryParam];
-
-		if (playback.url !== null) {
-			if (playback.method == 'flash') {
-				initVars.push('file=' + mejs.Utility.encodeUrl(playback.url));
-			} else {
-				initVars.push('file=' + playback.url);
-			}
-		}
-		if (options.enablePluginDebug) {
-			initVars.push('debug=true');
-		}
-		if (options.enablePluginSmoothing) {
-			initVars.push('smoothing=true');
+// ChildNode.remove polyfill
+// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
+(function (arr) {
+	arr.forEach(function (item) {
+		if (item.hasOwnProperty('remove')) {
+			return;
 		}
-    if (options.enablePseudoStreaming) {
-      initVars.push('pseudostreaming=true');
-    }
-		if (controls) {
-			initVars.push('controls=true'); // shows controls in the plugin if desired
-		}
-		if (options.pluginVars) {
-			initVars = initVars.concat(options.pluginVars);
-		}		
-
-		switch (playback.method) {
-			case 'silverlight':
-				container.innerHTML =
-'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="' + pluginid + '" name="' + pluginid + '" width="' + width + '" height="' + height + '" class="mejs-shim">' +
-'<param name="initParams" value="' + initVars.join(',') + '" />' +
-'<param name="windowless" value="true" />' +
-'<param name="background" value="black" />' +
-'<param name="minRuntimeVersion" value="3.0.0.0" />' +
-'<param name="autoUpgrade" value="true" />' +
-'<param name="source" value="' + options.pluginPath + options.silverlightName + '" />' +
-'</object>';
-					break;
+		Object.defineProperty(item, 'remove', {
+			configurable: true,
+			enumerable: true,
+			writable: true,
+			value: function remove() {
+				this.parentNode.removeChild(this);
+			}
+		});
+	});
+})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
 
-			case 'flash':
-
-				if (mejs.MediaFeatures.isIE) {
-					specialIEContainer = document.createElement('div');
-					container.appendChild(specialIEContainer);
-					specialIEContainer.outerHTML =
-'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' +
-'id="' + pluginid + '" width="' + width + '" height="' + height + '" class="mejs-shim">' +
-'<param name="movie" value="' + options.pluginPath + options.flashName + '?x=' + (new Date()) + '" />' +
-'<param name="flashvars" value="' + initVars.join('&amp;') + '" />' +
-'<param name="quality" value="high" />' +
-'<param name="bgcolor" value="#000000" />' +
-'<param name="wmode" value="transparent" />' +
-'<param name="allowScriptAccess" value="always" />' +
-'<param name="allowFullScreen" value="true" />' +
-'<param name="scale" value="default" />' + 
-'</object>';
+// CustomEvent polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
+(function () {
 
-				} else {
+	if (typeof window.CustomEvent === "function") return false;
 
-					container.innerHTML =
-'<embed id="' + pluginid + '" name="' + pluginid + '" ' +
-'play="true" ' +
-'loop="false" ' +
-'quality="high" ' +
-'bgcolor="#000000" ' +
-'wmode="transparent" ' +
-'allowScriptAccess="always" ' +
-'allowFullScreen="true" ' +
-'type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" ' +
-'src="' + options.pluginPath + options.flashName + '" ' +
-'flashvars="' + initVars.join('&') + '" ' +
-'width="' + width + '" ' +
-'height="' + height + '" ' +
-'scale="default"' + 
-'class="mejs-shim"></embed>';
-				}
-				break;
-			
-			case 'youtube':
-			
-				
-				var videoId;
-				// youtu.be url from share button
-				if (playback.url.lastIndexOf("youtu.be") != -1) {
-					videoId = playback.url.substr(playback.url.lastIndexOf('/')+1);
-					if (videoId.indexOf('?') != -1) {
-						videoId = videoId.substr(0, videoId.indexOf('?'));
-					}
-				}
-				else {
-					videoId = playback.url.substr(playback.url.lastIndexOf('=')+1);
-				}
-				youtubeSettings = {
-						container: container,
-						containerId: container.id,
-						pluginMediaElement: pluginMediaElement,
-						pluginId: pluginid,
-						videoId: videoId,
-						height: height,
-						width: width	
-					};				
-				
-				if (mejs.PluginDetector.hasPluginVersion('flash', [10,0,0]) ) {
-					mejs.YouTubeApi.createFlash(youtubeSettings);
-				} else {
-					mejs.YouTubeApi.enqueueIframe(youtubeSettings);		
-				}
-				
-				break;
-			
-			// DEMO Code. Does NOT work.
-			case 'vimeo':
-				var player_id = pluginid + "_player";
-				pluginMediaElement.vimeoid = playback.url.substr(playback.url.lastIndexOf('/')+1);
-				
-				container.innerHTML ='<iframe src="//player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?api=1&portrait=0&byline=0&title=0&player_id=' + player_id + '" width="' + width +'" height="' + height +'" frameborder="0" class="mejs-shim" id="' + player_id + '"></iframe>';
-				if (typeof($f) == 'function') { // froogaloop available
-					var player = $f(container.childNodes[0]);
-					player.addEvent('ready', function() {
-						$.extend( player, {
-							playVideo: function() {
-								player.api( 'play' );
-							}, 
-							stopVideo: function() {
-								player.api( 'unload' );
-							}, 
-							pauseVideo: function() {
-								player.api( 'pause' );
-							}, 
-							seekTo: function( seconds ) {
-								player.api( 'seekTo', seconds );
-							}, 
-							setVolume: function( volume ) {
-								player.api( 'setVolume', volume );
-							}, 
-							setMuted: function( muted ) {
-								if( muted ) {
-									player.lastVolume = player.api( 'getVolume' );
-									player.api( 'setVolume', 0 );
-								} else {
-									player.api( 'setVolume', player.lastVolume );
-									delete player.lastVolume;
-								}
-							}
-						});
+	function CustomEvent(event, params) {
+		params = params || { bubbles: false, cancelable: false, detail: undefined };
+		var evt = _document2.default.createEvent('CustomEvent');
+		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
+		return evt;
+	}
 
-						function createEvent(player, pluginMediaElement, eventName, e) {
-							var obj = {
-								type: eventName,
-								target: pluginMediaElement
-							};
-							if (eventName == 'timeupdate') {
-								pluginMediaElement.currentTime = obj.currentTime = e.seconds;
-								pluginMediaElement.duration = obj.duration = e.duration;
-							}
-							pluginMediaElement.dispatchEvent(obj.type, obj);
-						}
+	CustomEvent.prototype = window.Event.prototype;
 
-						player.addEvent('play', function() {
-							createEvent(player, pluginMediaElement, 'play');
-							createEvent(player, pluginMediaElement, 'playing');
-						});
+	window.CustomEvent = CustomEvent;
+})();
 
-						player.addEvent('pause', function() {
-							createEvent(player, pluginMediaElement, 'pause');
-						});
+// Object.assign polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
+if (typeof Object.assign !== 'function') {
+	Object.assign = function (target) {
+		// .length of function is 2
 
-						player.addEvent('finish', function() {
-							createEvent(player, pluginMediaElement, 'ended');
-						});
+		if (target === null || target === undefined) {
+			// TypeError if undefined or null
+			throw new TypeError('Cannot convert undefined or null to object');
+		}
 
-						player.addEvent('playProgress', function(e) {
-							createEvent(player, pluginMediaElement, 'timeupdate', e);
-						});
+		var to = Object(target);
 
-						pluginMediaElement.pluginElement = container;
-						pluginMediaElement.pluginApi = player;
+		for (var index = 1, total = arguments.length; index < total; index++) {
+			var nextSource = arguments[index];
 
-						// init mejs
-						mejs.MediaPluginBridge.initPlugin(pluginid);
-					});
-				}
-				else {
-					console.warn("You need to include froogaloop for vimeo to work");
+			if (nextSource !== null) {
+				// Skip over if undefined or null
+				for (var nextKey in nextSource) {
+					// Avoid bugs when hasOwnProperty is shadowed
+					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+						to[nextKey] = nextSource[nextKey];
+					}
 				}
-				break;			
+			}
 		}
-		// hide original element
-		htmlMediaElement.style.display = 'none';
-		// prevent browser from autoplaying when using a plugin
-		htmlMediaElement.removeAttribute('autoplay');
+		return to;
+	};
+}
 
-		// FYI: options.success will be fired by the MediaPluginBridge
-		
-		return pluginMediaElement;
-	},
+// Array.includes polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill
+if (!Array.prototype.includes) {
+	Object.defineProperty(Array.prototype, 'includes', {
+		value: function value(searchElement, fromIndex) {
 
-	updateNative: function(playback, options, autoplay, preload) {
-		
-		var htmlMediaElement = playback.htmlMediaElement,
-			m;
-		
-		
-		// add methods to video object to bring it into parity with Flash Object
-		for (m in mejs.HtmlMediaElement) {
-			htmlMediaElement[m] = mejs.HtmlMediaElement[m];
-		}
-
-		/*
-		Chrome now supports preload="none"
-		if (mejs.MediaFeatures.isChrome) {
-		
-			// special case to enforce preload attribute (Chrome doesn't respect this)
-			if (preload === 'none' && !autoplay) {
-			
-				// forces the browser to stop loading (note: fails in IE9)
-				htmlMediaElement.src = '';
-				htmlMediaElement.load();
-				htmlMediaElement.canceledPreload = true;
-
-				htmlMediaElement.addEventListener('play',function() {
-					if (htmlMediaElement.canceledPreload) {
-						htmlMediaElement.src = playback.url;
-						htmlMediaElement.load();
-						htmlMediaElement.play();
-						htmlMediaElement.canceledPreload = false;
-					}
-				}, false);
-			// for some reason Chrome forgets how to autoplay sometimes.
-			} else if (autoplay) {
-				htmlMediaElement.load();
-				htmlMediaElement.play();
+			// 1. const O be ? ToObject(this value).
+			if (this === null || this === undefined) {
+				throw new TypeError('"this" is null or not defined');
 			}
-		}
-		*/
 
-		// fire success code
-		options.success(htmlMediaElement, htmlMediaElement);
-		
-		return htmlMediaElement;
-	}
-};
+			var o = Object(this);
 
-/*
- - test on IE (object vs. embed)
- - determine when to use iframe (Firefox, Safari, Mobile) vs. Flash (Chrome, IE)
- - fullscreen?
-*/
+			// 2. const len be ? ToLength(? Get(O, "length")).
+			var len = o.length >>> 0;
 
-// YouTube Flash and Iframe API
-mejs.YouTubeApi = {
-	isIframeStarted: false,
-	isIframeLoaded: false,
-	loadIframeApi: function() {
-		if (!this.isIframeStarted) {
-			var tag = document.createElement('script');
-			tag.src = "//www.youtube.com/player_api";
-			var firstScriptTag = document.getElementsByTagName('script')[0];
-			firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
-			this.isIframeStarted = true;
-		}
-	},
-	iframeQueue: [],
-	enqueueIframe: function(yt) {
-		
-		if (this.isLoaded) {
-			this.createIframe(yt);
-		} else {
-			this.loadIframeApi();
-			this.iframeQueue.push(yt);
-		}
-	},
-	createIframe: function(settings) {
-		
-		var
-		pluginMediaElement = settings.pluginMediaElement,	
-		player = new YT.Player(settings.containerId, {
-			height: settings.height,
-			width: settings.width,
-			videoId: settings.videoId,
-			playerVars: {controls:0},
-			events: {
-				'onReady': function() {
-					
-					// hook up iframe object to MEjs
-					settings.pluginMediaElement.pluginApi = player;
-					
-					// init mejs
-					mejs.MediaPluginBridge.initPlugin(settings.pluginId);
-					
-					// create timer
-					setInterval(function() {
-						mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
-					}, 250);					
-				},
-				'onStateChange': function(e) {
-					
-					mejs.YouTubeApi.handleStateChange(e.data, player, pluginMediaElement);
-					
-				}
+			// 3. If len is 0, return false.
+			if (len === 0) {
+				return false;
 			}
-		});
-	},
-	
-	createEvent: function (player, pluginMediaElement, eventName) {
-		var obj = {
-			type: eventName,
-			target: pluginMediaElement
-		};
 
-		if (player && player.getDuration) {
-			
-			// time 
-			pluginMediaElement.currentTime = obj.currentTime = player.getCurrentTime();
-			pluginMediaElement.duration = obj.duration = player.getDuration();
-			
-			// state
-			obj.paused = pluginMediaElement.paused;
-			obj.ended = pluginMediaElement.ended;			
-			
-			// sound
-			obj.muted = player.isMuted();
-			obj.volume = player.getVolume() / 100;
-			
-			// progress
-			obj.bytesTotal = player.getVideoBytesTotal();
-			obj.bufferedBytes = player.getVideoBytesLoaded();
-			
-			// fake the W3C buffered TimeRange
-			var bufferedTime = obj.bufferedBytes / obj.bytesTotal * obj.duration;
-			
-			obj.target.buffered = obj.buffered = {
-				start: function(index) {
-					return 0;
-				},
-				end: function (index) {
-					return bufferedTime;
-				},
-				length: 1
-			};
+			// 4. const n be ? ToInteger(fromIndex).
+			//    (If fromIndex is undefined, this step produces the value 0.)
+			var n = fromIndex | 0;
+
+			// 5. If n ≥ 0, then
+			//  a. const k be n.
+			// 6. Else n < 0,
+			//  a. const k be len + n.
+			//  b. If k < 0, const k be 0.
+			var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+			// 7. Repeat, while k < len
+			while (k < len) {
+				// a. const elementK be the result of ? Get(O, ! ToString(k)).
+				// b. If SameValueZero(searchElement, elementK) is true, return true.
+				// c. Increase k by 1.
+				// NOTE: === provides the correct "SameValueZero" comparison needed here.
+				if (o[k] === searchElement) {
+					return true;
+				}
+				k++;
+			}
 
+			// 8. Return false
+			return false;
 		}
-		
-		// send event up the chain
-		pluginMediaElement.dispatchEvent(obj.type, obj);
-	},	
-	
-	iFrameReady: function() {
-		
-		this.isLoaded = true;
-		this.isIframeLoaded = true;
-		
-		while (this.iframeQueue.length > 0) {
-			var settings = this.iframeQueue.pop();
-			this.createIframe(settings);
-		}	
-	},
-	
-	// FLASH!
-	flashPlayers: {},
-	createFlash: function(settings) {
-		
-		this.flashPlayers[settings.pluginId] = settings;
-		
-		/*
-		settings.container.innerHTML =
-			'<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid=' + settings.pluginId  + '&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0" ' +
-				'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; " class="mejs-shim">' +
-				'<param name="allowScriptAccess" value="always">' +
-				'<param name="wmode" value="transparent">' +
-			'</object>';
-		*/
-
-		var specialIEContainer,
-			youtubeUrl = '//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid=' + settings.pluginId  + '&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0';
-			
-		if (mejs.MediaFeatures.isIE) {
-			
-			specialIEContainer = document.createElement('div');
-			settings.container.appendChild(specialIEContainer);
-			specialIEContainer.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' +
-'id="' + settings.pluginId + '" width="' + settings.width + '" height="' + settings.height + '" class="mejs-shim">' +
-	'<param name="movie" value="' + youtubeUrl + '" />' +
-	'<param name="wmode" value="transparent" />' +
-	'<param name="allowScriptAccess" value="always" />' +
-	'<param name="allowFullScreen" value="true" />' +
-'</object>';
-		} else {
-		settings.container.innerHTML =
-			'<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="' + youtubeUrl + '" ' +
-				'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; " class="mejs-shim">' +
-				'<param name="allowScriptAccess" value="always">' +
-				'<param name="wmode" value="transparent">' +
-			'</object>';
-		}		
-		
-	},
-	
-	flashReady: function(id) {
-		var
-			settings = this.flashPlayers[id],
-			player = document.getElementById(id),
-			pluginMediaElement = settings.pluginMediaElement;
-		
-		// hook up and return to MediaELementPlayer.success	
-		pluginMediaElement.pluginApi = 
-		pluginMediaElement.pluginElement = player;
-		mejs.MediaPluginBridge.initPlugin(id);
-		
-		// load the youtube video
-		player.cueVideoById(settings.videoId);
-		
-		var callbackName = settings.containerId + '_callback';
-		
-		window[callbackName] = function(e) {
-			mejs.YouTubeApi.handleStateChange(e, player, pluginMediaElement);
-		}
-		
-		player.addEventListener('onStateChange', callbackName);
-		
-		setInterval(function() {
-			mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate');
-		}, 250);
-		
-		mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'canplay');
-	},
-	
-	handleStateChange: function(youTubeState, player, pluginMediaElement) {
-		switch (youTubeState) {
-			case -1: // not started
-				pluginMediaElement.paused = true;
-				pluginMediaElement.ended = true;
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'loadedmetadata');
-				//createYouTubeEvent(player, pluginMediaElement, 'loadeddata');
-				break;
-			case 0:
-				pluginMediaElement.paused = false;
-				pluginMediaElement.ended = true;
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'ended');
-				break;
-			case 1:
-				pluginMediaElement.paused = false;
-				pluginMediaElement.ended = false;				
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'play');
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'playing');
-				break;
-			case 2:
-				pluginMediaElement.paused = true;
-				pluginMediaElement.ended = false;				
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'pause');
-				break;
-			case 3: // buffering
-				mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'progress');
-				break;
-			case 5:
-				// cued?
-				break;						
-			
-		}			
-		
-	}
-}
-// IFRAME
-function onYouTubePlayerAPIReady() {
-	mejs.YouTubeApi.iFrameReady();
+	});
 }
-// FLASH
-function onYouTubePlayerReady(id) {
-	mejs.YouTubeApi.flashReady(id);
-}
-
-window.mejs = mejs;
-window.MediaElement = mejs.MediaElement;
-
-/*!
- * Adds Internationalization and localization to mediaelement.
- *
- * This file does not contain translations, you have to add the manually.
- * The schema is always the same: me-i18n-locale-[ISO_639-1 Code].js
- *
- * Examples are provided both for german and chinese translation.
- *
- *
- * What is the concept beyond i18n?
- *   http://en.wikipedia.org/wiki/Internationalization_and_localization
- *
- * What langcode should i use?
- *   http://en.wikipedia.org/wiki/ISO_639-1
- *
- *
- * License?
- *
- *   The i18n file uses methods from the Drupal project (drupal.js):
- *     - i18n.methods.t() (modified)
- *     - i18n.methods.checkPlain() (full copy)
- *
- *   The Drupal project is (like mediaelementjs) licensed under GPLv2.
- *    - http://drupal.org/licensing/faq/#q1
- *    - https://github.com/johndyer/mediaelement
- *    - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- *
- * @author
- *   Tim Latz (latz.tim@gmail.com)
- *
- *
- * @params
- *  - context - document, iframe ..
- *  - exports - CommonJS, window ..
- *
- */
-;(function(context, exports, undefined) {
-    "use strict";
-    var i18n = {
-        "locale": {
-            "language" : '',
-            "strings" : {}
-        },
-        "methods" : {}
-    };
-// start i18n
-
-
-    /**
-     * Get language, fallback to browser's language if empty
-     */
-    i18n.getLanguage = function () {
-        var language = i18n.locale.language || window.navigator.userLanguage || window.navigator.language;
-        // convert to iso 639-1 (2-letters, lower case)
-        return language.substr(0, 2).toLowerCase();
-    };
-
-    // i18n fixes for compatibility with WordPress
-    if ( typeof mejsL10n != 'undefined' ) {
-        i18n.locale.language = mejsL10n.language;
-    }
-
 
+// String.includes polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
+if (!String.prototype.includes) {
+	String.prototype.includes = function (search, start) {
+		'use strict';
 
-    /**
-     * Encode special characters in a plain-text string for display as HTML.
-     */
-    i18n.methods.checkPlain = function (str) {
-        var character, regex,
-        replace = {
-            '&': '&amp;',
-            '"': '&quot;',
-            '<': '&lt;',
-            '>': '&gt;'
-        };
-        str = String(str);
-        for (character in replace) {
-            if (replace.hasOwnProperty(character)) {
-                regex = new RegExp(character, 'g');
-                str = str.replace(regex, replace[character]);
-            }
-        }
-        return str;
-    };
-
-    /**
-     * Translate strings to the page language or a given language.
-     *
-     *
-     * @param str
-     *   A string containing the English string to translate.
-     *
-     * @param options
-     *   - 'context' (defaults to the default context): The context the source string
-     *     belongs to.
-     *
-     * @return
-     *   The translated string, escaped via i18n.methods.checkPlain()
-     */
-    i18n.methods.t = function (str, options) {
-
-        // Fetch the localized version of the string.
-        if (i18n.locale.strings && i18n.locale.strings[options.context] && i18n.locale.strings[options.context][str]) {
-            str = i18n.locale.strings[options.context][str];
-        }
-
-        return i18n.methods.checkPlain(str);
-    };
-
-
-    /**
-     * Wrapper for i18n.methods.t()
-     *
-     * @see i18n.methods.t()
-     * @throws InvalidArgumentException
-     */
-    i18n.t = function(str, options) {
-
-        if (typeof str === 'string' && str.length > 0) {
-
-            // check every time due language can change for
-            // different reasons (translation, lang switcher ..)
-            var language = i18n.getLanguage();
-
-            options = options || {
-                "context" : language
-            };
-
-            return i18n.methods.t(str, options);
-        }
-        else {
-            throw {
-                "name" : 'InvalidArgumentException',
-                "message" : 'First argument is either not a string or empty.'
-            };
-        }
-    };
-
-// end i18n
-    exports.i18n = i18n;
-}(document, mejs));
-
-// i18n fixes for compatibility with WordPress
-;(function(exports, undefined) {
-
-    "use strict";
-
-    if ( typeof mejsL10n != 'undefined' ) {
-        exports[mejsL10n.language] = mejsL10n.strings;
-    }
+		if (typeof start !== 'number') {
+			start = 0;
+		}
 
-}(mejs.i18n.locale.strings));
+		if (start + search.length > this.length) {
+			return false;
+		} else {
+			return this.indexOf(search, start) !== -1;
+		}
+	};
+}
 
-/*!
- * This is a i18n.locale language object.
- *
- * German translation by Tim Latz, latz.tim@gmail.com
- *
- * @author
- *   Tim Latz (latz.tim@gmail.com)
- *
- * @see
- *   me-i18n.js
- *
- * @params
- *  - exports - CommonJS, window ..
- */
-;(function(exports, undefined) {
+// String.startsWith polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill
+if (!String.prototype.startsWith) {
+	String.prototype.startsWith = function (searchString, position) {
+		position = position || 0;
+		return this.substr(position, searchString.length) === searchString;
+	};
+}
 
-    "use strict";
+// Element.matches polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
+if (!Element.prototype.matches) {
+	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
+		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+		    i = matches.length - 1;
+		while (--i >= 0 && matches.item(i) !== this) {}
+		return i > -1;
+	};
+}
 
-    if (typeof exports.de === 'undefined') {
-        exports.de = {
-            "Fullscreen" : "Vollbild",
-            "Go Fullscreen" : "Vollbild an",
-            "Turn off Fullscreen" : "Vollbild aus",
-            "Close" : "Schließen"
-        };
-    }
+// Element.closest polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
+if (window.Element && !Element.prototype.closest) {
+	Element.prototype.closest = function (s) {
+		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+		    i = void 0,
+		    el = this;
+		do {
+			i = matches.length;
+			while (--i >= 0 && matches.item(i) !== el) {}
+		} while (i < 0 && (el = el.parentElement));
+		return el;
+	};
+}
 
-}(mejs.i18n.locale.strings));
-/*!
- * This is a i18n.locale language object.
- *
- * Traditional chinese translation by Tim Latz, latz.tim@gmail.com
- *
- * @author
- *   Tim Latz (latz.tim@gmail.com)
- *
- * @see
- *   me-i18n.js
- *
- * @params
- *  - exports - CommonJS, window ..
- */
-;(function(exports, undefined) {
+// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
 
-    "use strict";
+// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
 
-    if (typeof exports.zh === 'undefined') {
-        exports.zh = {
-            "Fullscreen" : "全螢幕",
-            "Go Fullscreen" : "全屏模式",
-            "Turn off Fullscreen" : "退出全屏模式",
-            "Close" : "關閉"
-        };
-    }
+// MIT license
 
-}(mejs.i18n.locale.strings));
+(function () {
+	var lastTime = 0;
+	var vendors = ['ms', 'moz', 'webkit', 'o'];
+	for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+		window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
+		window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
+	}
 
+	if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
+		var currTime = new Date().getTime();
+		var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+		var id = window.setTimeout(function () {
+			callback(currTime + timeToCall);
+		}, timeToCall);
+		lastTime = currTime + timeToCall;
+		return id;
+	};
+
+	if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
+		clearTimeout(id);
+	};
+})();
+
+},{"2":2}]},{},[18,5,4,8,13,10,9,11,12,14]);
diff --git a/lib/mejs/mediaelement.min.js b/lib/mejs/mediaelement.min.js
index d14d65f4..90d697e4 100644
--- a/lib/mejs/mediaelement.min.js
+++ b/lib/mejs/mediaelement.min.js
@@ -1,72 +1,34 @@
 /*!
-* MediaElement.js
-* HTML5 <video> and <audio> shim and player
-* http://mediaelementjs.com/
-*
-* Creates a JavaScript object that mimics HTML5 MediaElement API
-* for browsers that don't understand HTML5 or can't play the provided codec
-* Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3
-*
-* Copyright 2010-2014, John Dyer (http://j.hn)
-* License: MIT
-*
-*/var mejs=mejs||{};mejs.version="2.15.1";mejs.meIndex=0;
-mejs.plugins={silverlight:[{version:[3,0],types:["video/mp4","video/m4v","video/mov","video/wmv","audio/wma","audio/m4a","audio/mp3","audio/wav","audio/mpeg"]}],flash:[{version:[9,0,124],types:["video/mp4","video/m4v","video/mov","video/flv","video/rtmp","video/x-flv","audio/flv","audio/x-flv","audio/mp3","audio/m4a","audio/mpeg","video/youtube","video/x-youtube","application/x-mpegURL"]}],youtube:[{version:null,types:["video/youtube","video/x-youtube","audio/youtube","audio/x-youtube"]}],vimeo:[{version:null,
-types:["video/vimeo","video/x-vimeo"]}]};
-mejs.Utility={encodeUrl:function(a){return encodeURIComponent(a)},escapeHTML:function(a){return a.toString().split("&").join("&amp;").split("<").join("&lt;").split('"').join("&quot;")},absolutizeUrl:function(a){var b=document.createElement("div");b.innerHTML='<a href="'+this.escapeHTML(a)+'">x</a>';return b.firstChild.href},getScriptPath:function(a){for(var b=0,c,d="",e="",g,f,i=document.getElementsByTagName("script"),k=i.length,h=a.length;b<k;b++){g=i[b].src;c=g.lastIndexOf("/");if(c>-1){f=g.substring(c+
-1);g=g.substring(0,c+1)}else{f=g;g=""}for(c=0;c<h;c++){e=a[c];e=f.indexOf(e);if(e>-1){d=g;break}}if(d!=="")break}return d},secondsToTimeCode:function(a,b,c,d){if(typeof c=="undefined")c=false;else if(typeof d=="undefined")d=25;var e=Math.floor(a/3600)%24,g=Math.floor(a/60)%60,f=Math.floor(a%60);a=Math.floor((a%1*d).toFixed(3));return(b||e>0?(e<10?"0"+e:e)+":":"")+(g<10?"0"+g:g)+":"+(f<10?"0"+f:f)+(c?":"+(a<10?"0"+a:a):"")},timeCodeToSeconds:function(a,b,c,d){if(typeof c=="undefined")c=false;else if(typeof d==
-"undefined")d=25;a=a.split(":");b=parseInt(a[0],10);var e=parseInt(a[1],10),g=parseInt(a[2],10),f=0,i=0;if(c)f=parseInt(a[3])/d;return i=b*3600+e*60+g+f},convertSMPTEtoSeconds:function(a){if(typeof a!="string")return false;a=a.replace(",",".");var b=0,c=a.indexOf(".")!=-1?a.split(".")[1].length:0,d=1;a=a.split(":").reverse();for(var e=0;e<a.length;e++){d=1;if(e>0)d=Math.pow(60,e);b+=Number(a[e])*d}return Number(b.toFixed(c))},removeSwf:function(a){var b=document.getElementById(a);if(b&&/object|embed/i.test(b.nodeName))if(mejs.MediaFeatures.isIE){b.style.display=
-"none";(function(){b.readyState==4?mejs.Utility.removeObjectInIE(a):setTimeout(arguments.callee,10)})()}else b.parentNode.removeChild(b)},removeObjectInIE:function(a){if(a=document.getElementById(a)){for(var b in a)if(typeof a[b]=="function")a[b]=null;a.parentNode.removeChild(a)}}};
-mejs.PluginDetector={hasPluginVersion:function(a,b){var c=this.plugins[a];b[1]=b[1]||0;b[2]=b[2]||0;return c[0]>b[0]||c[0]==b[0]&&c[1]>b[1]||c[0]==b[0]&&c[1]==b[1]&&c[2]>=b[2]?true:false},nav:window.navigator,ua:window.navigator.userAgent.toLowerCase(),plugins:[],addPlugin:function(a,b,c,d,e){this.plugins[a]=this.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var e=[0,0,0],g;if(typeof this.nav.plugins!="undefined"&&typeof this.nav.plugins[a]=="object"){if((c=this.nav.plugins[a].description)&&
-!(typeof this.nav.mimeTypes!="undefined"&&this.nav.mimeTypes[b]&&!this.nav.mimeTypes[b].enabledPlugin)){e=c.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(a=0;a<e.length;a++)e[a]=parseInt(e[a].match(/\d+/),10)}}else if(typeof window.ActiveXObject!="undefined")try{if(g=new ActiveXObject(c))e=d(g)}catch(f){}return e}};
-mejs.PluginDetector.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[];if(a=a.GetVariable("$version")){a=a.split(" ")[1].split(",");b=[parseInt(a[0],10),parseInt(a[1],10),parseInt(a[2],10)]}return b});
-mejs.PluginDetector.addPlugin("silverlight","Silverlight Plug-In","application/x-silverlight-2","AgControl.AgControl",function(a){var b=[0,0,0,0],c=function(d,e,g,f){for(;d.isVersionSupported(e[0]+"."+e[1]+"."+e[2]+"."+e[3]);)e[g]+=f;e[g]-=f};c(a,b,0,1);c(a,b,1,1);c(a,b,2,1E4);c(a,b,2,1E3);c(a,b,2,100);c(a,b,2,10);c(a,b,2,1);c(a,b,3,1);return b});
-mejs.MediaFeatures={init:function(){var a=this,b=document,c=mejs.PluginDetector.nav,d=mejs.PluginDetector.ua.toLowerCase(),e,g=["source","track","audio","video"];a.isiPad=d.match(/ipad/i)!==null;a.isiPhone=d.match(/iphone/i)!==null;a.isiOS=a.isiPhone||a.isiPad;a.isAndroid=d.match(/android/i)!==null;a.isBustedAndroid=d.match(/android 2\.[12]/)!==null;a.isBustedNativeHTTPS=location.protocol==="https:"&&(d.match(/android [12]\./)!==null||d.match(/macintosh.* version.* safari/)!==null);a.isIE=c.appName.toLowerCase().indexOf("microsoft")!=
--1||c.appName.toLowerCase().match(/trident/gi)!==null;a.isChrome=d.match(/chrome/gi)!==null;a.isChromium=d.match(/chromium/gi)!==null;a.isFirefox=d.match(/firefox/gi)!==null;a.isWebkit=d.match(/webkit/gi)!==null;a.isGecko=d.match(/gecko/gi)!==null&&!a.isWebkit&&!a.isIE;a.isOpera=d.match(/opera/gi)!==null;a.hasTouch="ontouchstart"in window;a.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;for(c=0;c<g.length;c++)e=document.createElement(g[c]);
-a.supportsMediaTag=typeof e.canPlayType!=="undefined"||a.isBustedAndroid;try{e.canPlayType("video/mp4")}catch(f){a.supportsMediaTag=false}a.hasSemiNativeFullScreen=typeof e.webkitEnterFullscreen!=="undefined";a.hasNativeFullscreen=typeof e.requestFullscreen!=="undefined";a.hasWebkitNativeFullScreen=typeof e.webkitRequestFullScreen!=="undefined";a.hasMozNativeFullScreen=typeof e.mozRequestFullScreen!=="undefined";a.hasMsNativeFullScreen=typeof e.msRequestFullscreen!=="undefined";a.hasTrueNativeFullScreen=
-a.hasWebkitNativeFullScreen||a.hasMozNativeFullScreen||a.hasMsNativeFullScreen;a.nativeFullScreenEnabled=a.hasTrueNativeFullScreen;if(a.hasMozNativeFullScreen)a.nativeFullScreenEnabled=document.mozFullScreenEnabled;else if(a.hasMsNativeFullScreen)a.nativeFullScreenEnabled=document.msFullscreenEnabled;if(a.isChrome)a.hasSemiNativeFullScreen=false;if(a.hasTrueNativeFullScreen){a.fullScreenEventName="";if(a.hasWebkitNativeFullScreen)a.fullScreenEventName="webkitfullscreenchange";else if(a.hasMozNativeFullScreen)a.fullScreenEventName=
-"mozfullscreenchange";else if(a.hasMsNativeFullScreen)a.fullScreenEventName="MSFullscreenChange";a.isFullScreen=function(){if(a.hasMozNativeFullScreen)return b.mozFullScreen;else if(a.hasWebkitNativeFullScreen)return b.webkitIsFullScreen;else if(a.hasMsNativeFullScreen)return b.msFullscreenElement!==null};a.requestFullScreen=function(i){if(a.hasWebkitNativeFullScreen)i.webkitRequestFullScreen();else if(a.hasMozNativeFullScreen)i.mozRequestFullScreen();else a.hasMsNativeFullScreen&&i.msRequestFullscreen()};
-a.cancelFullScreen=function(){if(a.hasWebkitNativeFullScreen)document.webkitCancelFullScreen();else if(a.hasMozNativeFullScreen)document.mozCancelFullScreen();else a.hasMsNativeFullScreen&&document.msExitFullscreen()}}if(a.hasSemiNativeFullScreen&&d.match(/mac os x 10_5/i)){a.hasNativeFullScreen=false;a.hasSemiNativeFullScreen=false}}};mejs.MediaFeatures.init();
-mejs.HtmlMediaElement={pluginType:"native",isFullScreen:false,setCurrentTime:function(a){this.currentTime=a},setMuted:function(a){this.muted=a},setVolume:function(a){this.volume=a},stop:function(){this.pause()},setSrc:function(a){for(var b=this.getElementsByTagName("source");b.length>0;)this.removeChild(b[0]);if(typeof a=="string")this.src=a;else{var c;for(b=0;b<a.length;b++){c=a[b];if(this.canPlayType(c.type)){this.src=c.src;break}}}},setVideoSize:function(a,b){this.width=a;this.height=b}};
-mejs.PluginMediaElement=function(a,b,c){this.id=a;this.pluginType=b;this.src=c;this.events={};this.attributes={}};
-mejs.PluginMediaElement.prototype={pluginElement:null,pluginType:"",isFullScreen:false,playbackRate:-1,defaultPlaybackRate:-1,seekable:[],played:[],paused:true,ended:false,seeking:false,duration:0,error:null,tagName:"",muted:false,volume:1,currentTime:0,play:function(){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType=="vimeo"?this.pluginApi.playVideo():this.pluginApi.playMedia();this.paused=false}},load:function(){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType==
-"vimeo"||this.pluginApi.loadMedia();this.paused=false}},pause:function(){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType=="vimeo"?this.pluginApi.pauseVideo():this.pluginApi.pauseMedia();this.paused=true}},stop:function(){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType=="vimeo"?this.pluginApi.stopVideo():this.pluginApi.stopMedia();this.paused=true}},canPlayType:function(a){var b,c,d,e=mejs.plugins[this.pluginType];for(b=0;b<e.length;b++){d=e[b];if(mejs.PluginDetector.hasPluginVersion(this.pluginType,
-d.version))for(c=0;c<d.types.length;c++)if(a==d.types[c])return"probably"}return""},positionFullscreenButton:function(a,b,c){this.pluginApi!=null&&this.pluginApi.positionFullscreenButton&&this.pluginApi.positionFullscreenButton(Math.floor(a),Math.floor(b),c)},hideFullscreenButton:function(){this.pluginApi!=null&&this.pluginApi.hideFullscreenButton&&this.pluginApi.hideFullscreenButton()},setSrc:function(a){if(typeof a=="string"){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(a));this.src=mejs.Utility.absolutizeUrl(a)}else{var b,
-c;for(b=0;b<a.length;b++){c=a[b];if(this.canPlayType(c.type)){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(c.src));this.src=mejs.Utility.absolutizeUrl(a);break}}}},setCurrentTime:function(a){if(this.pluginApi!=null){this.pluginType=="youtube"||this.pluginType=="vimeo"?this.pluginApi.seekTo(a):this.pluginApi.setCurrentTime(a);this.currentTime=a}},setVolume:function(a){if(this.pluginApi!=null){this.pluginType=="youtube"?this.pluginApi.setVolume(a*100):this.pluginApi.setVolume(a);this.volume=a}},
-setMuted:function(a){if(this.pluginApi!=null){if(this.pluginType=="youtube"){a?this.pluginApi.mute():this.pluginApi.unMute();this.muted=a;this.dispatchEvent("volumechange")}else this.pluginApi.setMuted(a);this.muted=a}},setVideoSize:function(a,b){if(this.pluginElement&&this.pluginElement.style){this.pluginElement.style.width=a+"px";this.pluginElement.style.height=b+"px"}this.pluginApi!=null&&this.pluginApi.setVideoSize&&this.pluginApi.setVideoSize(a,b)},setFullscreen:function(a){this.pluginApi!=null&&
-this.pluginApi.setFullscreen&&this.pluginApi.setFullscreen(a)},enterFullScreen:function(){this.pluginApi!=null&&this.pluginApi.setFullscreen&&this.setFullscreen(true)},exitFullScreen:function(){this.pluginApi!=null&&this.pluginApi.setFullscreen&&this.setFullscreen(false)},addEventListener:function(a,b){this.events[a]=this.events[a]||[];this.events[a].push(b)},removeEventListener:function(a,b){if(!a){this.events={};return true}var c=this.events[a];if(!c)return true;if(!b){this.events[a]=[];return true}for(var d=
-0;d<c.length;d++)if(c[d]===b){this.events[a].splice(d,1);return true}return false},dispatchEvent:function(a){var b,c,d=this.events[a];if(d){c=Array.prototype.slice.call(arguments,1);for(b=0;b<d.length;b++)d[b].apply(null,c)}},hasAttribute:function(a){return a in this.attributes},removeAttribute:function(a){delete this.attributes[a]},getAttribute:function(a){if(this.hasAttribute(a))return this.attributes[a];return""},setAttribute:function(a,b){this.attributes[a]=b},remove:function(){mejs.Utility.removeSwf(this.pluginElement.id);
-mejs.MediaPluginBridge.unregisterPluginElement(this.pluginElement.id)}};
-mejs.MediaPluginBridge={pluginMediaElements:{},htmlMediaElements:{},registerPluginElement:function(a,b,c){this.pluginMediaElements[a]=b;this.htmlMediaElements[a]=c},unregisterPluginElement:function(a){delete this.pluginMediaElements[a];delete this.htmlMediaElements[a]},initPlugin:function(a){var b=this.pluginMediaElements[a],c=this.htmlMediaElements[a];if(b){switch(b.pluginType){case "flash":b.pluginElement=b.pluginApi=document.getElementById(a);break;case "silverlight":b.pluginElement=document.getElementById(b.id);
-b.pluginApi=b.pluginElement.Content.MediaElementJS}b.pluginApi!=null&&b.success&&b.success(b,c)}},fireEvent:function(a,b,c){var d,e;if(a=this.pluginMediaElements[a]){b={type:b,target:a};for(d in c){a[d]=c[d];b[d]=c[d]}e=c.bufferedTime||0;b.target.buffered=b.buffered={start:function(){return 0},end:function(){return e},length:1};a.dispatchEvent(b.type,b)}}};
-mejs.MediaElementDefaults={mode:"auto",plugins:["flash","silverlight","youtube","vimeo"],enablePluginDebug:false,httpsBasicAuthSite:false,type:"",pluginPath:mejs.Utility.getScriptPath(["mediaelement.js","mediaelement.min.js","mediaelement-and-player.js","mediaelement-and-player.min.js"]),flashName:"flashmediaelement.swf",flashStreamer:"",enablePluginSmoothing:false,enablePseudoStreaming:false,pseudoStreamingStartQueryParam:"start",silverlightName:"silverlightmediaelement.xap",defaultVideoWidth:480,
-defaultVideoHeight:270,pluginWidth:-1,pluginHeight:-1,pluginVars:[],timerRate:250,startVolume:0.8,success:function(){},error:function(){}};mejs.MediaElement=function(a,b){return mejs.HtmlMediaElementShim.create(a,b)};
-mejs.HtmlMediaElementShim={create:function(a,b){var c=mejs.MediaElementDefaults,d=typeof a=="string"?document.getElementById(a):a,e=d.tagName.toLowerCase(),g=e==="audio"||e==="video",f=g?d.getAttribute("src"):d.getAttribute("href");e=d.getAttribute("poster");var i=d.getAttribute("autoplay"),k=d.getAttribute("preload"),h=d.getAttribute("controls"),j;for(j in b)c[j]=b[j];f=typeof f=="undefined"||f===null||f==""?null:f;e=typeof e=="undefined"||e===null?"":e;k=typeof k=="undefined"||k===null||k==="false"?
-"none":k;i=!(typeof i=="undefined"||i===null||i==="false");h=!(typeof h=="undefined"||h===null||h==="false");j=this.determinePlayback(d,c,mejs.MediaFeatures.supportsMediaTag,g,f);j.url=j.url!==null?mejs.Utility.absolutizeUrl(j.url):"";if(j.method=="native"){if(mejs.MediaFeatures.isBustedAndroid){d.src=j.url;d.addEventListener("click",function(){d.play()},false)}return this.updateNative(j,c,i,k)}else if(j.method!=="")return this.createPlugin(j,c,e,i,k,h);else{this.createErrorMessage(j,c,e);return this}},
-determinePlayback:function(a,b,c,d,e){var g=[],f,i,k,h={method:"",url:"",htmlMediaElement:a,isVideo:a.tagName.toLowerCase()!="audio"},j;if(typeof b.type!="undefined"&&b.type!=="")if(typeof b.type=="string")g.push({type:b.type,url:e});else for(f=0;f<b.type.length;f++)g.push({type:b.type[f],url:e});else if(e!==null){k=this.formatType(e,a.getAttribute("type"));g.push({type:k,url:e})}else for(f=0;f<a.childNodes.length;f++){i=a.childNodes[f];if(i.nodeType==1&&i.tagName.toLowerCase()=="source"){e=i.getAttribute("src");
-k=this.formatType(e,i.getAttribute("type"));i=i.getAttribute("media");if(!i||!window.matchMedia||window.matchMedia&&window.matchMedia(i).matches)g.push({type:k,url:e})}}if(!d&&g.length>0&&g[0].url!==null&&this.getTypeFromFile(g[0].url).indexOf("audio")>-1)h.isVideo=false;if(mejs.MediaFeatures.isBustedAndroid)a.canPlayType=function(m){return m.match(/video\/(mp4|m4v)/gi)!==null?"maybe":""};if(mejs.MediaFeatures.isChromium)a.canPlayType=function(m){return m.match(/video\/(webm|ogv|ogg)/gi)!==null?"maybe":
-""};if(c&&(b.mode==="auto"||b.mode==="auto_plugin"||b.mode==="native")&&!(mejs.MediaFeatures.isBustedNativeHTTPS&&b.httpsBasicAuthSite===true)){if(!d){f=document.createElement(h.isVideo?"video":"audio");a.parentNode.insertBefore(f,a);a.style.display="none";h.htmlMediaElement=a=f}for(f=0;f<g.length;f++)if(g[f].type=="video/m3u8"||a.canPlayType(g[f].type).replace(/no/,"")!==""||a.canPlayType(g[f].type.replace(/mp3/,"mpeg")).replace(/no/,"")!==""||a.canPlayType(g[f].type.replace(/m4a/,"mp4")).replace(/no/,
-"")!==""){h.method="native";h.url=g[f].url;break}if(h.method==="native"){if(h.url!==null)a.src=h.url;if(b.mode!=="auto_plugin")return h}}if(b.mode==="auto"||b.mode==="auto_plugin"||b.mode==="shim")for(f=0;f<g.length;f++){k=g[f].type;for(a=0;a<b.plugins.length;a++){e=b.plugins[a];i=mejs.plugins[e];for(c=0;c<i.length;c++){j=i[c];if(j.version==null||mejs.PluginDetector.hasPluginVersion(e,j.version))for(d=0;d<j.types.length;d++)if(k==j.types[d]){h.method=e;h.url=g[f].url;return h}}}}if(b.mode==="auto_plugin"&&
-h.method==="native")return h;if(h.method===""&&g.length>0)h.url=g[0].url;return h},formatType:function(a,b){return a&&!b?this.getTypeFromFile(a):b&&~b.indexOf(";")?b.substr(0,b.indexOf(";")):b},getTypeFromFile:function(a){a=a.split("?")[0];a=a.substring(a.lastIndexOf(".")+1).toLowerCase();return(/(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(a)?"video":"audio")+"/"+this.getTypeFromExtension(a)},getTypeFromExtension:function(a){switch(a){case "mp4":case "m4v":case "m4a":return"mp4";case "webm":case "webma":case "webmv":return"webm";
-case "ogg":case "oga":case "ogv":return"ogg";default:return a}},createErrorMessage:function(a,b,c){var d=a.htmlMediaElement,e=document.createElement("div");e.className="me-cannotplay";try{e.style.width=d.width+"px";e.style.height=d.height+"px"}catch(g){}e.innerHTML=b.customError?b.customError:c!==""?'<a href="'+a.url+'"><img src="'+c+'" width="100%" height="100%" /></a>':'<a href="'+a.url+'"><span>'+mejs.i18n.t("Download File")+"</span></a>";d.parentNode.insertBefore(e,d);d.style.display="none";b.error(d)},
-createPlugin:function(a,b,c,d,e,g){c=a.htmlMediaElement;var f=1,i=1,k="me_"+a.method+"_"+mejs.meIndex++,h=new mejs.PluginMediaElement(k,a.method,a.url),j=document.createElement("div"),m;h.tagName=c.tagName;for(m=0;m<c.attributes.length;m++){var q=c.attributes[m];q.specified==true&&h.setAttribute(q.name,q.value)}for(m=c.parentNode;m!==null&&m.tagName.toLowerCase()!=="body"&&m.parentNode!=null;){if(m.parentNode.tagName.toLowerCase()==="p"){m.parentNode.parentNode.insertBefore(m,m.parentNode);break}m=
-m.parentNode}if(a.isVideo){f=b.pluginWidth>0?b.pluginWidth:b.videoWidth>0?b.videoWidth:c.getAttribute("width")!==null?c.getAttribute("width"):b.defaultVideoWidth;i=b.pluginHeight>0?b.pluginHeight:b.videoHeight>0?b.videoHeight:c.getAttribute("height")!==null?c.getAttribute("height"):b.defaultVideoHeight;f=mejs.Utility.encodeUrl(f);i=mejs.Utility.encodeUrl(i)}else if(b.enablePluginDebug){f=320;i=240}h.success=b.success;mejs.MediaPluginBridge.registerPluginElement(k,h,c);j.className="me-plugin";j.id=
-k+"_container";a.isVideo?c.parentNode.insertBefore(j,c):document.body.insertBefore(j,document.body.childNodes[0]);d=["id="+k,"isvideo="+(a.isVideo?"true":"false"),"autoplay="+(d?"true":"false"),"preload="+e,"width="+f,"startvolume="+b.startVolume,"timerrate="+b.timerRate,"flashstreamer="+b.flashStreamer,"height="+i,"pseudostreamstart="+b.pseudoStreamingStartQueryParam];if(a.url!==null)a.method=="flash"?d.push("file="+mejs.Utility.encodeUrl(a.url)):d.push("file="+a.url);b.enablePluginDebug&&d.push("debug=true");
-b.enablePluginSmoothing&&d.push("smoothing=true");b.enablePseudoStreaming&&d.push("pseudostreaming=true");g&&d.push("controls=true");if(b.pluginVars)d=d.concat(b.pluginVars);switch(a.method){case "silverlight":j.innerHTML='<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="'+k+'" name="'+k+'" width="'+f+'" height="'+i+'" class="mejs-shim"><param name="initParams" value="'+d.join(",")+'" /><param name="windowless" value="true" /><param name="background" value="black" /><param name="minRuntimeVersion" value="3.0.0.0" /><param name="autoUpgrade" value="true" /><param name="source" value="'+
-b.pluginPath+b.silverlightName+'" /></object>';break;case "flash":if(mejs.MediaFeatures.isIE){a=document.createElement("div");j.appendChild(a);a.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+k+'" width="'+f+'" height="'+i+'" class="mejs-shim"><param name="movie" value="'+b.pluginPath+b.flashName+"?x="+new Date+'" /><param name="flashvars" value="'+d.join("&amp;")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="scale" value="default" /></object>'}else j.innerHTML=
-'<embed id="'+k+'" name="'+k+'" play="true" loop="false" quality="high" bgcolor="#000000" wmode="transparent" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" src="'+b.pluginPath+b.flashName+'" flashvars="'+d.join("&")+'" width="'+f+'" height="'+i+'" scale="default"class="mejs-shim"></embed>';break;case "youtube":if(a.url.lastIndexOf("youtu.be")!=-1){a=a.url.substr(a.url.lastIndexOf("/")+1);if(a.indexOf("?")!=
--1)a=a.substr(0,a.indexOf("?"))}else a=a.url.substr(a.url.lastIndexOf("=")+1);youtubeSettings={container:j,containerId:j.id,pluginMediaElement:h,pluginId:k,videoId:a,height:i,width:f};mejs.PluginDetector.hasPluginVersion("flash",[10,0,0])?mejs.YouTubeApi.createFlash(youtubeSettings):mejs.YouTubeApi.enqueueIframe(youtubeSettings);break;case "vimeo":b=k+"_player";h.vimeoid=a.url.substr(a.url.lastIndexOf("/")+1);j.innerHTML='<iframe src="//player.vimeo.com/video/'+h.vimeoid+"?api=1&portrait=0&byline=0&title=0&player_id="+
-b+'" width="'+f+'" height="'+i+'" frameborder="0" class="mejs-shim" id="'+b+'"></iframe>';if(typeof $f=="function"){var l=$f(j.childNodes[0]);l.addEvent("ready",function(){function o(n,p,r,s){n={type:r,target:p};if(r=="timeupdate"){p.currentTime=n.currentTime=s.seconds;p.duration=n.duration=s.duration}p.dispatchEvent(n.type,n)}$.extend(l,{playVideo:function(){l.api("play")},stopVideo:function(){l.api("unload")},pauseVideo:function(){l.api("pause")},seekTo:function(n){l.api("seekTo",n)},setVolume:function(n){l.api("setVolume",
-n)},setMuted:function(n){if(n){l.lastVolume=l.api("getVolume");l.api("setVolume",0)}else{l.api("setVolume",l.lastVolume);delete l.lastVolume}}});l.addEvent("play",function(){o(l,h,"play");o(l,h,"playing")});l.addEvent("pause",function(){o(l,h,"pause")});l.addEvent("finish",function(){o(l,h,"ended")});l.addEvent("playProgress",function(n){o(l,h,"timeupdate",n)});h.pluginElement=j;h.pluginApi=l;mejs.MediaPluginBridge.initPlugin(k)})}else console.warn("You need to include froogaloop for vimeo to work")}c.style.display=
-"none";c.removeAttribute("autoplay");return h},updateNative:function(a,b){var c=a.htmlMediaElement,d;for(d in mejs.HtmlMediaElement)c[d]=mejs.HtmlMediaElement[d];b.success(c,c);return c}};
-mejs.YouTubeApi={isIframeStarted:false,isIframeLoaded:false,loadIframeApi:function(){if(!this.isIframeStarted){var a=document.createElement("script");a.src="//www.youtube.com/player_api";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b);this.isIframeStarted=true}},iframeQueue:[],enqueueIframe:function(a){if(this.isLoaded)this.createIframe(a);else{this.loadIframeApi();this.iframeQueue.push(a)}},createIframe:function(a){var b=a.pluginMediaElement,c=new YT.Player(a.containerId,
-{height:a.height,width:a.width,videoId:a.videoId,playerVars:{controls:0},events:{onReady:function(){a.pluginMediaElement.pluginApi=c;mejs.MediaPluginBridge.initPlugin(a.pluginId);setInterval(function(){mejs.YouTubeApi.createEvent(c,b,"timeupdate")},250)},onStateChange:function(d){mejs.YouTubeApi.handleStateChange(d.data,c,b)}}})},createEvent:function(a,b,c){c={type:c,target:b};if(a&&a.getDuration){b.currentTime=c.currentTime=a.getCurrentTime();b.duration=c.duration=a.getDuration();c.paused=b.paused;
-c.ended=b.ended;c.muted=a.isMuted();c.volume=a.getVolume()/100;c.bytesTotal=a.getVideoBytesTotal();c.bufferedBytes=a.getVideoBytesLoaded();var d=c.bufferedBytes/c.bytesTotal*c.duration;c.target.buffered=c.buffered={start:function(){return 0},end:function(){return d},length:1}}b.dispatchEvent(c.type,c)},iFrameReady:function(){for(this.isIframeLoaded=this.isLoaded=true;this.iframeQueue.length>0;)this.createIframe(this.iframeQueue.pop())},flashPlayers:{},createFlash:function(a){this.flashPlayers[a.pluginId]=
-a;var b,c="//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid="+a.pluginId+"&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0";if(mejs.MediaFeatures.isIE){b=document.createElement("div");a.container.appendChild(b);b.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+a.pluginId+'" width="'+a.width+'" height="'+a.height+'" class="mejs-shim"><param name="movie" value="'+
-c+'" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>'}else a.container.innerHTML='<object type="application/x-shockwave-flash" id="'+a.pluginId+'" data="'+c+'" width="'+a.width+'" height="'+a.height+'" style="visibility: visible; " class="mejs-shim"><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>'},flashReady:function(a){var b=this.flashPlayers[a],c=
-document.getElementById(a),d=b.pluginMediaElement;d.pluginApi=d.pluginElement=c;mejs.MediaPluginBridge.initPlugin(a);c.cueVideoById(b.videoId);a=b.containerId+"_callback";window[a]=function(e){mejs.YouTubeApi.handleStateChange(e,c,d)};c.addEventListener("onStateChange",a);setInterval(function(){mejs.YouTubeApi.createEvent(c,d,"timeupdate")},250);mejs.YouTubeApi.createEvent(c,d,"canplay")},handleStateChange:function(a,b,c){switch(a){case -1:c.paused=true;c.ended=true;mejs.YouTubeApi.createEvent(b,
-c,"loadedmetadata");break;case 0:c.paused=false;c.ended=true;mejs.YouTubeApi.createEvent(b,c,"ended");break;case 1:c.paused=false;c.ended=false;mejs.YouTubeApi.createEvent(b,c,"play");mejs.YouTubeApi.createEvent(b,c,"playing");break;case 2:c.paused=true;c.ended=false;mejs.YouTubeApi.createEvent(b,c,"pause");break;case 3:mejs.YouTubeApi.createEvent(b,c,"progress")}}};function onYouTubePlayerAPIReady(){mejs.YouTubeApi.iFrameReady()}function onYouTubePlayerReady(a){mejs.YouTubeApi.flashReady(a)}
-window.mejs=mejs;window.MediaElement=mejs.MediaElement;
-(function(a,b){var c={locale:{language:"",strings:{}},methods:{}};c.getLanguage=function(){return(c.locale.language||window.navigator.userLanguage||window.navigator.language).substr(0,2).toLowerCase()};if(typeof mejsL10n!="undefined")c.locale.language=mejsL10n.language;c.methods.checkPlain=function(d){var e,g,f={"&":"&amp;",'"':"&quot;","<":"&lt;",">":"&gt;"};d=String(d);for(e in f)if(f.hasOwnProperty(e)){g=RegExp(e,"g");d=d.replace(g,f[e])}return d};c.methods.t=function(d,e){if(c.locale.strings&&
-c.locale.strings[e.context]&&c.locale.strings[e.context][d])d=c.locale.strings[e.context][d];return c.methods.checkPlain(d)};c.t=function(d,e){if(typeof d==="string"&&d.length>0){var g=c.getLanguage();e=e||{context:g};return c.methods.t(d,e)}else throw{name:"InvalidArgumentException",message:"First argument is either not a string or empty."};};b.i18n=c})(document,mejs);(function(a){if(typeof mejsL10n!="undefined")a[mejsL10n.language]=mejsL10n.strings})(mejs.i18n.locale.strings);
-(function(a){if(typeof a.de==="undefined")a.de={Fullscreen:"Vollbild","Go Fullscreen":"Vollbild an","Turn off Fullscreen":"Vollbild aus",Close:"Schlie\u00dfen"}})(mejs.i18n.locale.strings);(function(a){if(typeof a.zh==="undefined")a.zh={Fullscreen:"\u5168\u87a2\u5e55","Go Fullscreen":"\u5168\u5c4f\u6a21\u5f0f","Turn off Fullscreen":"\u9000\u51fa\u5168\u5c4f\u6a21\u5f0f",Close:"\u95dc\u9589"}})(mejs.i18n.locale.strings);
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
+ *
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
+ *
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
+ * License: MIT
+ *
+ *//*!
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
+ *
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
+ *
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
+ * License: MIT
+ *
+ */
+!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(8),i=a(16),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{16:16,6:6,8:8}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(16),m=a(17),n=a(7),o=function p(a,b){var c=this;e(this,p);var d=this;d.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(d.defaults,b),d.mediaElement=i["default"].createElement(b.fakeNodeName),d.mediaElement.options=b;var f=a,g=!1;if("string"==typeof a?d.mediaElement.originalNode=i["default"].getElementById(a):(d.mediaElement.originalNode=a,f=a.id),f=f||"mejs_"+Math.random().toString().slice(2),void 0!==d.mediaElement.originalNode&&null!==d.mediaElement.originalNode&&d.mediaElement.appendChild){d.mediaElement.originalNode.setAttribute("id",f+"_from_mejs");var h=d.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(h)&&!d.mediaElement.originalNode.getAttribute("preload")&&d.mediaElement.originalNode.setAttribute("preload","none"),d.mediaElement.originalNode.parentNode.insertBefore(d.mediaElement,d.mediaElement.originalNode),d.mediaElement.appendChild(d.mediaElement.originalNode)}d.mediaElement.id=f,d.mediaElement.renderers={},d.mediaElement.renderer=null,d.mediaElement.rendererName=null,d.mediaElement.changeRenderer=function(a,b){var d=c;if(void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer.name===a)return d.mediaElement.renderer.pause(),d.mediaElement.renderer.stop&&d.mediaElement.renderer.stop(),d.mediaElement.renderer.show(),d.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&(d.mediaElement.renderer.pause(),d.mediaElement.renderer.stop&&d.mediaElement.renderer.stop(),d.mediaElement.renderer.hide());var e=d.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),d.mediaElement.renderer=e,d.mediaElement.rendererName=a,!0;for(var g=d.mediaElement.options.renderers.length?d.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,d.mediaElement.options);return e=f.create(d.mediaElement,l,b),e.name=a,d.mediaElement.renderers[f.name]=e,d.mediaElement.renderer=e,d.mediaElement.rendererName=a,e.show(),!0}}return!1},d.mediaElement.setSize=function(a,b){void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer.setSize(a,b)},d.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=d.mediaElement.options.customError;if(!c){var e=d.mediaElement.originalNode.getAttribute("poster");e&&(c+='<img src="'+e+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var f=0,h=a.length;h>f;f++){var j=a[f];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,d.mediaElement.originalNode.parentNode.insertBefore(b,d.mediaElement.originalNode),d.mediaElement.originalNode.style.display="none",g=!0};var j=k["default"].html5media.properties,o=k["default"].html5media.methods,q=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},r=function(a){"src"!==a&&!function(){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer?d.mediaElement.renderer["get"+b]():null},e=function(a){void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer["set"+b](a)};q(d.mediaElement,a,c,e),d.mediaElement["get"+b]=c,d.mediaElement["set"+b]=e}()},s=function(){return void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer?d.mediaElement.renderer.getSrc():null},t=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,e=a.length;e>c;c++){var f=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:f,type:""!==g&&null!==g&&void 0!==g||!f?g:m.getTypeFromFile(f)})}var h=n.renderer.select(b,d.mediaElement.options.renderers.length?d.mediaElement.options.renderers:[]),i=void 0;return d.mediaElement.paused||(d.mediaElement.pause(),i=l.createEvent("pause",d.mediaElement),d.mediaElement.dispatchEvent(i)),d.mediaElement.originalNode.setAttribute("src",b[0].src||""),d.mediaElement.querySelector(".me_cannotplay")&&d.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(d.mediaElement.createErrorMessage(b),i=l.createEvent("error",d.mediaElement),i.message="No renderer found",void d.mediaElement.dispatchEvent(i)):(d.mediaElement.changeRenderer(h.rendererName,b),void 0===d.mediaElement.renderer||null===d.mediaElement.renderer?(i=l.createEvent("error",d.mediaElement),i.message="Error creating renderer",d.mediaElement.dispatchEvent(i),void d.mediaElement.createErrorMessage(b)):void 0)},u=function(a){d.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),e=0;b>e;e++)c[e]=arguments[e];if(void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&"function"==typeof d.mediaElement.renderer[a])try{d.mediaElement.renderer[a](c)}catch(f){d.mediaElement.createErrorMessage()}return null}};q(d.mediaElement,"src",s,t),d.mediaElement.getSrc=s,d.mediaElement.setSrc=t;for(var v=0,w=j.length;w>v;v++)r(j[v]);for(var x=0,y=o.length;y>x;x++)u(o[x]);if(d.mediaElement.events={},d.mediaElement.addEventListener=function(a,b){d.mediaElement.events[a]=d.mediaElement.events[a]||[],d.mediaElement.events[a].push(b)},d.mediaElement.removeEventListener=function(a,b){if(!a)return d.mediaElement.events={},!0;var c=d.mediaElement.events[a];if(!c)return!0;if(!b)return d.mediaElement.events[a]=[],!0;for(var e=0;e<c.length;e++)if(c[e]===b)return d.mediaElement.events[a].splice(e,1),!0;return!1},d.mediaElement.dispatchEvent=function(a){var b=d.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])},null!==d.mediaElement.originalNode){var z=[];switch(d.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":z.push({type:"",src:d.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var A=void 0,B=void 0,C=void 0,D=d.mediaElement.originalNode.childNodes.length,E=d.mediaElement.originalNode.getAttribute("src");if(E){var F=d.mediaElement.originalNode;z.push({type:m.formatType(E,F.getAttribute("type")),src:E})}for(var G=0;D>G;G++)A=d.mediaElement.originalNode.childNodes[G],A.nodeType===Node.ELEMENT_NODE&&"source"===A.tagName.toLowerCase()&&(B=A.getAttribute("src"),C=m.formatType(B,A.getAttribute("type")),z.push({type:C,src:B}))}z.length>0&&(d.mediaElement.src=z)}return d.mediaElement.options.success&&d.mediaElement.options.success(d.mediaElement,d.mediaElement.originalNode),g&&d.mediaElement.options.error&&d.mediaElement.options.error(d.mediaElement,d.mediaElement.originalNode),d.mediaElement};g["default"].MediaElement=o,c["default"]=o},{16:16,17:17,2:2,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.0.2",g.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;b=b.length?b:this.order,c||!function(){var a=[/^(html5|native)/,/^flash/,/iframe$/],c=function(b){for(var c=0,d=a.length;d>c;c++)if(null!==b.match(a[c]))return c;return a.length};b.sort(function(a,b){return c(a)-c(b)})}();for(var d=0,e=b.length;e>d;d++){var f=b[d],g=this.renderers[f];if(null!==g&&void 0!==g)for(var h=0,i=a.length;i>h;h++)if("function"==typeof g.canPlayType&&"string"==typeof a[h].type&&g.canPlayType(a[h].type))return{rendererName:g.name,src:a[h].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";/*!
+ * This is a `i18n` language object.
+ *
+ * English; This can serve as a template for other languages to translate
+ *
+ * @author
+ *   TBD
+ *   Sascha Greuel (Twitter: @SoftCreatR)
+ *
+ * @see core/i18n.js
+ */
+Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(17),n=a(15),o={isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){"undefined"!=typeof dashjs?o.createInstance(a):o.isScriptLoaded||!function(){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isScriptLoaded=!0}()},mediaReady:function(){for(o.isLoaded=!0,o.isScriptLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=dashjs.MediaPlayer().create();f["default"]["__ready__"+a.id](b)}},p={name:"native_dash",options:{prefix:"native_dash",dash:{path:"//cdn.dashjs.org/latest/dash.mediaplayer.min.js",debug:!1}},canPlayType:function(a){return n.HAS_MSE&&["application/dash+xml"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),i=d.autoplay,m=null,n=null;m=d.cloneNode(!0),b=Object.assign(b,a.options);for(var p=j["default"].html5media.properties,q=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);m["get"+b]=function(){return null!==n?m[a]:null},m["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==n&&("src"===a&&(n.attachSource(b),i&&m.play()),m[a]=b)}},r=0,s=p.length;s>r;r++)q(p[r]);if(f["default"]["__ready__"+e]=function(c){a.dashPlayer=n=c,n.getDebug().setLogToBrowserConsole(b.dash.debug),n.setAutoPlay(g&&"auto"===g||i),n.setScheduleWhilePaused(g&&"auto"===g||i);for(var d=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),e=dashjs.MediaPlayer.events,f=function(b){"loadedmetadata"===b&&n.initialize(m,m.src,!1),m.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},k=0,o=d.length;o>k;k++)f(d[k]);var p=function(b){var c=l.createEvent(b.type,m);c.data=b,a.dispatchEvent(c),"error"===b.type.toLowerCase()&&console.error(b)};for(var q in e)e.hasOwnProperty(q)&&n.on(e[q],p)},c&&c.length>0)for(var t=0,u=c.length;u>t;t++)if(k.renderer.renderers[b.prefix].canPlayType(c[t].type)){m.setAttribute("src",c[t].src);break}m.setAttribute("id",e),d.parentNode.insertBefore(m,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.dash,id:e}),m.setSize=function(a,b){return m.style.width=a+"px",m.style.height=b+"px",m},m.hide=function(){return m.pause(),m.style.display="none",m},m.show=function(){return m.style.display="",m};var v=l.createEvent("rendererready",m);return a.dispatchEvent(v),m}};m.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".mpd")?"application/dash+xml":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(16),p=a(15),q=a(17),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var f=k["default"].html5media.properties,h=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null===d.flashApi)return null;if(void 0===d.flashApi["get_"+a])return null;var b=function(){var b=d.flashApi["get_"+a]();return"buffered"===a?{v:{start:function(){return 0},end:function(){return b},length:1}}:{v:b}}();return"object"===("undefined"==typeof b?"undefined":e(b))?b.v:void 0},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},j=0,l=f.length;l>j;j++)h(f[j]);var r=k["default"].html5media.methods,s=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};r.push("stop");for(var t=0,u=r.length;u>t;t++)s(r[t]);for(var v=["rendererready","loadeddata","loadedmetadata","canplay","error"],w=0,x=v.length;x>w;w++){var y=o.createEvent(v[w],d);a.dispatchEvent(y)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var z=a.originalNode.autoplay,A=["uid="+d.id,"autoplay="+z,"allowScriptAccess="+d.options.shimScriptAccess],B=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),C=B?a.originalNode.height:1,D=B?a.originalNode.width:1;a.originalNode.getAttribute("src")&&A.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(A.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),A.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var E=[];if(p.IS_IE){var F=i["default"].createElement("div");d.flashWrapper.appendChild(F),E=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+D+'"','height="'+C+'"'],B||E.push('style="clip: rect(0 0 0 0); position: absolute;"'),F.outerHTML="<object "+E.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+A.join("&amp;")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else E=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+A.join("&")+'"','width="'+D+'"','height="'+C+'"'],B||E.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+E.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){if(B){d.flashNode.style.position="absolute",d.flashNode.style.width="1px",d.flashNode.style.height="1px";try{d.flashNode.style.clip="rect(0 0 0 0);"}catch(a){}}},d.show=function(){if(B){d.flashNode.style.position="",d.flashNode.style.width="",d.flashNode.style.height="";try{d.flashNode.style.clip=""}catch(a){}}},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var G=0,H=c.length;H>G;G++)if(n.renderer.renderers[b.prefix].canPlayType(c[G].type)){d.setSrc(c[G].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{15:15,16:16,17:17,2:2,3:3,4:4,6:6,7:7}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n=a(17),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){"undefined"!=typeof flvjs?o.createInstance(a):o.isMediaStarted||!function(){a.options.path="string"==typeof a.options.path?a.options.path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.1.0/flv.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}()},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=flvjs.createPlayer(a.options);f["default"]["__ready__"+a.id](b)}},p={name:"native_flv",options:{prefix:"native_flv",flv:{path:"//cdnjs.cloudflare.com/ajax/libs/flv.js/1.1.0/flv.min.js",cors:!0}},canPlayType:function(a){return m.HAS_MSE&&["video/x-flv","video/flv"].includes(a)},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=null,i=null;g=d.cloneNode(!0),b=Object.assign(b,a.options);for(var m=j["default"].html5media.properties,n=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);g["get"+b]=function(){return null!==i?g[a]:null},g["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||null!==i&&(g[a]=b,"src"===a&&(i.unload(),i.detachMediaElement(),i.attachMediaElement(g),i.load()))}},p=0,q=m.length;q>p;p++)n(m[p]);if(f["default"]["__ready__"+e]=function(b){a.flvPlayer=i=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=function(b){"loadedmetadata"===b&&(i.unload(),i.detachMediaElement(),i.attachMediaElement(g),i.load()),g.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},e=0,f=c.length;f>e;e++)d(c[e])},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){g.setAttribute("src",c[r].src);break}g.setAttribute("id",e),d.parentNode.insertBefore(g,d),d.autoplay=!1,d.style.display="none",b.flv.type="flv",b.flv.url=g.getAttribute("src"),o.prepareSettings({options:b.flv,id:e}),g.setSize=function(a,b){return g.style.width=a+"px",g.style.height=b+"px",g},g.hide=function(){return null!==i&&i.pause(),g.style.display="none",g},g.show=function(){return g.style.display="",g},g.destroy=function(){null!==i&&i.destroy()};var t=l.createEvent("rendererready",g);return a.dispatchEvent(t),g}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".flv")?"video/flv":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n=a(17),o={isMediaStarted:!1,isMediaLoaded:!1,creationQueue:[],prepareSettings:function(a){o.isLoaded?o.createInstance(a):(o.loadScript(a),o.creationQueue.push(a))},loadScript:function(a){"undefined"!=typeof Hls?o.createInstance(a):o.isMediaStarted||!function(){a.options.path="string"==typeof a.options.path?a.options.path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js";var b=h["default"].createElement("script"),c=h["default"].getElementsByTagName("script")[0],d=!1;b.src=a.options.path,b.onload=b.onreadystatechange=function(){d||this.readyState&&void 0!==this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(d=!0,o.mediaReady(),b.onload=b.onreadystatechange=null)},c.parentNode.insertBefore(b,c),o.isMediaStarted=!0}()},mediaReady:function(){for(o.isLoaded=!0,o.isMediaLoaded=!0;o.creationQueue.length>0;){var a=o.creationQueue.pop();o.createInstance(a)}},createInstance:function(a){var b=new Hls(a.options);return f["default"]["__ready__"+a.id](b),b}},p={name:"native_hls",options:{prefix:"native_hls",hls:{path:"//cdn.jsdelivr.net/hls.js/latest/hls.min.js",autoStartLoad:!1,debug:!1}},canPlayType:function(a){return m.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:function(a,b,c){var d=a.originalNode,e=a.id+"_"+b.prefix,g=d.getAttribute("preload"),i=d.autoplay,m=null,n=null;n=d.cloneNode(!0),b=Object.assign(b,a.options),b.hls.autoStartLoad=g&&"none"!==g||i;for(var p=j["default"].html5media.properties,q=function(a){var c=""+a.substring(0,1).toUpperCase()+a.substring(1);n["get"+c]=function(){return null!==m?n[a]:null},n["set"+c]=function(c){j["default"].html5media.readOnlyProperties.includes(a)||null!==m&&(n[a]=c,"src"===a&&(m.destroy(),m=o.createInstance({options:b.hls,id:e}),m.loadSource(c),m.attachMedia(n)))}},r=0,s=p.length;s>r;r++)q(p[r]);if(f["default"]["__ready__"+e]=function(b){a.hlsPlayer=m=b;for(var c=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),d=Hls.Events,e=function(b){if("loadedmetadata"===b){m.detachMedia();var c=n.src;m.loadSource(c),m.attachMedia(n)}n.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},f=0,g=c.length;g>f;f++)e(c[f]);var i=void 0,k=void 0,o=function(b,c){var d=l.createEvent(b,n);if(d.data=c,a.dispatchEvent(d),"hlsError"===b&&(console.warn(b,c),c.fatal))switch(c.type){case"mediaError":var e=(new Date).getTime();!i||e-i>3e3?(i=(new Date).getTime(),m.recoverMediaError()):!k||e-k>3e3?(k=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),m.swapAudioCodec(),m.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:m.destroy()}};for(var p in d)d.hasOwnProperty(p)&&m.on(d[p],o)},c&&c.length>0)for(var t=0,u=c.length;u>t;t++)if(k.renderer.renderers[b.prefix].canPlayType(c[t].type)){n.setAttribute("src",c[t].src);break}"auto"===g||i||(n.addEventListener("play",function(){null!==m&&m.startLoad()}),n.addEventListener("pause",function(){null!==m&&m.stopLoad()})),n.setAttribute("id",e),d.parentNode.insertBefore(n,d),d.autoplay=!1,d.style.display="none",o.prepareSettings({options:b.hls,id:e}),n.setSize=function(a,b){return n.style.width=a+"px",n.style.height=b+"px",n},n.hide=function(){return n.pause(),n.style.display="none",n},n.show=function(){return n.style.display="",n},n.destroy=function(){null!==m&&m.destroy()},n.stop=function(){null!==m&&m.stopLoad()};var v=l.createEvent("rendererready",n);return a.dispatchEvent(v),n}};n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes(".m3u8")?"application/x-mpegURL":null}),k.renderer.add(p)},{15:15,16:16,17:17,2:2,3:3,6:6,7:7}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(16),m=a(15),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{15:15,16:16,2:2,3:3,6:6,7:7}],14:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(7),m=a(16),n=a(17),o={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(a){o.isLoaded="undefined"!=typeof YT&&YT.loaded,o.isLoaded?o.createIframe(a):(o.loadIframeApi(),o.iframeQueue.push(a))},loadIframeApi:function(){if(!o.isIframeStarted){var a=i["default"].createElement("script");a.src="//www.youtube.com/player_api";var b=i["default"].getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),o.isIframeStarted=!0}},iFrameReady:function(){for(o.isLoaded=!0,o.isIframeLoaded=!0;o.iframeQueue.length>0;){var a=o.iframeQueue.pop();o.createIframe(a)}},createIframe:function(a){return new YT.Player(a.containerId,a)},getYouTubeId:function(a){var b="";return a.indexOf("?")>0?(b=o.getYouTubeIdFromParam(a),""===b&&(b=o.getYouTubeIdFromUrl(a))):b=o.getYouTubeIdFromUrl(a),b},getYouTubeIdFromParam:function(a){if(void 0===a||null===a||!a.trim().length)return null;for(var b=a.split("?"),c=b[1].split("&"),d="",e=0,f=c.length;f>e;e++){var g=c[e].split("=");if("v"===g[0]){d=g[1];break}}return d},getYouTubeIdFromUrl:function(a){if(void 0===a||null===a||!a.trim().length)return null;var b=a.split("?");return a=b[0],a.substring(a.lastIndexOf("/")+1)},getYouTubeNoCookieUrl:function(a){if(void 0===a||null===a||!a.trim().length||!a.includes("//www.youtube"))return a;var b=a.split("/");return b[2]=b[2].replace(".com","-nocookie.com"),b.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(a){return["video/youtube","video/x-youtube"].includes(a)},create:function(a,b,c){var d={},f=[],h=4,j=null,l=!0,n=!1,p=null,q=1;d.options=b,d.id=a.id+"_"+b.prefix,d.mediaElement=a;for(var r=k["default"].html5media.properties,s=function(b){var c=""+b.substring(0,1).toUpperCase()+b.substring(1);d["get"+c]=function(){if(null!==j){var a=null,c=function(){switch(b){case"currentTime":return{v:j.getCurrentTime()};case"duration":return{v:j.getDuration()};case"volume":return q=j.getVolume()/100,{v:q};case"paused":return{v:l};case"ended":return{v:n};case"muted":return{v:j.isMuted()};case"buffered":var a=j.getVideoLoadedFraction(),c=j.getDuration();return{v:{start:function(){return 0},end:function(){return a*c},length:1}};case"src":return{v:j.getVideoUrl()};case"readyState":return{v:h}}}();return"object"===("undefined"==typeof c?"undefined":e(c))?c.v:a}return null},d["set"+c]=function(c){if(null!==j)switch(b){case"src":var e="string"==typeof c?c:c[0].src,g=o.getYouTubeId(e);a.originalNode.autoplay?j.loadVideoById(g):j.cueVideoById(g);break;case"currentTime":j.seekTo(c);break;case"muted":c?j.mute():j.unMute(),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"volume":q=c,j.setVolume(100*c),setTimeout(function(){var b=m.createEvent("volumechange",d);a.dispatchEvent(b)},50);break;case"readyState":var h=m.createEvent("canplay",d);a.dispatchEvent(h)}else f.push({type:"set",propName:b,value:c})}},t=0,u=r.length;u>t;t++)s(r[t]);for(var v=k["default"].html5media.methods,w=function(a){d[a]=function(){if(null!==j)switch(a){case"play":return l=!1,j.playVideo();case"pause":return l=!0,j.pauseVideo();case"load":return null}else f.push({type:"call",methodName:a})}},x=0,y=v.length;y>x;x++)w(v[x]);var z=i["default"].createElement("div");z.id=d.id,d.options.youtube.nocookie&&a.originalNode.setAttribute("src",o.getYouTubeNoCookieUrl(c[0].src)),a.originalNode.parentNode.insertBefore(z,a.originalNode),a.originalNode.style.display="none";var A="audio"===a.originalNode.tagName.toLowerCase(),B=A?"0":a.originalNode.height,C=A?"0":a.originalNode.width,D=o.getYouTubeId(c[0].src),E={id:d.id,containerId:z.id,videoId:D,height:B,width:C,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},d.options.youtube),origin:g["default"].location.host,events:{onReady:function(b){if(a.youTubeApi=j=b.target,a.youTubeState={paused:!0,ended:!1},f.length)for(var c=0,e=f.length;e>c;c++){var g=f[c];if("set"===g.type){var h=g.propName,i=""+h.substring(0,1).toUpperCase()+h.substring(1);d["set"+i](g.value)}else"call"===g.type&&d[g.methodName]()}p=j.getIframe();for(var k=["mouseover","mouseout"],l=function(b){var c=m.createEvent(b.type,d);a.dispatchEvent(c)},n=0,o=k.length;o>n;n++)p.addEventListener(k[n],l,!1);for(var q=["rendererready","loadeddata","loadedmetadata","canplay"],r=0,s=q.length;s>r;r++){var t=m.createEvent(q[r],d);a.dispatchEvent(t)}},onStateChange:function(b){var c=[];switch(b.data){case-1:c=["loadedmetadata"],l=!0,n=!1;break;case 0:c=["ended"],l=!1,n=!0,d.stopInterval();break;case 1:c=["play","playing"],l=!1,n=!1,d.startInterval();break;case 2:c=["pause"],l=!0,n=!1,d.stopInterval();break;case 3:c=["progress"],n=!1;break;case 5:c=["loadeddata","loadedmetadata","canplay"],l=!0,n=!1}for(var e=0,f=c.length;f>e;e++){var g=m.createEvent(c[e],d);a.dispatchEvent(g)}},onError:function(b){var c=m.createEvent("error",d);c.data=b.data,a.dispatchEvent(c)}}};return A&&(E.playerVars.playsinline=1),o.enqueueIframe(E),d.onEvent=function(b,c,d){null!==d&&void 0!==d&&(a.youTubeState=d)},d.setSize=function(a,b){null!==j&&j.setSize(a,b)},d.hide=function(){d.stopInterval(),d.pause(),p&&(p.style.display="none")},d.show=function(){p&&(p.style.display="")},d.destroy=function(){j.destroy()},d.interval=null,d.startInterval=function(){d.interval=setInterval(function(){var b=m.createEvent("timeupdate",d);a.dispatchEvent(b)},250)},d.stopInterval=function(){d.interval&&clearInterval(d.interval)},d}};g["default"].postMessage&&e(g["default"].addEventListener)&&(g["default"].onYouTubePlayerAPIReady=function(){o.iFrameReady()},n.typeChecks.push(function(a){return a=a.toLowerCase(),a.includes("//www.youtube")||a.includes("//youtu.be")?"video/x-youtube":null}),l.renderer.add(p))},{16:16,17:17,2:2,3:3,6:6,7:7}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,
+j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S,j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1;if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(16),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{16:16,6:6}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}()},{2:2}]},{},[18,5,4,8,13,10,9,11,12,14]);
\ No newline at end of file
diff --git a/lib/mejs/mediaelementplayer.css b/lib/mejs/mediaelementplayer.css
index 432ef5c4..5ae82603 100644
--- a/lib/mejs/mediaelementplayer.css
+++ b/lib/mejs/mediaelementplayer.css
@@ -1,954 +1,671 @@
-.mejs-container {
-	position: relative;
-	background: #000;
-	font-family: Helvetica, Arial;
-	text-align: left;
-	vertical-align: top;
-	text-indent: 0;
+/* Accessibility: hide screen reader texts (and prefer "top" for RTL languages).
+Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-how/ */
+.mejs__offscreen {
+    clip: rect(1px, 1px, 1px, 1px); /* IE8-IE11 - no support for clip-path */
+    clip-path: polygon(0px 0px, 0px 0px, 0px 0px, 0px 0px);
+    position: absolute !important;
+    height: 1px;
+    width: 1px;
+    overflow: hidden;
 }
 
-.me-plugin {
-	position: absolute;
-	height: auto;
-	width: auto;
+.mejs__container {
+    position: relative;
+    background: #000;
+    font-family: "Helvetica", Arial, serif;
+    text-align: left;
+    vertical-align: top;
+    text-indent: 0;
+    box-sizing: border-box;
+    min-width: 250px;
 }
 
-.mejs-embed, .mejs-embed body {
-	width: 100%;
-	height: 100%;
-	margin: 0;
-	padding: 0;
-	background: #000;
-	overflow: hidden;
+.mejs__container .mejs__video {
+    min-height: 140px;
 }
 
-.mejs-fullscreen {
-	/* set it to not show scroll bars so 100% will work */
-	overflow: hidden !important;
+.mejs__container * {
+    box-sizing: border-box;
 }
 
-.mejs-container-fullscreen {
-	position: fixed;
-	left: 0;
-	top: 0;
-	right: 0;
-	bottom: 0;
-	overflow: hidden;
-	z-index: 1000;
+/* Hide native play button from iOS to favor plugin button */
+.mejs__container video::-webkit-media-controls-start-playback-button {
+    display: none !important;
+    -webkit-appearance: none;
 }
-.mejs-container-fullscreen .mejs-mediaelement,
-.mejs-container-fullscreen video {
-	width: 100%;
-	height: 100%;
+
+.mejs__fill-container,
+.mejs__fill-container .mejs__container {
+    width: 100%;
+    height: 100%;
+}
+
+.mejs__fill-container {
+    overflow: hidden;
+    position: relative;
+    margin: 0 auto;
+    background: transparent;
+}
+
+.mejs__container:focus {
+    outline: none;
+}
+
+.mejs__iframe-overlay {
+    position: absolute;
+    width: 100%;
+    height: 100%;
+}
+
+.mejs__embed,
+.mejs__embed body {
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    background: #000;
+    overflow: hidden;
+}
+
+.mejs__fullscreen {
+    overflow: hidden !important;
+}
+
+.mejs__container-fullscreen {
+    position: fixed;
+    left: 0;
+    top: 0;
+    right: 0;
+    bottom: 0;
+    overflow: hidden;
+    z-index: 1000;
 }
 
-.mejs-clear {
-	clear: both;
+.mejs__container-fullscreen .mejs__mediaelement,
+.mejs__container-fullscreen video {
+    width: 100% !important;
+    height: 100% !important;
+}
+
+.mejs__clear {
+    clear: both;
 }
 
 /* Start: LAYERS */
-.mejs-background {
-	position: absolute;
-	top: 0;
-	left: 0;
+.mejs__background {
+    position: absolute;
+    top: 0;
+    left: 0;
+}
+
+.mejs__mediaelement {
+    position: absolute;
+    top: 0;
+    left: 0;
+    width: 100%;
+    height: 100%;
+    z-index: 0;
+}
+
+.mejs__poster {
+    position: absolute;
+    top: 0;
+    left: 0;
+    background-size: contain;
+    background-position: 50% 50%;
+    background-repeat: no-repeat;
+    z-index: 1;
 }
 
-.mejs-mediaelement {
-	position: absolute;
-	top: 0;
-	left: 0;
-	width: 100%;
-	height: 100%;
+:root .mejs__poster-img {
+    display: none;
 }
 
-.mejs-poster {
-	position: absolute;
-	top: 0;
-	left: 0;
-	background-size: contain ;
-	background-position: 50% 50% ;
-	background-repeat: no-repeat ;
+.mejs__poster-img {
+    border: 0;
+    padding: 0;
 }
-:root .mejs-poster img {
-	display: none ;
+
+.mejs__overlay {
+    position: absolute;
+    top: 0;
+    left: 0;
+    z-index: 1;
+}
+.mejs__layer {
+    z-index: 1;
 }
 
-.mejs-poster img {
-	border: 0;
-	padding: 0;
-	border: 0;
+.mejs__overlay-play {
+    cursor: pointer;
 }
 
-.mejs-overlay {
-	position: absolute;
-	top: 0;
-	left: 0;
+.mejs__overlay-button {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 80px;
+    height: 80px;
+    margin: -40px 0 0 -40px;
+    background: url("mejs-controls.svg") no-repeat;
+    background-position: 0 -39px;
+    overflow: hidden;
+    z-index: 1;
 }
 
-.mejs-overlay-play {
-	cursor: pointer;
+.mejs__overlay:hover > .mejs__overlay-button {
+    background-position: -80px -39px;
 }
 
-.mejs-overlay-button {
-	position: absolute;
-	top: 50%;
-	left: 50%;
-	width: 100px;
-	height: 100px;
-	margin: -50px 0 0 -50px;
-	background: url(bigplay.svg) no-repeat;
+.mejs__overlay-loading {
+    position: absolute;
+    top: 50%;
+    left: 50%;
+    width: 80px;
+    height: 80px;
+    margin: -40px 0 0 -40px;
 }
 
-.no-svg .mejs-overlay-button {
-	background-image: url(bigplay.png);
+.mejs__overlay-loading-bg-img {
+    display: block;
+    width: 80px;
+    height: 80px;
+    background: transparent url("mejs-controls.svg") -160px -40px no-repeat;
+    -webkit-animation: mejs-loading-spinner 1s linear infinite;
+    -moz-animation: mejs-loading-spinner 1s linear infinite;
+    animation: mejs-loading-spinner 1s linear infinite;
+    z-index: 1;
 }
 
-.mejs-overlay:hover .mejs-overlay-button {
-	background-position: 0 -100px ;
+@-moz-keyframes mejs-loading-spinner {
+    100% {
+        -moz-transform: rotate(360deg);
+    }
 }
 
-.mejs-overlay-loading {
-	position: absolute;
-	top: 50%;
-	left: 50%;
-	width: 80px;
-	height: 80px;
-	margin: -40px 0 0 -40px;
-	background: #333;
-	background: url(background.png);
-	background: rgba(0, 0, 0, 0.9);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.9)), to(rgba(0,0,0,0.9)));
-	background: -webkit-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
-	background: -moz-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
-	background: -o-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
-	background: -ms-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9));
-	background: linear-gradient(rgba(50,50,50,0.9), rgba(0,0,0,0.9));
+@-webkit-keyframes mejs-loading-spinner {
+    100% {
+        -webkit-transform: rotate(360deg);
+    }
 }
 
-.mejs-overlay-loading span {
-	display: block;
-	width: 80px;
-	height: 80px;
-	background: transparent url(loading.gif) 50% 50% no-repeat;
+@keyframes mejs-loading-spinner {
+    100% {
+        -webkit-transform: rotate(360deg);
+        transform: rotate(360deg);
+    }
 }
 
 /* End: LAYERS */
 
 /* Start: CONTROL BAR */
-.mejs-container .mejs-controls {
-	position: absolute;
-	list-style-type: none;
-	margin: 0;
-	padding: 0;
-	bottom: 0;
-	left: 0;
-	background: url(background.png);
-	background: rgba(0, 0, 0, 0.7);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7)));
-	background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	height: 30px;
-	width: 100%;
-}
-.mejs-container .mejs-controls  div {
-	list-style-type: none;
-	background-image: none;
-	display: block;
-	float: left;
-	margin: 0;
-	padding: 0;
-	width: 26px;
-	height: 26px;
-	font-size: 11px;
-	line-height: 11px;
-	font-family: Helvetica, Arial;
-	border: 0;
-}
-
-.mejs-controls .mejs-button button {
-	cursor: pointer;
-	display: block;
-	font-size: 0;
-	line-height: 0;
-	text-decoration: none;
-	margin: 7px 5px;
-	padding: 0;
-	position: absolute;
-	height: 16px;
-	width: 16px;
-	border: 0;
-	background: transparent url(controls.svg) no-repeat;
-}
-
-.no-svg .mejs-controls .mejs-button button {
-	background-image: url(controls.png);
+.mejs__controls {
+    position: absolute;
+    list-style-type: none;
+    margin: 0;
+    padding: 0 10px;
+    bottom: 0;
+    left: 0;
+    height: 40px;
+    width: 100%;
+    z-index: 1;
+}
+
+.mejs__controls:not([style*="display: none"]) {
+    background: rgba(255, 0, 0, 0.7);
+    background: linear-gradient(rgba(0, 0, 0, 0.0), rgba(0, 0, 0, 0.35));
+}
+
+.mejs__button,
+.mejs__time,
+.mejs__time-rail {
+    float: left;
+    margin: 0;
+    width: 32px;
+    height: 40px;
+    font-size: 10px;
+    line-height: 10px;
+}
+
+.mejs__button > button {
+    cursor: pointer;
+    display: block;
+    font-size: 0;
+    line-height: 0;
+    text-decoration: none;
+    margin: 10px 6px;
+    padding: 0;
+    position: absolute;
+    height: 20px;
+    width: 20px;
+    border: 0;
+    background: transparent url("mejs-controls.svg");
+    overflow: hidden;
 }
 
 /* :focus for accessibility */
-.mejs-controls .mejs-button button:focus {
-	outline: dotted 1px #999;
+.mejs__button > button:focus {
+    outline: dotted 1px #999;
+}
+
+.mejs__container-keyboard-inactive a,
+.mejs__container-keyboard-inactive a:focus,
+.mejs__container-keyboard-inactive button,
+.mejs__container-keyboard-inactive button:focus,
+.mejs__container-keyboard-inactive [role=slider],
+.mejs__container-keyboard-inactive [role=slider]:focus {
+    outline: 0;
 }
 
 /* End: CONTROL BAR */
 
 /* Start: Time (Current / Duration) */
-.mejs-container .mejs-controls .mejs-time {
-	color: #fff;
-	display: block;
-	height: 17px;
-	width: auto;
-	padding: 8px 3px 0 3px ;
-	overflow: hidden;
-	text-align: center;
-	-moz-box-sizing: content-box;
-	-webkit-box-sizing: content-box;
-	box-sizing: content-box;
-}
-
-.mejs-container .mejs-controls .mejs-time span {
-	color: #fff;
-	font-size: 11px;
-	line-height: 12px;
-	display: block;
-	float: left;
-	margin: 1px 2px 0 0;
-	width: auto;
+.mejs__time {
+    color: #fff;
+    display: block;
+    height: 24px;
+    width: auto;
+    font-weight: bold;
+    font-size: 11px;
+    padding: 16px 6px 0 6px;
+    overflow: hidden;
+    text-align: center;
+    box-sizing: content-box;
 }
+
 /* End: Time (Current / Duration) */
 
 /* Start: Play/Pause/Stop */
-.mejs-controls .mejs-play button {
-	background-position: 0 0;
+.mejs__play > button {
+    background-position: 0 0;
 }
 
-.mejs-controls .mejs-pause button {
-	background-position: 0 -16px;
+.mejs__pause > button {
+    background-position: -20px 0;
 }
 
-.mejs-controls .mejs-stop button {
-	background-position: -112px 0;
+.mejs__replay > button {
+    background-position: -280px 0;
 }
-/* Start: Play/Pause/Stop */
+
+/* End: Play/Pause/Stop */
 
 /* Start: Progress Bar */
-.mejs-controls div.mejs-time-rail {
-	direction: ltr;
-	width: 200px;
-	padding-top: 5px;
-}
-
-.mejs-controls .mejs-time-rail span {
-	display: block;
-	position: absolute;
-	width: 180px;
-	height: 10px;
-	-webkit-border-radius: 2px;
-	-moz-border-radius: 2px;
-	border-radius: 2px;
-	cursor: pointer;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-total {
-	margin: 5px;
-	background: #333;
-	background: rgba(50,50,50,0.8);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8)));
-	background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-	background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-	background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-	background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-	background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-buffering {
-	width: 100%;
-	background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-	background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
-	background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-	background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-	background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-	background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
-	-webkit-background-size: 15px 15px;
-	-moz-background-size: 15px 15px;
-	-o-background-size: 15px 15px;
-	background-size: 15px 15px;
-	-webkit-animation: buffering-stripes 2s linear infinite;
-	-moz-animation: buffering-stripes 2s linear infinite;
-	-ms-animation: buffering-stripes 2s linear infinite;
-	-o-animation: buffering-stripes 2s linear infinite;
-	animation: buffering-stripes 2s linear infinite;
-}
-
-@-webkit-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
-@-moz-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
-@-ms-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
-@-o-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
-@keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} }
-
-.mejs-controls .mejs-time-rail .mejs-time-loaded {
-	background: #3caac8;
-	background: rgba(60,170,200,0.8);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(44,124,145,0.8)), to(rgba(78,183,212,0.8)));
-	background: -webkit-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
-	background: -moz-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
-	background: -o-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
-	background: -ms-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8));
-	background: linear-gradient(rgba(44,124,145,0.8), rgba(78,183,212,0.8));
-	width: 0;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-current {
-	background: #fff;
-	background: rgba(255,255,255,0.8);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8)));
-	background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	width: 0;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-handle {
-	display: none;
-	position: absolute;
-	margin: 0;
-	width: 10px;
-	background: #fff;
-	-webkit-border-radius: 5px;
-	-moz-border-radius: 5px;
-	border-radius: 5px;
-	cursor: pointer;
-	border: solid 2px #333;
-	top: -2px;
-	text-align: center;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-float {
-	position: absolute;
-	display: none;
-	background: #eee;
-	width: 36px;
-	height: 17px;
-	border: solid 1px #333;
-	top: -26px;
-	margin-left: -18px;
-	text-align: center;
-	color: #111;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-float-current {
-	margin: 2px;
-	width: 30px;
-	display: block;
-	text-align: center;
-	left: 0;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-float-corner {
-	position: absolute;
-	display: block;
-	width: 0;
-	height: 0;
-	line-height: 0;
-	border: solid 5px #eee;
-	border-color: #eee transparent transparent transparent;
-	-webkit-border-radius: 0;
-	-moz-border-radius: 0;
-	border-radius: 0;
-	top: 15px;
-	left: 13px;
-}
-
-.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float {
-	width: 48px;
-}
-
-.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-current {
-	width: 44px;
-}
-
-.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-corner {
-	left: 18px;
-}
-
-/*
-.mejs-controls .mejs-time-rail:hover .mejs-time-handle {
-	visibility:visible;
-}
-*/
+.mejs__time-rail {
+    direction: ltr;
+    width: 200px;
+    padding-top: 10px;
+    height: 40px;
+    position: relative;
+    margin: 0 10px;
+}
+
+.mejs__time-total,
+.mejs__time-buffering,
+.mejs__time-loaded,
+.mejs__time-current,
+.mejs__time-handle,
+.mejs__time-float,
+.mejs__time-float-current,
+.mejs__time-float-corner,
+.mejs__time-marker {
+    cursor: pointer;
+    display: block;
+    position: absolute;
+    height: 10px;
+    border-radius: 2px;
+}
+
+.mejs__time-total {
+    margin: 5px 0 0 0;
+    background: rgba(255, 255, 255, 0.3);
+    width: 100%;
+}
+
+.mejs__time-buffering {
+    width: 100%;
+    background: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+    background-size: 15px 15px;
+    animation: buffering-stripes 2s linear infinite;
+}
+
+@keyframes buffering-stripes {
+    from {
+        background-position: 0 0;
+    }
+    to {
+        background-position: 30px 0;
+    }
+}
+
+.mejs__time-loaded {
+    background: rgba(255, 255, 255, .3);
+    width: 0;
+}
+
+.mejs__time-current {
+    background: rgba(255, 255, 255, 0.9);
+    width: 0;
+}
+
+.mejs__time-handle {
+    display: none;
+    position: absolute;
+    margin: 0;
+    width: 10px;
+    background: #fff;
+    border-radius: 5px;
+    cursor: pointer;
+    border: solid 2px #333;
+    top: -2px;
+    text-align: center;
+}
+
+.mejs__time-float {
+    position: absolute;
+    display: none;
+    background: #eee;
+    width: 36px;
+    height: 17px;
+    border: solid 1px #333;
+    top: -26px;
+    margin-left: -18px;
+    text-align: center;
+    color: #111;
+}
+
+.mejs__time-float-current {
+    margin: 2px;
+    width: 30px;
+    display: block;
+    text-align: center;
+    left: 0;
+}
+
+.mejs__time-float-corner {
+    position: absolute;
+    display: block;
+    width: 0;
+    height: 0;
+    line-height: 0;
+    border: solid 5px #eee;
+    border-color: #eee transparent transparent transparent;
+    border-radius: 0;
+    top: 15px;
+    left: 13px;
+}
+
+.mejs__long-video .mejs__time-float {
+    width: 64px;
+    margin-left:-23px;
+}
+
+.mejs__long-video .mejs__time-float-current {
+    width: 60px;
+}
+
+.mejs__long-video .mejs__time-float-corner {
+    left: 18px;
+}
+
+.mejs__broadcast {
+    color: #fff;
+    position: absolute;
+    width: 100%;
+    height: 10px;
+    top: 15px;
+}
+
 /* End: Progress Bar */
 
 /* Start: Fullscreen */
-.mejs-controls .mejs-fullscreen-button button {
-	background-position: -32px 0;
+.mejs__fullscreen-button > button {
+    background-position: -80px 0;
 }
 
-.mejs-controls .mejs-unfullscreen button {
-	background-position: -32px -16px;
+.mejs__unfullscreen > button {
+    background-position: -100px 0;
 }
-/* End: Fullscreen */
 
+/* End: Fullscreen */
 
 /* Start: Mute/Volume */
-.mejs-controls .mejs-volume-button {
-}
-
-.mejs-controls .mejs-mute button {
-	background-position: -16px -16px;
-}
-
-.mejs-controls .mejs-unmute button {
-	background-position: -16px 0;
-}
-
-.mejs-controls .mejs-volume-button {
-	position: relative;
-}
-
-.mejs-controls .mejs-volume-button .mejs-volume-slider {
-	display: none;
-	height: 115px;
-	width: 25px;
-	background: url(background.png);
-	background: rgba(50, 50, 50, 0.7);
-	-webkit-border-radius: 0;
-	-moz-border-radius: 0;
-	border-radius: 0;
-	top: -115px;
-	left: 0;
-	z-index: 1;
-	position: absolute;
-	margin: 0;
-}
-
-.mejs-controls .mejs-volume-button:hover {
-	-webkit-border-radius: 0 0 4px 4px;
-	-moz-border-radius: 0 0 4px 4px;
-	border-radius: 0 0 4px 4px;
-}
-
-/*
-.mejs-controls .mejs-volume-button:hover .mejs-volume-slider {
-	display: block;
-}
-*/
-
-.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total {
-	position: absolute;
-	left: 11px;
-	top: 8px;
-	width: 2px;
-	height: 100px;
-	background: #ddd;
-	background: rgba(255, 255, 255, 0.5);
-	margin: 0;
-}
-
-.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current {
-	position: absolute;
-	left: 11px;
-	top: 8px;
-	width: 2px;
-	height: 100px;
-	background: #ddd;
-	background: rgba(255, 255, 255, 0.9);
-	margin: 0;
-}
-
-.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle {
-	position: absolute;
-	left: 4px;
-	top: -3px;
-	width: 16px;
-	height: 6px;
-	background: #ddd;
-	background: rgba(255, 255, 255, 0.9);
-	cursor: N-resize;
-	-webkit-border-radius: 1px;
-	-moz-border-radius: 1px;
-	border-radius: 1px;
-	margin: 0;
-}
-
-/* horizontal version */
-.mejs-controls div.mejs-horizontal-volume-slider {
-	height: 26px;
-	width: 60px;
-	position: relative;
-}
-
-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total {
-	position: absolute;
-	left: 0;
-	top: 11px;
-	width: 50px;
-	height: 8px;
-	margin: 0;
-	padding: 0;
-	font-size: 1px;
-	-webkit-border-radius: 2px;
-	-moz-border-radius: 2px;
-	border-radius: 2px;
-	background: #333;
-	background: rgba(50,50,50,0.8);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8)));
-	background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-	background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-	background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-	background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-	background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8));
-}
-
-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
-	position: absolute;
-	left: 0;
-	top: 11px;
-	width: 50px;
-	height: 8px;
-	margin: 0;
-	padding: 0;
-	font-size: 1px;
-	-webkit-border-radius: 2px;
-	-moz-border-radius: 2px;
-	border-radius: 2px;
-	background: #fff;
-	background: rgba(255,255,255,0.8);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8)));
-	background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-	background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8));
-}
-
-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle {
-	display: none;
+.mejs__mute > button {
+    background-position: -60px 0;
+}
+
+.mejs__unmute > button {
+    background-position: -40px 0;
+}
+
+.mejs__volume-button {
+    position: relative;
+}
+
+.mejs__volume-button > .mejs__volume-slider {
+    display: none;
+    height: 115px;
+    width: 25px;
+    background: rgba(50, 50, 50, 0.7);
+    border-radius: 0;
+    top: -115px;
+    left: 5px;
+    z-index: 1;
+    position: absolute;
+    margin: 0;
+}
+
+.mejs__volume-button:hover {
+    border-radius: 0 0 4px 4px;
+}
+
+.mejs__volume-total {
+    position: absolute;
+    left: 11px;
+    top: 8px;
+    width: 2px;
+    height: 100px;
+    background: rgba(255, 255, 255, 0.5);
+    margin: 0;
+}
+
+.mejs__volume-current {
+    position: absolute;
+    left: 0;
+    bottom: 0;
+    width: 100%;
+    height: 100%;
+    background: rgba(255, 255, 255, 0.9);
+    margin: 0;
+}
+
+.mejs__volume-handle {
+    position: absolute;
+    left: 0;
+    bottom: 100%;
+    width: 16px;
+    height: 6px;
+    margin: 0 0 -3px -7px;
+    background: rgba(255, 255, 255, 0.9);
+    cursor: ns-resize;
+    border-radius: 1px;
+}
+
+.mejs__horizontal-volume-slider {
+    height: 36px;
+    width: 56px;
+    position: relative;
+    display: block;
+    float: left;
+    vertical-align: middle;
+}
+
+.mejs__horizontal-volume-total {
+    position: absolute;
+    left: 0;
+    top: 16px;
+    width: 50px;
+    height: 8px;
+    margin: 0;
+    padding: 0;
+    font-size: 1px;
+    border-radius: 2px;
+    background: rgba(50, 50, 50, 0.8);
+}
+
+.mejs__horizontal-volume-current {
+    position: absolute;
+    left: 0;
+    top: 0;
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    font-size: 1px;
+    border-radius: 2px;
+    background: rgba(255, 255, 255, 0.8);
+}
+
+.mejs__horizontal-volume-handle {
+    display: none;
 }
 
 /* End: Mute/Volume */
 
 /* Start: Track (Captions and Chapters) */
-.mejs-controls .mejs-captions-button {
-	position: relative;
-}
-
-.mejs-controls .mejs-captions-button button {
-	background-position: -48px 0;
-}
-.mejs-controls .mejs-captions-button .mejs-captions-selector {
-	visibility: hidden;
-	position: absolute;
-	bottom: 26px;
-	right: -51px;
-	width: 85px;
-	height: 100px;
-	background: url(background.png);
-	background: rgba(50,50,50,0.7);
-	border: solid 1px transparent;
-	padding: 10px 10px 0 10px;
-	overflow: hidden;
-	-webkit-border-radius: 0;
-	-moz-border-radius: 0;
-	border-radius: 0;
-}
-
-/*
-.mejs-controls .mejs-captions-button:hover  .mejs-captions-selector {
-	visibility: visible;
-}
-*/
-
-.mejs-controls .mejs-captions-button .mejs-captions-selector ul {
-	margin: 0;
-	padding: 0;
-	display: block;
-	list-style-type: none !important;
-	overflow: hidden;
-}
-
-.mejs-controls .mejs-captions-button .mejs-captions-selector ul li {
-	margin: 0 0 6px 0;
-	padding: 0;
-	list-style-type: none !important;
-	display: block;
-	color: #fff;
-	overflow: hidden;
-}
-
-.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input {
-	clear: both;
-	float: left;
-	margin: 3px 3px 0 5px;
-}
-
-.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label {
-	width: 55px;
-	float: left;
-	padding: 4px 0 0 0;
-	line-height: 15px;
-	font-family: helvetica, arial;
-	font-size: 10px;
-}
-
-.mejs-controls .mejs-captions-button .mejs-captions-translations {
-	font-size: 10px;
-	margin: 0 0 5px 0;
-}
-
-.mejs-chapters {
-	position: absolute;
-	top: 0;
-	left: 0;
-	-xborder-right: solid 1px #fff;
-	width: 10000px;
-	z-index: 1;
-}
-
-.mejs-chapters .mejs-chapter {
-	position: absolute;
-	float: left;
-	background: #222;
-	background: rgba(0, 0, 0, 0.7);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7)));
-	background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7));
-	filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#323232,endColorstr=#000000);
-	overflow: hidden;
-	border: 0;
-}
-
-.mejs-chapters .mejs-chapter .mejs-chapter-block {
-	font-size: 11px;
-	color: #fff;
-	padding: 5px;
-	display: block;
-	border-right: solid 1px #333;
-	border-bottom: solid 1px #333;
-	cursor: pointer;
-}
-
-.mejs-chapters .mejs-chapter .mejs-chapter-block-last {
-	border-right: none;
-}
-
-.mejs-chapters .mejs-chapter .mejs-chapter-block:hover {
-	background: #666;
-	background: rgba(102,102,102, 0.7);
-	background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(102,102,102,0.7)), to(rgba(50,50,50,0.6)));
-	background: -webkit-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
-	background: -moz-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
-	background: -o-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
-	background: -ms-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6));
-	background: linear-gradient(rgba(102,102,102,0.7), rgba(50,50,50,0.6));
-	filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#666666,endColorstr=#323232);
+.mejs__captions-button, .mejs__chapters-button {
+    position: relative;
 }
 
-.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title {
-	font-size: 12px;
-	font-weight: bold;
-	display: block;
-	white-space: nowrap;
-	text-overflow: ellipsis;
-	margin: 0 0 3px 0;
-	line-height: 12px;
+.mejs__captions-button > button {
+    background-position: -140px 0;
 }
 
-.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan {
-	font-size: 12px;
-	line-height: 12px;
-	margin: 3px 0 4px 0;
-	display: block;
-	white-space: nowrap;
-	text-overflow: ellipsis;
+.mejs__chapters-button > button {
+    background-position: -302px 0;
 }
 
-.mejs-captions-layer {
-	position: absolute;
-	bottom: 0;
-	left: 0;
-	text-align:center;
-	line-height: 20px;
-	font-size: 16px;
-	color: #fff;
+.mejs__captions-button > .mejs__captions-selector, .mejs__chapters-button > .mejs__chapters-selector {
+    visibility: hidden;
+    position: absolute;
+    bottom: 40px;
+    right: -51px;
+    width: 85px;
+    background: rgba(50, 50, 50, 0.7);
+    border: solid 1px transparent;
+    padding: 0;
+    overflow: hidden;
+    border-radius: 0;
 }
 
-.mejs-captions-layer  a {
-	color: #fff;
-	text-decoration: underline;
+.mejs__chapters-button > .mejs__chapters-selector {
+    width: 110px;
 }
 
-.mejs-captions-layer[lang=ar] {
-	font-size: 20px;
-	font-weight: normal;
+.mejs__captions-button > .mejs__captions-selector, .mejs__chapters-button > .mejs__chapters-selector {
+    visibility: visible;
 }
 
-.mejs-captions-position {
-	position: absolute;
-	width: 100%;
-	bottom: 15px;
-	left: 0;
-}
-
-.mejs-captions-position-hover {
-	bottom: 35px;
-}
-
-.mejs-captions-text {
-	padding: 3px 5px;
-	background: url(background.png);
-	background: rgba(20, 20, 20, 0.5);
-	white-space: pre-wrap;
+.mejs__captions-selector-list, .mejs__chapters-selector-list {
+    margin: 0;
+    padding: 0;
+    display: block;
+    list-style-type: none !important;
+    overflow: hidden;
 }
-/* End: Track (Captions and Chapters) */
 
-/* Start: Error */
-.me-cannotplay {
+.mejs__captions-selector-list-item, .mejs__chapters-selector-list-item {
+    margin: 0 0 6px 0;
+    padding: 0 10px;
+    list-style-type: none !important;
+    display: block;
+    color: #fff;
+    overflow: hidden;
+    cursor: pointer;
 }
 
-.me-cannotplay a {
-	color: #fff;
-	font-weight: bold;
+.mejs__captions-selector-list-item:hover, .mejs__chapters-selector-list-item:hover {
+    background-color: rgb(200, 200, 200) !important;
+    background-color: rgba(255, 255, 255, 0.4) !important;
 }
 
-.me-cannotplay span {
-	padding: 15px;
-	display: block;
+.mejs__captions-selector-input, .mejs__chapters-selector-input {
+    clear: both;
+    float: left;
+    margin: 3px 3px 0 5px;
+    position: absolute;
+    left: -1000px;
 }
-/* End: Error */
 
-
-/* Start: Loop */
-.mejs-controls .mejs-loop-off button {
-	background-position: -64px -16px;
+.mejs__captions-selector-label, .mejs__chapters-selector-label {
+    width: 55px;
+    float: left;
+    padding: 4px 0 0 0;
+    line-height: 15px;
+    font-size: 10px;
+    cursor: pointer;
 }
 
-.mejs-controls .mejs-loop-on button {
-	background-position: -64px 0;
+.mejs__captions-selected, .mejs__chapters-selected {
+    color: rgba(33, 248, 248, 1);
 }
 
-/* End: Loop */
-
-/* Start: backlight */
-.mejs-controls .mejs-backlight-off button {
-	background-position: -80px -16px;
+.mejs__captions-translations {
+    font-size: 10px;
+    margin: 0 0 5px 0;
 }
 
-.mejs-controls .mejs-backlight-on button {
-	background-position: -80px 0;
+.mejs__captions-layer {
+    position: absolute;
+    bottom: 0;
+    left: 0;
+    text-align: center;
+    line-height: 20px;
+    font-size: 16px;
+    color: #fff;
 }
-/* End: backlight */
 
-/* Start: Picture Controls */
-.mejs-controls .mejs-picturecontrols-button {
-	background-position: -96px 0;
+.mejs__captions-layer a {
+    color: #fff;
+    text-decoration: underline;
 }
-/* End: Picture Controls */
-
 
-/* context menu */
-.mejs-contextmenu {
-	position: absolute;
-	width: 150px;
-	padding: 10px;
-	border-radius: 4px;
-	top: 0;
-	left: 0;
-	background: #fff;
-	border: solid 1px #999;
-	z-index: 1001; /* make sure it shows on fullscreen */
-}
-.mejs-contextmenu .mejs-contextmenu-separator {
-	height: 1px;
-	font-size: 0;
-	margin: 5px 6px;
-	background: #333;
+.mejs__captions-layer[lang=ar] {
+    font-size: 20px;
+    font-weight: normal;
 }
 
-.mejs-contextmenu .mejs-contextmenu-item {
-	font-family: Helvetica, Arial;
-	font-size: 12px;
-	padding: 4px 6px;
-	cursor: pointer;
-	color: #333;
-}
-.mejs-contextmenu .mejs-contextmenu-item:hover {
-	background: #2C7C91;
-	color: #fff;
+.mejs__captions-position {
+    position: absolute;
+    width: 100%;
+    bottom: 15px;
+    left: 0;
 }
 
-/* Start: Source Chooser */
-.mejs-controls .mejs-sourcechooser-button {
-	position: relative;
+.mejs__captions-position-hover {
+    bottom: 35px;
 }
 
-.mejs-controls .mejs-sourcechooser-button button {
-	background-position: -128px 0;
+.mejs__captions-text, .mejs__captions-text * {
+    padding: 0;
+    background: rgba(20, 20, 20, 0.5);
+    white-space: pre-wrap;
+    box-shadow: 5px 0 0 rgba(20, 20, 20, 0.5), -5px 0 0 rgba(20, 20, 20, 0.5);
 }
 
-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector {
-	visibility: hidden;
-	position: absolute;
-	bottom: 26px;
-	right: -10px;
-	width: 130px;
-	height: 100px;
-	background: url(background.png);
-	background: rgba(50,50,50,0.7);
-	border: solid 1px transparent;
-	padding: 10px;
-	overflow: hidden;
-	-webkit-border-radius: 0;
-	-moz-border-radius: 0;
-	border-radius: 0;
+/* End: Track (Captions and Chapters) */
+
+/* Start: Error */
+.me_cannotplay a {
+    font-weight: bold;
 }
 
-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul {
-	margin: 0;
-	padding: 0;
-	display: block;
-	list-style-type: none !important;
-	overflow: hidden;
+.mejs__container .me_cannotplay a {
+    color: #fff;
 }
 
-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li {
-	margin: 0 0 6px 0;
-	padding: 0;
-	list-style-type: none !important;
-	display: block;
-	color: #fff;
-	overflow: hidden;
-}
-
-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input {
-	clear: both;
-	float: left;
-	margin: 3px 3px 0 5px;
-}
-
-.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label {
-	width: 100px;
-	float: left;
-	padding: 4px 0 0 0;
-	line-height: 15px;
-	font-family: helvetica, arial;
-	font-size: 10px;
-}
-/* End: Source Chooser */
-
-/* Start: Postroll */
-.mejs-postroll-layer {
-	position: absolute;
-	bottom: 0;
-	left: 0;
-	width: 100%;
-	height: 100%;
-	background: url(background.png);
-	background: rgba(50,50,50,0.7);
-	z-index: 1000;
-	overflow: hidden;
-}
-.mejs-postroll-layer-content {
-	width: 100%;
-	height: 100%;
-}
-.mejs-postroll-close {
-	position: absolute;
-	right: 0;
-	top: 0;
-	background: url(background.png);
-	background: rgba(50,50,50,0.7);
-	color: #fff;
-	padding: 4px;
-	z-index: 100;
-	cursor: pointer;
-}
-/* End: Postroll */
-
-
-/* Start: Speed */
-div.mejs-speed-button {
-	width: 46px !important;
-	position: relative;
-}
-
-.mejs-controls .mejs-button.mejs-speed-button button {
-	background: transparent;
-	width: 36px;
-	font-size: 11px;
-	line-height: normal;
-	color: #ffffff;
-}
-
-.mejs-controls .mejs-speed-button .mejs-speed-selector {
-	visibility: hidden;
-	position: absolute;
-	top: -100px;
-	left: -10px;
-	width: 60px;
-	height: 100px;
-	background: url(background.png);
-	background: rgba(50, 50, 50, 0.7);
-	border: solid 1px transparent;
-	padding: 0;
-	overflow: hidden;
-	-webkit-border-radius: 0;
-	-moz-border-radius: 0;
-	border-radius: 0;
-}
-
-.mejs-controls .mejs-speed-button:hover > .mejs-speed-selector {
-	visibility: visible;
-}
-
-.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label.mejs-speed-selected {
-	color: rgba(33, 248, 248, 1);
-}
-
-.mejs-controls .mejs-speed-button .mejs-speed-selector ul {
-	margin: 0;
-	padding: 0;
-	display: block;
-	list-style-type: none !important;
-	overflow: hidden;
-}
-
-.mejs-controls .mejs-speed-button .mejs-speed-selector ul li {
-	margin: 0 0 6px 0;
-	padding: 0 10px;
-	list-style-type: none !important;
-	display: block;
-	color: #fff;
-	overflow: hidden;
-}
-
-.mejs-controls .mejs-speed-button .mejs-speed-selector ul li input {
-	clear: both;
-	float: left;
-	margin: 3px 3px 0 5px;
-	display: none;
-}
-
-.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label {
-	width: 60px;
-	float: left;
-	padding: 4px 0 0 0;
-	line-height: 15px;
-	font-family: helvetica, arial;
-	font-size: 11.5px;
-	color: white;
-	margin-left: 5px;
-	cursor: pointer;
-}
-
-.mejs-controls .mejs-speed-button .mejs-speed-selector ul li:hover {
-	background-color: rgb(200, 200, 200) !important;
-	background-color: rgba(255,255,255,.4) !important;
-}
-/* End: Speed */
+.me_cannotplay span {
+    padding: 15px;
+    display: block;
+}
+/* End: Error */
\ No newline at end of file
diff --git a/lib/mejs/mediaelementplayer.js b/lib/mejs/mediaelementplayer.js
index c1c1622f..deb9bf46 100644
--- a/lib/mejs/mediaelementplayer.js
+++ b/lib/mejs/mediaelementplayer.js
@@ -1,3328 +1,7562 @@
 /*!
- * MediaElementPlayer
- * http://mediaelementjs.com/
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
  *
- * Creates a controller bar for HTML5 <video> add <audio> tags
- * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
  *
- * Copyright 2010-2013, John Dyer (http://j.hn/)
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
  * License: MIT
  *
- */
-if (typeof jQuery != 'undefined') {
-	mejs.$ = jQuery;
-} else if (typeof ender != 'undefined') {
-	mejs.$ = ender;
+ */(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){
+
+},{}],2:[function(_dereq_,module,exports){
+(function (global){
+var topLevel = typeof global !== 'undefined' ? global :
+    typeof window !== 'undefined' ? window : {}
+var minDoc = _dereq_(1);
+
+if (typeof document !== 'undefined') {
+    module.exports = document;
+} else {
+    var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
+
+    if (!doccy) {
+        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
+    }
+
+    module.exports = doccy;
 }
-(function ($) {
 
-	// default player values
-	mejs.MepDefaults = {
-		// url to poster (to fix iOS 3.x)
-		poster: '',
-		// When the video is ended, we can show the poster.
-		showPosterWhenEnded: false,
-		// default if the <video width> is not specified
-		defaultVideoWidth: 480,
-		// default if the <video height> is not specified
-		defaultVideoHeight: 270,
-		// if set, overrides <video width>
-		videoWidth: -1,
-		// if set, overrides <video height>
-		videoHeight: -1,
-		// default if the user doesn't specify
-		defaultAudioWidth: 400,
-		// default if the user doesn't specify
-		defaultAudioHeight: 30,
-
-		// default amount to move back when back key is pressed
-		defaultSeekBackwardInterval: function(media) {
-			return (media.duration * 0.05);
-		},
-		// default amount to move forward when forward key is pressed
-		defaultSeekForwardInterval: function(media) {
-			return (media.duration * 0.05);
-		},
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"1":1}],3:[function(_dereq_,module,exports){
+(function (global){
+if (typeof window !== "undefined") {
+    module.exports = window;
+} else if (typeof global !== "undefined") {
+    module.exports = global;
+} else if (typeof self !== "undefined"){
+    module.exports = self;
+} else {
+    module.exports = {};
+}
 
-		// set dimensions via JS instead of CSS
-		setDimensions: true,
-
-		// width of audio player
-		audioWidth: -1,
-		// height of audio player
-		audioHeight: -1,
-		// initial volume when the player starts (overrided by user cookie)
-		startVolume: 0.8,
-		// useful for <audio> player loops
-		loop: false,
-		// rewind to beginning when media ends
-                autoRewind: true,
-		// resize to media dimensions
-		enableAutosize: true,
-		// forces the hour marker (##:00:00)
-		alwaysShowHours: false,
-
-		// show framecount in timecode (##:00:00:00)
-		showTimecodeFrameCount: false,
-		// used when showTimecodeFrameCount is set to true
-		framesPerSecond: 25,
-
-		// automatically calculate the width of the progress bar based on the sizes of other elements
-		autosizeProgress : true,
-		// Hide controls when playing and mouse is not over the video
-		alwaysShowControls: false,
-		// Display the video control
-		hideVideoControlsOnLoad: false,
-		// Enable click video element to toggle play/pause
-		clickToPlayPause: true,
-		// force iPad's native controls
-		iPadUseNativeControls: false,
-		// force iPhone's native controls
-		iPhoneUseNativeControls: false,
-		// force Android's native controls
-		AndroidUseNativeControls: false,
-		// features to show
-		features: ['playpause','current','progress','duration','tracks','volume','fullscreen'],
-		// only for dynamic
-		isVideo: true,
-
-		// turns keyboard support on and off for this instance
-		enableKeyboard: true,
-
-		// whenthis player starts, it will pause other players
-		pauseOtherPlayers: true,
-
-		// array of keyboard actions such as play pause
-		keyActions: [
-				{
-						keys: [
-								32, // SPACE
-								179 // GOOGLE play/pause button
-							  ],
-						action: function(player, media) {
-								if (media.paused || media.ended) {
-										player.play();
-								} else {
-										player.pause();
-								}
-						}
-				},
-				{
-						keys: [38], // UP
-						action: function(player, media) {
-								player.container.find('.mejs-volume-slider').css('display','block');
-								if (player.isVideo) {
-										player.showControls();
-										player.startControlsTimer();
-								}
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],4:[function(_dereq_,module,exports){
+'use strict';
 
-								var newVolume = Math.min(media.volume + 0.1, 1);
-								media.setVolume(newVolume);
-						}
-				},
-				{
-						keys: [40], // DOWN
-						action: function(player, media) {
-								player.container.find('.mejs-volume-slider').css('display','block');
-								if (player.isVideo) {
-										player.showControls();
-										player.startControlsTimer();
-								}
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
 
-								var newVolume = Math.max(media.volume - 0.1, 0);
-								media.setVolume(newVolume);
-						}
-				},
-				{
-						keys: [
-								37, // LEFT
-								227 // Google TV rewind
-						],
-						action: function(player, media) {
-								if (!isNaN(media.duration) && media.duration > 0) {
-										if (player.isVideo) {
-												player.showControls();
-												player.startControlsTimer();
-										}
-
-										// 5%
-										var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);
-										media.setCurrentTime(newTime);
-								}
-						}
-				},
-				{
-						keys: [
-								39, // RIGHT
-								228 // Google TV forward
-						],
-						action: function(player, media) {
-								if (!isNaN(media.duration) && media.duration > 0) {
-										if (player.isVideo) {
-												player.showControls();
-												player.startControlsTimer();
-										}
-
-										// 5%
-										var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);
-										media.setCurrentTime(newTime);
-								}
-						}
-				},
-				{
-						keys: [70], // F
-						action: function(player, media) {
-								if (typeof player.enterFullScreen != 'undefined') {
-										if (player.isFullScreen) {
-												player.exitFullScreen();
-										} else {
-												player.enterFullScreen();
-										}
-								}
-						}
-				},
-				{
-						keys: [77], // M
-						action: function(player, media) {
-								player.container.find('.mejs-volume-slider').css('display','block');
-								if (player.isVideo) {
-										player.showControls();
-										player.startControlsTimer();
-								}
-								if (player.media.muted) {
-										player.setMuted(false);
-								} else {
-										player.setMuted(true);
-								}
-						}
-				}
-		]
-	};
+var _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; };
 
-	mejs.mepIndex = 0;
+var _mejs = _dereq_(6);
 
-	mejs.players = {};
+var _mejs2 = _interopRequireDefault(_mejs);
 
-	// wraps a MediaElement object in player controls
-	mejs.MediaElementPlayer = function(node, o) {
-		// enforce object, even without "new" (via John Resig)
-		if ( !(this instanceof mejs.MediaElementPlayer) ) {
-			return new mejs.MediaElementPlayer(node, o);
-		}
+var _en = _dereq_(14);
 
-		var t = this;
+var _general = _dereq_(21);
 
-		// these will be reset after the MediaElement.success fires
-		t.$media = t.$node = $(node);
-		t.node = t.media = t.$media[0];
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-		// check for existing player
-		if (typeof t.node.player != 'undefined') {
-			return t.node.player;
-		} else {
-			// attach player to DOM node for reference
-			t.node.player = t;
-		}
+/**
+ * Locale.
+ *
+ * This object manages translations with pluralization. Also deals with WordPress compatibility.
+ * @type {Object}
+ */
+var i18n = { lang: 'en', en: _en.EN };
+
+/**
+ * Language setter/getter
+ *
+ * @param {*} args  Can pass the language code and/or the translation strings as an Object
+ * @return {string}
+ */
+i18n.language = function () {
+	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+		args[_key] = arguments[_key];
+	}
 
+	if (args !== null && args !== undefined && args.length) {
 
-		// try to get options from data-mejsoptions
-		if (typeof o == 'undefined') {
-			o = t.$node.data('mejsoptions');
+		if (typeof args[0] !== 'string') {
+			throw new TypeError('Language code must be a string value');
 		}
 
-		// extend default options
-		t.options = $.extend({},mejs.MepDefaults,o);
-
-		// unique ID
-		t.id = 'mep_' + mejs.mepIndex++;
+		if (!args[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i)) {
+			throw new TypeError('Language code must have format `xx` or `xx-xx`');
+		}
 
-		// add to player array (for focus events)
-		mejs.players[t.id] = t;
+		i18n.lang = args[0];
 
-		// start up
-		t.init();
+		// Check if language strings were added; otherwise, check the second argument or set to English as default
+		if (i18n[args[0]] === undefined) {
+			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
+			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
+		} else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
+			i18n[args[0]] = args[1];
+		}
+	}
 
-		return t;
-	};
+	return i18n.lang;
+};
 
-	// actual player
-	mejs.MediaElementPlayer.prototype = {
+/**
+ * Translate a string in the language set up (or English by default)
+ *
+ * @param {string} message
+ * @param {number} pluralParam
+ * @return {string}
+ */
+i18n.t = function (message) {
+	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
 
-		hasFocus: false,
 
-		controlsAreVisible: true,
+	if (typeof message === 'string' && message.length) {
 
-		init: function() {
+		var str = void 0,
+		    pluralForm = void 0;
 
-			var
-				t = this,
-				mf = mejs.MediaFeatures,
-				// options for MediaElement (shim)
-				meOptions = $.extend(true, {}, t.options, {
-					success: function(media, domNode) { t.meReady(media, domNode); },
-					error: function(e) { t.handleError(e);}
-				}),
-				tagName = t.media.tagName.toLowerCase();
+		var language = i18n.language();
 
-			t.isDynamic = (tagName !== 'audio' && tagName !== 'video');
+		/**
+   * Modify string using algorithm to detect plural forms.
+   *
+   * @private
+   * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings
+   * @param {String|String[]} input   - String or array of strings to pick the plural form
+   * @param {Number} number           - Number to determine the proper plural form
+   * @param {Number} form             - Number of language family to apply plural form
+   * @return {String}
+   */
+		var _plural = function _plural(input, number, form) {
 
-			if (t.isDynamic) {
-				// get video from src or href?
-				t.isVideo = t.options.isVideo;
-			} else {
-				t.isVideo = (tagName !== 'audio' && t.options.isVideo);
+			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
+				return input;
 			}
 
-			// use native controls in iPad, iPhone, and Android
-			if ((mf.isiPad && t.options.iPadUseNativeControls) || (mf.isiPhone && t.options.iPhoneUseNativeControls)) {
+			/**
+    *
+    * @return {Function[]}
+    * @private
+    */
+			var _pluralForms = function () {
+				return [
+				// 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará,
+				// Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay,
+				// Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof
+				function () {
+					return arguments.length <= 1 ? undefined : arguments[1];
+				},
 
-				// add controls and stop
-				t.$media.attr('controls', 'controls');
+				// 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish,
+				// Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans,
+				// Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri,
+				// Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa,
+				// Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch,
+				// Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal,
+				// Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento,
+				// Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala,
+				// Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba
+				function () {
+					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
+				},
 
-				// attempt to fix iOS 3 bug
-				//t.$media.removeAttr('poster');
-                                // no Issue found on iOS3 -ttroxell
+				// 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino,
+				// Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon
+				function () {
+					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];
+				},
 
-				// override Apple's autoplay override for iPads
-				if (mf.isiPad && t.media.getAttribute('autoplay') !== null) {
-					t.play();
-				}
+				// 3: Latvian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
 
-			} else if (mf.isAndroid && t.options.AndroidUseNativeControls) {
+				// 4: Scottish Gaelic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
 
-				// leave default player
+				// 5:  Romanian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
 
-			} else {
+				// 6: Lithuanian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return [3];
+					}
+				},
 
-				// DESKTOP: use MediaElementPlayer controls
+				// 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
 
-				// remove native controls
-				t.$media.removeAttr('controls');
+				// 8:  Slovak, Czech
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
 
-				// build container
-				t.container =
-					$('<div id="' + t.id + '" class="mejs-container ' + (mejs.MediaFeatures.svg ? 'svg' : 'no-svg') + '">'+
-						'<div class="mejs-inner">'+
-							'<div class="mejs-mediaelement"></div>'+
-							'<div class="mejs-layers"></div>'+
-							'<div class="mejs-controls"></div>'+
-							'<div class="mejs-clear"></div>'+
-						'</div>' +
-					'</div>')
-					.addClass(t.$media[0].className)
-					.insertBefore(t.$media);
+				// 9: Polish
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
 
-				// add classes for user and content
-				t.container.addClass(
-					(mf.isAndroid ? 'mejs-android ' : '') +
-					(mf.isiOS ? 'mejs-ios ' : '') +
-					(mf.isiPad ? 'mejs-ipad ' : '') +
-					(mf.isiPhone ? 'mejs-iphone ' : '') +
-					(t.isVideo ? 'mejs-video ' : 'mejs-audio ')
-				);
+				// 10: Slovenian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					}
+				},
 
+				// 11: Irish Gaelic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else {
+						return arguments.length <= 5 ? undefined : arguments[5];
+					}
+				},
 
-				// move the <video/video> tag into the right spot
-				if (mf.isiOS) {
+				// 12: Arabic
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
+						return arguments.length <= 5 ? undefined : arguments[5];
+					} else {
+						return arguments.length <= 6 ? undefined : arguments[6];
+					}
+				},
 
-					// sadly, you can't move nodes in iOS, so we have to destroy and recreate it!
-					var $newMedia = t.$media.clone();
+				// 13: Maltese
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
 
-					t.container.find('.mejs-mediaelement').append($newMedia);
+				// 14: Macedonian
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
 
-					t.$media.remove();
-					t.$node = t.$media = $newMedia;
-					t.node = t.media = $newMedia[0]
+				// 15:  Icelandic
+				function () {
+					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];
+				},
 
-				} else {
+				// New additions
 
-					// normal way of moving it into place (doesn't work on iOS)
-					t.container.find('.mejs-mediaelement').append(t.$media);
-				}
+				// 16:  Kashubian
+				// In https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of__pluralRules
+				// Breton is listed as #16 but in the Localization Guide it belongs to the group 2
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} 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)) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				},
 
-				// find parts
-				t.controls = t.container.find('.mejs-controls');
-				t.layers = t.container.find('.mejs-layers');
+				// 17:  Welsh
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
 
-				// determine the size
+				// 18:  Javanese
+				function () {
+					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
+				},
 
-				/* size priority:
-					(1) videoWidth (forced),
-					(2) style="width;height;"
-					(3) width attribute,
-					(4) defaultVideoWidth (for unspecified cases)
-				*/
+				// 19:  Cornish
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					} else {
+						return arguments.length <= 4 ? undefined : arguments[4];
+					}
+				},
 
-				var tagType = (t.isVideo ? 'video' : 'audio'),
-					capsTagName = tagType.substring(0,1).toUpperCase() + tagType.substring(1);
+				// 20:  Mandinka
+				function () {
+					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
+						return arguments.length <= 1 ? undefined : arguments[1];
+					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
+						return arguments.length <= 2 ? undefined : arguments[2];
+					} else {
+						return arguments.length <= 3 ? undefined : arguments[3];
+					}
+				}];
+			}();
 
+			// Perform plural form or return original text
+			return _pluralForms[form].apply(null, [number].concat(input));
+		};
 
+		// Fetch the localized version of the string
+		if (i18n[language] !== undefined) {
+			str = i18n[language][message];
+			if (pluralParam !== null && typeof pluralParam === 'number') {
+				pluralForm = i18n[language]['mejs.plural-form'];
+				str = _plural.apply(null, [str, pluralParam, pluralForm]);
+			}
+		}
 
-				if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
-					t.width = t.options[tagType + 'Width'];
-				} else if (t.media.style.width !== '' && t.media.style.width !== null) {
-					t.width = t.media.style.width;
-				} else if (t.media.getAttribute('width') !== null) {
-					t.width = t.$media.attr('width');
-				} else {
-					t.width = t.options['default' + capsTagName + 'Width'];
-				}
+		// Fallback to default language if requested uid is not translated
+		if (!str && i18n.en) {
+			str = i18n.en[message];
+			if (pluralParam !== null && typeof pluralParam === 'number') {
+				pluralForm = i18n.en['mejs.plural-form'];
+				str = _plural.apply(null, [str, pluralParam, pluralForm]);
+			}
+		}
 
-				if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
-					t.height = t.options[tagType + 'Height'];
-				} else if (t.media.style.height !== '' && t.media.style.height !== null) {
-					t.height = t.media.style.height;
-				} else if (t.$media[0].getAttribute('height') !== null) {
-					t.height = t.$media.attr('height');
-				} else {
-					t.height = t.options['default' + capsTagName + 'Height'];
-				}
+		// As a last resort, use the requested uid, to mimic original behavior of i18n utils
+		// (in which uid was the english text)
+		str = str || message;
 
-				// set the size, while we wait for the plugins to load below
-				t.setPlayerSize(t.width, t.height);
+		// Replace token
+		if (pluralParam !== null && typeof pluralParam === 'number') {
+			str = str.replace('%1', pluralParam);
+		}
 
-				// create MediaElementShim
-				meOptions.pluginWidth = t.width;
-				meOptions.pluginHeight = t.height;
-			}
+		return (0, _general.escapeHTML)(str);
+	}
 
-			// create MediaElement shim
-			mejs.MediaElement(t.$media[0], meOptions);
+	return message;
+};
 
-			if (typeof(t.container) != 'undefined' && t.controlsAreVisible){
-			    // controls are shown when loaded
-			    t.container.trigger('controlsshown');
-			}
-		},
+_mejs2.default.i18n = i18n;
 
-		showControls: function(doAnimation) {
-			var t = this;
+// `i18n` compatibility workflow with WordPress
+if (typeof mejsL10n !== 'undefined') {
+	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
+}
 
-			doAnimation = typeof doAnimation == 'undefined' || doAnimation;
+exports.default = i18n;
 
-			if (t.controlsAreVisible)
-				return;
+},{"14":14,"21":21,"6":6}],5:[function(_dereq_,module,exports){
+'use strict';
 
-			if (doAnimation) {
-				t.controls
-					.css('visibility','visible')
-					.stop(true, true).fadeIn(200, function() {
-					      t.controlsAreVisible = true;
-					      t.container.trigger('controlsshown');
-					});
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
 
-				// any additional controls people might add and want to hide
-				t.container.find('.mejs-control')
-					.css('visibility','visible')
-					.stop(true, true).fadeIn(200, function() {t.controlsAreVisible = true;});
+var _window = _dereq_(3);
 
-			} else {
-				t.controls
-					.css('visibility','visible')
-					.css('display','block');
+var _window2 = _interopRequireDefault(_window);
 
-				// any additional controls people might add and want to hide
-				t.container.find('.mejs-control')
-					.css('visibility','visible')
-					.css('display','block');
+var _document = _dereq_(2);
 
-				t.controlsAreVisible = true;
-				t.container.trigger('controlsshown');
-			}
+var _document2 = _interopRequireDefault(_document);
 
-			t.setControlsSize();
+var _mejs = _dereq_(6);
 
-		},
+var _mejs2 = _interopRequireDefault(_mejs);
 
-		hideControls: function(doAnimation) {
-			var t = this;
+var _general = _dereq_(21);
 
-			doAnimation = typeof doAnimation == 'undefined' || doAnimation;
+var _media = _dereq_(22);
 
-			if (!t.controlsAreVisible || t.options.alwaysShowControls)
-				return;
+var _renderer = _dereq_(7);
 
-			if (doAnimation) {
-				// fade out main controls
-				t.controls.stop(true, true).fadeOut(200, function() {
-					$(this)
-						.css('visibility','hidden')
-						.css('display','block');
-
-					t.controlsAreVisible = false;
-					t.container.trigger('controlshidden');
-				});
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-				// any additional controls people might add and want to hide
-				t.container.find('.mejs-control').stop(true, true).fadeOut(200, function() {
-					$(this)
-						.css('visibility','hidden')
-						.css('display','block');
-				});
-			} else {
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-				// hide main controls
-				t.controls
-					.css('visibility','hidden')
-					.css('display','block');
+/**
+ * Media Core
+ *
+ * This class is the foundation to create/render different media formats.
+ * @class MediaElement
+ */
+var MediaElement = function MediaElement(idOrNode, options) {
+	var _this = this;
+
+	_classCallCheck(this, MediaElement);
+
+	var t = this;
+
+	t.defaults = {
+		/**
+   * List of the renderers to use
+   * @type {String[]}
+   */
+		renderers: [],
+		/**
+   * Name of MediaElement container
+   * @type {String}
+   */
+		fakeNodeName: 'mediaelementwrapper',
+		/**
+   * The path where shims are located
+   * @type {String}
+   */
+		pluginPath: 'build/',
+		/**
+   * Flag in `<object>` and `<embed>` to determine whether to use local or CDN
+   * Possible values: 'always' (CDN version) or 'sameDomain' (local files)
+   */
+		shimScriptAccess: 'sameDomain',
+		/**
+   * If error happens, set up HTML message
+   * @type {String}
+   */
+		customError: ''
+	};
 
-				// hide others
-				t.container.find('.mejs-control')
-					.css('visibility','hidden')
-					.css('display','block');
+	options = Object.assign(t.defaults, options);
 
-				t.controlsAreVisible = false;
-				t.container.trigger('controlshidden');
-			}
-		},
+	// create our node (note: older versions of iOS don't support Object.defineProperty on DOM nodes)
+	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
+	t.mediaElement.options = options;
 
-		controlsTimer: null,
+	var id = idOrNode,
+	    error = false;
 
-		startControlsTimer: function(timeout) {
+	if (typeof idOrNode === 'string') {
+		t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
+	} else {
+		t.mediaElement.originalNode = idOrNode;
+		id = idOrNode.id;
+	}
 
-			var t = this;
+	id = id || 'mejs_' + Math.random().toString().slice(2);
 
-			timeout = typeof timeout != 'undefined' ? timeout : 1500;
+	if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) {
+		// change id
+		t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
 
-			t.killControlsTimer('start');
+		// to avoid some issues with Javascript interactions in the plugin, set `preload=none` if not set
+		// only if video/audio tags are detected
+		var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
+		if (['video', 'audio'].includes(tagName) && !t.mediaElement.originalNode.getAttribute('preload')) {
+			t.mediaElement.originalNode.setAttribute('preload', 'none');
+		}
 
-			t.controlsTimer = setTimeout(function() {
-				//
-				t.hideControls();
-				t.killControlsTimer('hide');
-			}, timeout);
-		},
+		// add next to this one
+		t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
 
-		killControlsTimer: function(src) {
+		// insert this one inside
+		t.mediaElement.appendChild(t.mediaElement.originalNode);
+	} else {
+		// TODO: where to put the node?
+	}
 
-			var t = this;
+	t.mediaElement.id = id;
+	t.mediaElement.renderers = {};
+	t.mediaElement.renderer = null;
+	t.mediaElement.rendererName = null;
+	/**
+  * Determine whether the renderer was found or not
+  *
+  * @public
+  * @param {String} rendererName
+  * @param {Object[]} mediaFiles
+  * @return {Boolean}
+  */
+	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
+
+		var t = _this;
+
+		// check for a match on the current renderer
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
+			t.mediaElement.renderer.pause();
+			if (t.mediaElement.renderer.stop) {
+				t.mediaElement.renderer.stop();
+			}
+			t.mediaElement.renderer.show();
+			t.mediaElement.renderer.setSrc(mediaFiles[0].src);
+			return true;
+		}
 
-			if (t.controlsTimer !== null) {
-				clearTimeout(t.controlsTimer);
-				delete t.controlsTimer;
-				t.controlsTimer = null;
+		// if existing renderer is not the right one, then hide it
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+			t.mediaElement.renderer.pause();
+			if (t.mediaElement.renderer.stop) {
+				t.mediaElement.renderer.stop();
 			}
-		},
+			t.mediaElement.renderer.hide();
+		}
 
-		controlsEnabled: true,
+		// see if we have the renderer already created
+		var newRenderer = t.mediaElement.renderers[rendererName],
+		    newRendererType = null;
 
-		disableControls: function() {
-			var t= this;
+		if (newRenderer !== undefined && newRenderer !== null) {
+			newRenderer.show();
+			newRenderer.setSrc(mediaFiles[0].src);
+			t.mediaElement.renderer = newRenderer;
+			t.mediaElement.rendererName = rendererName;
+			return true;
+		}
 
-			t.killControlsTimer();
-			t.hideControls(false);
-			this.controlsEnabled = false;
-		},
+		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
 
-		enableControls: function() {
-			var t= this;
+		// find the desired renderer in the array of possible ones
+		for (var i = 0, total = rendererArray.length; i < total; i++) {
 
-			t.showControls(false);
+			var index = rendererArray[i];
 
-			t.controlsEnabled = true;
-		},
+			if (index === rendererName) {
 
+				// create the renderer
+				var rendererList = _renderer.renderer.renderers;
+				newRendererType = rendererList[index];
 
-		// Sets up all controls and events
-		meReady: function(media, domNode) {
+				var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
+				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
+				newRenderer.name = rendererName;
 
+				// store for later
+				t.mediaElement.renderers[newRendererType.name] = newRenderer;
+				t.mediaElement.renderer = newRenderer;
+				t.mediaElement.rendererName = rendererName;
 
-			var t = this,
-				mf = mejs.MediaFeatures,
-				autoplayAttr = domNode.getAttribute('autoplay'),
-				autoplay = !(typeof autoplayAttr == 'undefined' || autoplayAttr === null || autoplayAttr === 'false'),
-				featureIndex,
-				feature;
+				newRenderer.show();
 
-			// make sure it can't create itself again if a plugin reloads
-			if (t.created) {
-				return;
-			} else {
-				t.created = true;
+				return true;
 			}
+		}
 
-			t.media = media;
-			t.domNode = domNode;
+		return false;
+	};
 
-			if (!(mf.isAndroid && t.options.AndroidUseNativeControls) && !(mf.isiPad && t.options.iPadUseNativeControls) && !(mf.isiPhone && t.options.iPhoneUseNativeControls)) {
+	/**
+  * Set the element dimensions based on selected renderer's setSize method
+  *
+  * @public
+  * @param {number} width
+  * @param {number} height
+  */
+	t.mediaElement.setSize = function (width, height) {
+		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+			t.mediaElement.renderer.setSize(width, height);
+		}
+	};
 
-				// two built in features
-				t.buildposter(t, t.controls, t.layers, t.media);
-				t.buildkeyboard(t, t.controls, t.layers, t.media);
-				t.buildoverlays(t, t.controls, t.layers, t.media);
+	/**
+  *
+  * @param {Object[]} urlList
+  */
+	t.mediaElement.createErrorMessage = function (urlList) {
 
-				// grab for use by features
-				t.findTracks();
+		urlList = Array.isArray(urlList) ? urlList : [];
 
-				// add user-defined features/controls
-				for (featureIndex in t.options.features) {
-					feature = t.options.features[featureIndex];
-					if (t['build' + feature]) {
-						try {
-							t['build' + feature](t, t.controls, t.layers, t.media);
-						} catch (e) {
-							// TODO: report control error
-							//throw e;
-							
-							
-						}
-					}
-				}
+		var errorContainer = _document2.default.createElement('div');
+		errorContainer.className = 'me_cannotplay';
+		errorContainer.style.width = '100%';
+		errorContainer.style.height = '100%';
 
-				t.container.trigger('controlsready');
+		var errorContent = t.mediaElement.options.customError;
 
-				// reset all layers and controls
-				t.setPlayerSize(t.width, t.height);
-				t.setControlsSize();
+		if (!errorContent) {
 
+			var poster = t.mediaElement.originalNode.getAttribute('poster');
+			if (poster) {
+				errorContent += '<img src="' + poster + '" width="100%" height="100%" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
+			}
 
-				// controls fade
-				if (t.isVideo) {
+			for (var i = 0, total = urlList.length; i < total; i++) {
+				var url = urlList[i];
+				errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
+			}
+		}
 
-					if (mejs.MediaFeatures.hasTouch) {
+		errorContainer.innerHTML = errorContent;
 
-						// for touch devices (iOS, Android)
-						// show/hide without animation on touch
+		t.mediaElement.originalNode.parentNode.insertBefore(errorContainer, t.mediaElement.originalNode);
+		t.mediaElement.originalNode.style.display = 'none';
+		error = true;
+	};
 
-						t.$media.bind('touchstart', function() {
+	var props = _mejs2.default.html5media.properties,
+	    methods = _mejs2.default.html5media.methods,
+	    addProperty = function addProperty(obj, name, onGet, onSet) {
 
+		// wrapper functions
+		var oldValue = obj[name];
+		var getFn = function getFn() {
+			return onGet.apply(obj, [oldValue]);
+		},
+		    setFn = function setFn(newValue) {
+			oldValue = onSet.apply(obj, [newValue]);
+			return oldValue;
+		};
 
-							// toggle controls
-							if (t.controlsAreVisible) {
-								t.hideControls(false);
-							} else {
-								if (t.controlsEnabled) {
-									t.showControls(false);
-								}
-							}
-						});
+		Object.defineProperty(obj, name, {
+			get: getFn,
+			set: setFn
+		});
+	},
+	    assignGettersSetters = function assignGettersSetters(propName) {
+		if (propName !== 'src') {
+			(function () {
+
+				var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
+				    getFn = function getFn() {
+					return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer['get' + capName]() : null;
+				},
+				    setFn = function setFn(value) {
+					if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
+						t.mediaElement.renderer['set' + capName](value);
+					}
+				};
 
-					} else {
+				addProperty(t.mediaElement, propName, getFn, setFn);
+				t.mediaElement['get' + capName] = getFn;
+				t.mediaElement['set' + capName] = setFn;
+			})();
+		}
+	},
+
+	// `src` is a property separated from the others since it carries the logic to set the proper renderer
+	// based on the media files detected
+	getSrc = function getSrc() {
+		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
+	},
+	    setSrc = function setSrc(value) {
+
+		var mediaFiles = [];
+
+		// clean up URLs
+		if (typeof value === 'string') {
+			mediaFiles.push({
+				src: value,
+				type: value ? (0, _media.getTypeFromFile)(value) : ''
+			});
+		} else {
+			for (var i = 0, total = value.length; i < total; i++) {
 
-						// create callback here since it needs access to current
-						// MediaElement object
-						t.clickToPlayPauseCallback = function() {
-							//
+				var src = (0, _media.absolutizeUrl)(value[i].src),
+				    type = value[i].type;
 
-							if (t.options.clickToPlayPause) {
-								if (t.media.paused) {
-									t.play();
-								} else {
-									t.pause();
-								}
-							}
-						};
+				mediaFiles.push({
+					src: src,
+					type: (type === '' || type === null || type === undefined) && src ? (0, _media.getTypeFromFile)(src) : type
+				});
+			}
+		}
 
-			            // click to play/pause
-			            t.media.addEventListener('click', t.clickToPlayPauseCallback, false);
+		// find a renderer and URL match
+		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
+		    event = void 0;
 
-						// show/hide controls
-						t.container
-							.bind('mouseenter mouseover', function () {
-								if (t.controlsEnabled) {
-									if (!t.options.alwaysShowControls ) {
-										t.killControlsTimer('enter');
-										t.showControls();
-										t.startControlsTimer(2500);
-									}
-								}
-							})
-							.bind('mousemove', function() {
-								if (t.controlsEnabled) {
-									if (!t.controlsAreVisible) {
-										t.showControls();
-									}
-									if (!t.options.alwaysShowControls) {
-										t.startControlsTimer(2500);
-									}
-								}
-							})
-							.bind('mouseleave', function () {
-								if (t.controlsEnabled) {
-									if (!t.media.paused && !t.options.alwaysShowControls) {
-										t.startControlsTimer(1000);
-									}
-								}
-							});
-					}
+		// Ensure that the original gets the first source found
+		if (!t.mediaElement.paused) {
+			t.mediaElement.pause();
+			event = (0, _general.createEvent)('pause', t.mediaElement);
+			t.mediaElement.dispatchEvent(event);
+		}
 
-					if(t.options.hideVideoControlsOnLoad) {
-						t.hideControls(false);
-					}
+		t.mediaElement.originalNode.setAttribute('src', mediaFiles[0].src || '');
 
-					// check for autoplay
-					if (autoplay && !t.options.alwaysShowControls) {
-						t.hideControls();
-					}
+		if (t.mediaElement.querySelector('.me_cannotplay')) {
+			t.mediaElement.querySelector('.me_cannotplay').remove();
+		}
 
-					// resizer
-					if (t.options.enableAutosize) {
-						t.media.addEventListener('loadedmetadata', function(e) {
-							// if the <video height> was not set and the options.videoHeight was not set
-							// then resize to the real dimensions
-							if (t.options.videoHeight <= 0 && t.domNode.getAttribute('height') === null && !isNaN(e.target.videoHeight)) {
-								t.setPlayerSize(e.target.videoWidth, e.target.videoHeight);
-								t.setControlsSize();
-								t.media.setVideoSize(e.target.videoWidth, e.target.videoHeight);
-							}
-						}, false);
-					}
+		// did we find a renderer?
+		if (renderInfo === null) {
+			t.mediaElement.createErrorMessage(mediaFiles);
+			event = (0, _general.createEvent)('error', t.mediaElement);
+			event.message = 'No renderer found';
+			t.mediaElement.dispatchEvent(event);
+			return;
+		}
+
+		// turn on the renderer (this checks for the existing renderer already)
+		t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles);
+
+		if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) {
+			event = (0, _general.createEvent)('error', t.mediaElement);
+			event.message = 'Error creating renderer';
+			t.mediaElement.dispatchEvent(event);
+			t.mediaElement.createErrorMessage(mediaFiles);
+			return;
+		}
+	},
+	    assignMethods = function assignMethods(methodName) {
+		// run the method on the current renderer
+		t.mediaElement[methodName] = function () {
+			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+				args[_key] = arguments[_key];
+			}
+
+			if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
+				try {
+					t.mediaElement.renderer[methodName](args);
+				} catch (e) {
+					t.mediaElement.createErrorMessage();
 				}
+			}
+			return null;
+		};
+	};
 
-				// EVENTS
+	// Assign all methods/properties/events to fake node if renderer was found
+	addProperty(t.mediaElement, 'src', getSrc, setSrc);
+	t.mediaElement.getSrc = getSrc;
+	t.mediaElement.setSrc = setSrc;
 
-				// FOCUS: when a video starts playing, it takes focus from other players (possibily pausing them)
-				media.addEventListener('play', function() {
-					var playerIndex;
+	for (var i = 0, total = props.length; i < total; i++) {
+		assignGettersSetters(props[i]);
+	}
 
-					// go through all other players
-					for (playerIndex in mejs.players) {
-						var p = mejs.players[playerIndex];
-						if (p.id != t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
-							p.pause();
-						}
-						p.hasFocus = false;
-					}
+	for (var _i = 0, _total = methods.length; _i < _total; _i++) {
+		assignMethods(methods[_i]);
+	}
 
-					t.hasFocus = true;
-				},false);
+	// IE && iOS
+	t.mediaElement.events = {};
 
+	// start: fake events
+	t.mediaElement.addEventListener = function (eventName, callback) {
+		// create or find the array of callbacks for this eventName
+		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
 
-				// ended for all
-				t.media.addEventListener('ended', function (e) {
-					if(t.options.autoRewind) {
-						try{
-							t.media.setCurrentTime(0);
-						} catch (exp) {
+		// push the callback into the stack
+		t.mediaElement.events[eventName].push(callback);
+	};
+	t.mediaElement.removeEventListener = function (eventName, callback) {
+		// no eventName means remove all listeners
+		if (!eventName) {
+			t.mediaElement.events = {};
+			return true;
+		}
 
-						}
-					}
-					t.media.pause();
+		// see if we have any callbacks for this eventName
+		var callbacks = t.mediaElement.events[eventName];
 
-					if (t.setProgressRail) {
-						t.setProgressRail();
-					}
-					if (t.setCurrentRail) {
-						t.setCurrentRail();
-					}
+		if (!callbacks) {
+			return true;
+		}
 
-					if (t.options.loop) {
-						t.play();
-					} else if (!t.options.alwaysShowControls && t.controlsEnabled) {
-						t.showControls();
-					}
-				}, false);
+		// check for a specific callback
+		if (!callback) {
+			t.mediaElement.events[eventName] = [];
+			return true;
+		}
 
-				// resize on the first play
-				t.media.addEventListener('loadedmetadata', function(e) {
-					if (t.updateDuration) {
-						t.updateDuration();
-					}
-					if (t.updateCurrent) {
-						t.updateCurrent();
-					}
+		// remove the specific callback
+		for (var _i2 = 0; _i2 < callbacks.length; _i2++) {
+			if (callbacks[_i2] === callback) {
+				t.mediaElement.events[eventName].splice(_i2, 1);
+				return true;
+			}
+		}
+		return false;
+	};
 
-					if (!t.isFullScreen) {
-						t.setPlayerSize(t.width, t.height);
-						t.setControlsSize();
-					}
-				}, false);
+	/**
+  *
+  * @param {Event} event
+  */
+	t.mediaElement.dispatchEvent = function (event) {
 
+		var callbacks = t.mediaElement.events[event.type];
 
-				// webkit has trouble doing this without a delay
-				setTimeout(function () {
-					t.setPlayerSize(t.width, t.height);
-					t.setControlsSize();
-				}, 50);
+		if (callbacks) {
+			for (var _i3 = 0; _i3 < callbacks.length; _i3++) {
+				callbacks[_i3].apply(null, [event]);
+			}
+		}
+	};
 
-				// adjust controls whenever window sizes (used to be in fullscreen only)
-				t.globalBind('resize', function() {
+	if (t.mediaElement.originalNode !== null) {
+		var mediaFiles = [];
 
-					// don't resize for fullscreen mode
-					if ( !(t.isFullScreen || (mejs.MediaFeatures.hasTrueNativeFullScreen && document.webkitIsFullScreen)) ) {
-						t.setPlayerSize(t.width, t.height);
-					}
+		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
 
-					// always adjust controls
-					t.setControlsSize();
+			case 'iframe':
+				mediaFiles.push({
+					type: '',
+					src: t.mediaElement.originalNode.getAttribute('src')
 				});
 
-				// TEMP: needs to be moved somewhere else
-				if (t.media.pluginType == 'youtube' && t.options.autoplay) {
-				//LOK-Soft: added t.options.autoplay to if -- I can only guess this is for hiding play button when autoplaying youtube, general hiding play button layer causes missing button on player load
-					t.container.find('.mejs-overlay-play').hide();
+				break;
+
+			case 'audio':
+			case 'video':
+				var n = void 0,
+				    src = void 0,
+				    type = void 0,
+				    sources = t.mediaElement.originalNode.childNodes.length,
+				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
+
+				// Consider if node contains the `src` and `type` attributes
+				if (nodeSource) {
+					var node = t.mediaElement.originalNode;
+					mediaFiles.push({
+						type: (0, _media.formatType)(nodeSource, node.getAttribute('type')),
+						src: nodeSource
+					});
 				}
-			}
 
-			// force autoplay for HTML5
-			if (autoplay && media.pluginType == 'native') {
-				t.play();
-			}
+				// test <source> types to see if they are usable
+				for (var _i4 = 0; _i4 < sources; _i4++) {
+					n = t.mediaElement.originalNode.childNodes[_i4];
+					if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') {
+						src = n.getAttribute('src');
+						type = (0, _media.formatType)(src, n.getAttribute('type'));
+						mediaFiles.push({ type: type, src: src });
+					}
+				}
+				break;
+		}
 
+		if (mediaFiles.length > 0) {
+			t.mediaElement.src = mediaFiles;
+		}
+	}
 
-			if (t.options.success) {
+	if (t.mediaElement.options.success) {
+		t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
+	}
 
-				if (typeof t.options.success == 'string') {
-					window[t.options.success](t.media, t.domNode, t);
-				} else {
-					t.options.success(t.media, t.domNode, t);
-				}
-			}
-		},
+	if (error && t.mediaElement.options.error) {
+		t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
+	}
 
-		handleError: function(e) {
-			var t = this;
+	return t.mediaElement;
+};
 
-			t.controls.hide();
+_window2.default.MediaElement = MediaElement;
 
-			// Tell user that the file cannot be played
-			if (t.options.error) {
-				t.options.error(e);
-			}
-		},
+exports.default = MediaElement;
 
-		setPlayerSize: function(width,height) {
-			var t = this;
+},{"2":2,"21":21,"22":22,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){
+'use strict';
 
-			if( !t.options.setDimensions ) {
-				return false;
-			}
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
 
-			if (typeof width != 'undefined') {
-				t.width = width;
-			}
+var _window = _dereq_(3);
 
-			if (typeof height != 'undefined') {
-				t.height = height;
-			}
+var _window2 = _interopRequireDefault(_window);
 
-			// detect 100% mode - use currentStyle for IE since css() doesn't return percentages
-			if (t.height.toString().indexOf('%') > 0 || t.$node.css('max-width') === '100%' || (t.$node[0].currentStyle && t.$node[0].currentStyle.maxWidth === '100%')) {
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-				// do we have the native dimensions yet?
-				var nativeWidth = (function() {
-					if (t.isVideo) {
-						if (t.media.videoWidth && t.media.videoWidth > 0) {
-							return t.media.videoWidth;
-						} else if (t.media.getAttribute('width') !== null) {
-							return t.media.getAttribute('width');
-						} else {
-							return t.options.defaultVideoWidth;
-						}
-					} else {
-						return t.options.defaultAudioWidth;
-					}
-				})();
+// Namespace
+var mejs = {};
 
-				var nativeHeight = (function() {
-					if (t.isVideo) {
-						if (t.media.videoHeight && t.media.videoHeight > 0) {
-							return t.media.videoHeight;
-						} else if (t.media.getAttribute('height') !== null) {
-							return t.media.getAttribute('height');
-						} else {
-							return t.options.defaultVideoHeight;
-						}
-					} else {
-						return t.options.defaultAudioHeight;
-					}
-				})();
+// version number
+mejs.version = '4.0.2';
 
-				var
-					parentWidth = t.container.parent().closest(':visible').width(),
-					parentHeight = t.container.parent().closest(':visible').height(),
-					newHeight = t.isVideo || !t.options.autosizeProgress ? parseInt(parentWidth * nativeHeight/nativeWidth, 10) : nativeHeight;
+// Basic HTML5 settings
+mejs.html5media = {
+	/**
+  * @type {String[]}
+  */
+	properties: [
+	// GET/SET
+	'volume', 'src', 'currentTime', 'muted',
 
-				// When we use percent, the newHeight can't be calculated so we get the container height
-				if(isNaN(newHeight) || ( parentHeight != 0 && newHeight > parentHeight )) {
-					newHeight = parentHeight;
-				}
+	// GET only
+	'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable',
 
-				if (t.container.parent()[0].tagName.toLowerCase() === 'body') { // && t.container.siblings().count == 0) {
-					parentWidth = $(window).width();
-					newHeight = $(window).height();
-				}
+	// OTHERS
+	'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
+	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
+	/**
+  * @type {String[]}
+  */
+	methods: ['load', 'play', 'pause', 'canPlayType'],
+	/**
+  * @type {String[]}
+  */
+	events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'],
+	/**
+  * @type {String[]}
+  */
+	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']
+};
 
-				if ( newHeight != 0 && parentWidth != 0 ) {
-					// set outer container size
-					t.container
-						.width(parentWidth)
-						.height(newHeight);
+_window2.default.mejs = mejs;
 
-					// set native <video> or <audio> and shims
-					t.$media.add(t.container.find('.mejs-shim'))
-						.width('100%')
-						.height('100%');
+exports.default = mejs;
 
-					// if shim is ready, send the size to the embeded plugin
-					if (t.isVideo) {
-						if (t.media.setVideoSize) {
-							t.media.setVideoSize(parentWidth, newHeight);
-						}
-					}
+},{"3":3}],7:[function(_dereq_,module,exports){
+'use strict';
 
-					// set the layers
-					t.layers.children('.mejs-layer')
-						.width('100%')
-						.height('100%');
-				}
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.renderer = undefined;
 
+var _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; };
 
-			} else {
+var _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; }; }();
 
-				t.container
-					.width(t.width)
-					.height(t.height);
+var _mejs = _dereq_(6);
 
-				t.layers.children('.mejs-layer')
-					.width(t.width)
-					.height(t.height);
+var _mejs2 = _interopRequireDefault(_mejs);
 
-			}
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-			// special case for big play button so it doesn't go over the controls area
-			var playLayer = t.layers.find('.mejs-overlay-play'),
-				playButton = playLayer.find('.mejs-overlay-button');
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
-			playLayer.height(t.container.height() - t.controls.height());
-			playButton.css('margin-top', '-' + (playButton.height()/2 - t.controls.height()/2).toString() + 'px'  );
+/**
+ *
+ * Class to manage renderer selection and addition.
+ * @class Renderer
+ */
+var Renderer = function () {
+	function Renderer() {
+		_classCallCheck(this, Renderer);
 
-		},
+		this.renderers = {};
+		this.order = [];
+	}
 
-		setControlsSize: function() {
-			var t = this,
-				usedWidth = 0,
-				railWidth = 0,
-				rail = t.controls.find('.mejs-time-rail'),
-				total = t.controls.find('.mejs-time-total'),
-				current = t.controls.find('.mejs-time-current'),
-				loaded = t.controls.find('.mejs-time-loaded'),
-				others = rail.siblings(),
-				lastControl = others.last(),
-				lastControlPosition = null;
+	/**
+  * Register a new renderer.
+  *
+  * @param {Object} renderer - An object with all the rendered information (name REQUIRED)
+  * @method add
+  */
 
-			// skip calculation if hidden
-			if (!t.container.is(':visible') || !rail.length || !rail.is(':visible')) {
-				return;
-			}
 
+	_createClass(Renderer, [{
+		key: 'add',
+		value: function add(renderer) {
 
-			// allow the size to come from custom CSS
-			if (t.options && !t.options.autosizeProgress) {
-				// Also, frontends devs can be more flexible
-				// due the opportunity of absolute positioning.
-				railWidth = parseInt(rail.css('width'));
+			if (renderer.name === undefined) {
+				throw new TypeError('renderer must contain at least `name` property');
 			}
 
-			// attempt to autosize
-			if (railWidth === 0 || !railWidth) {
+			this.renderers[renderer.name] = renderer;
+			this.order.push(renderer.name);
+		}
 
-				// find the size of all the other controls besides the rail
-				others.each(function() {
-					var $this = $(this);
-					if ($this.css('position') != 'absolute' && $this.is(':visible')) {
-						usedWidth += $(this).outerWidth(true);
-					}
-				});
+		/**
+   * Iterate a list of renderers to determine which one should the player use.
+   *
+   * @param {Object[]} mediaFiles - A list of source and type obtained from video/audio/source tags: [{src:'',type:''}]
+   * @param {?String[]} renderers - Optional list of pre-selected renderers
+   * @return {?Object} The renderer's name and source selected
+   * @method select
+   */
+
+	}, {
+		key: 'select',
+		value: function select(mediaFiles) {
+			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
+
+
+			var renderersLength = renderers.length;
+
+			renderers = renderers.length ? renderers : this.order;
+
+			// If renderers are not set, set a default order:
+			// 1) Native renderers (HTML5, HLS, M(PEG)-DASH, FLV)
+			// 2) Flash shims (RTMP, FLV, HLS, M(PEG)-DASH, MP3, OGG)
+			// 3) Iframe renderers (YouTube, SoundCloud, Facebook. etc.)
+			if (!renderersLength) {
+				(function () {
+					var rendererIndicator = [/^(html5|native)/, /^flash/, /iframe$/],
+					    rendererRanking = function rendererRanking(renderer) {
+						for (var i = 0, total = rendererIndicator.length; i < total; i++) {
+							if (renderer.match(rendererIndicator[i]) !== null) {
+								return i;
+							}
+						}
+						return rendererIndicator.length;
+					};
 
-				// fit the rail into the remaining space
-				railWidth = t.controls.width() - usedWidth - (rail.outerWidth(true) - rail.width());
+					renderers.sort(function (a, b) {
+						return rendererRanking(a) - rendererRanking(b);
+					});
+				})();
 			}
 
-			// resize the rail,
-			// but then check if the last control (say, the fullscreen button) got pushed down
-			// this often happens when zoomed
-			do {
-				// outer area
-				rail.width(railWidth);
-				// dark space
-				total.width(railWidth - (total.outerWidth(true) - total.width()));
+			for (var i = 0, total = renderers.length; i < total; i++) {
+				var key = renderers[i],
+				    _renderer = this.renderers[key];
 
-				if (lastControl.css('position') != 'absolute') {
-					lastControlPosition = lastControl.position();
-					railWidth--;
+				if (_renderer !== null && _renderer !== undefined) {
+					for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
+						if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
+							return {
+								rendererName: _renderer.name,
+								src: mediaFiles[j].src
+							};
+						}
+					}
 				}
-			} while (lastControlPosition != null && lastControlPosition.top > 0 && railWidth > 0);
-
-			if (t.setProgressRail)
-				t.setProgressRail();
-			if (t.setCurrentRail)
-				t.setCurrentRail();
-		},
+			}
 
+			return null;
+		}
 
-		buildposter: function(player, controls, layers, media) {
-			var t = this,
-				poster =
-				$('<div class="mejs-poster mejs-layer">' +
-				'</div>')
-					.appendTo(layers),
-				posterUrl = player.$media.attr('poster');
+		// Setters/getters
 
-			// prioriy goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster)
-			if (player.options.poster !== '') {
-				posterUrl = player.options.poster;
-			}
+	}, {
+		key: 'order',
+		set: function set(order) {
 
-			// second, try the real poster
-			if (posterUrl !== '' && posterUrl != null) {
-				t.setPoster(posterUrl);
-			} else {
-				poster.hide();
+			if (!Array.isArray(order)) {
+				throw new TypeError('order must be an array of strings.');
 			}
 
-			media.addEventListener('play',function() {
-				poster.hide();
-			}, false);
+			this._order = order;
+		},
+		get: function get() {
+			return this._order;
+		}
+	}, {
+		key: 'renderers',
+		set: function set(renderers) {
 
-			if(player.options.showPosterWhenEnded && player.options.autoRewind){
-				media.addEventListener('ended',function() {
-					poster.show();
-				}, false);
+			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
+				throw new TypeError('renderers must be an array of objects.');
 			}
+
+			this._renderers = renderers;
 		},
+		get: function get() {
+			return this._renderers;
+		}
+	}]);
 
-		setPoster: function(url) {
-			var t = this,
-				posterDiv = t.container.find('.mejs-poster'),
-				posterImg = posterDiv.find('img');
+	return Renderer;
+}();
 
-			if (posterImg.length == 0) {
-				posterImg = $('<img width="100%" height="100%" />').appendTo(posterDiv);
-			}
+var renderer = exports.renderer = new Renderer();
 
-			posterImg.attr('src', url);
-			posterDiv.css({'background-image' : 'url(' + url + ')'});
-		},
+_mejs2.default.Renderers = renderer;
 
-		buildoverlays: function(player, controls, layers, media) {
-            var t = this;
-			if (!player.isVideo)
-				return;
+},{"6":6}],8:[function(_dereq_,module,exports){
+'use strict';
 
-			var
-			loading =
-				$('<div class="mejs-overlay mejs-layer">'+
-					'<div class="mejs-overlay-loading"><span></span></div>'+
-				'</div>')
-				.hide() // start out hidden
-				.appendTo(layers),
-			error =
-				$('<div class="mejs-overlay mejs-layer">'+
-					'<div class="mejs-overlay-error"></div>'+
-				'</div>')
-				.hide() // start out hidden
-				.appendTo(layers),
-			// this needs to come last so it's on top
-			bigPlay =
-				$('<div class="mejs-overlay mejs-layer mejs-overlay-play">'+
-					'<div class="mejs-overlay-button"></div>'+
-				'</div>')
-				.appendTo(layers)
-				.bind('click', function() {  // Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay started and immediately stopped the video
-					if (t.options.clickToPlayPause) {
-						if (media.paused) {
-							media.play();
-						}
-					}
-				});
+var _window = _dereq_(3);
 
-			/*
-			if (mejs.MediaFeatures.isiOS || mejs.MediaFeatures.isAndroid) {
-				bigPlay.remove();
-				loading.remove();
-			}
-			*/
+var _window2 = _interopRequireDefault(_window);
 
+var _document = _dereq_(2);
 
-			// show/hide big play button
-			media.addEventListener('play',function() {
-				bigPlay.hide();
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-				error.hide();
-			}, false);
-
-			media.addEventListener('playing', function() {
-				bigPlay.hide();
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-				error.hide();
-			}, false);
-
-			media.addEventListener('seeking', function() {
-				loading.show();
-				controls.find('.mejs-time-buffering').show();
-			}, false);
-
-			media.addEventListener('seeked', function() {
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-			}, false);
-
-			media.addEventListener('pause',function() {
-				if (!mejs.MediaFeatures.isiPhone) {
-					bigPlay.show();
-				}
-			}, false);
-
-			media.addEventListener('waiting', function() {
-				loading.show();
-				controls.find('.mejs-time-buffering').show();
-			}, false);
+var _document2 = _interopRequireDefault(_document);
 
+var _i18n = _dereq_(4);
 
-			// show/hide loading
-			media.addEventListener('loadeddata',function() {
-				// for some reason Chrome is firing this event
-				//if (mejs.MediaFeatures.isChrome && media.getAttribute && media.getAttribute('preload') === 'none')
-				//	return;
-
-				loading.show();
-				controls.find('.mejs-time-buffering').show();
-			}, false);
-			media.addEventListener('canplay',function() {
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-			}, false);
+var _i18n2 = _interopRequireDefault(_i18n);
 
-			// error handling
-			media.addEventListener('error',function() {
-				loading.hide();
-				controls.find('.mejs-time-buffering').hide();
-				error.show();
-				error.find('mejs-overlay-error').html("Error loading this resource");
-			}, false);
-
-			media.addEventListener('keydown', function(e) {
-				t.onkeydown(player, media, e);
-			}, false);
-		},
+var _player = _dereq_(16);
 
-		buildkeyboard: function(player, controls, layers, media) {
+var _player2 = _interopRequireDefault(_player);
 
-				var t = this;
+var _constants = _dereq_(19);
 
-				// listen for key presses
-				t.globalBind('keydown', function(e) {
-					return t.onkeydown(player, media, e);
-				});
+var Features = _interopRequireWildcard(_constants);
 
-				// check if someone clicked outside a player region, then kill its focus
-				t.globalBind('click', function(event) {
-					player.hasFocus = $(event.target).closest('.mejs-container').length != 0;
-				});
+var _general = _dereq_(21);
 
-		},
-		onkeydown: function(player, media, e) {
-			if (player.hasFocus && player.options.enableKeyboard) {
-				// find a matching key
-				for (var i = 0, il = player.options.keyActions.length; i < il; i++) {
-					var keyAction = player.options.keyActions[i];
+var _dom = _dereq_(20);
 
-					for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
-						if (e.keyCode == keyAction.keys[j]) {
-							if (typeof(e.preventDefault) == "function") e.preventDefault();
-							keyAction.action(player, media, e.keyCode);
-							return false;
-						}
-					}
-				}
-			}
+function _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; } }
 
-			return true;
-		},
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-		findTracks: function() {
-			var t = this,
-				tracktags = t.$media.find('track');
+/**
+ * Fullscreen button
+ *
+ * This feature creates a button to toggle fullscreen on video; it considers a letiety of possibilities when dealing with it
+ * since it is not consistent across browsers. It also accounts for triggering the event through Flash shim.
+ */
 
-			// store for use by plugins
-			t.tracks = [];
-			tracktags.each(function(index, track) {
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * @type {Boolean}
+  */
+	usePluginFullScreen: true,
+	/**
+  * @type {?String}
+  */
+	fullscreenText: null
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * @type {Boolean}
+  */
+	isFullScreen: false,
+	/**
+  * @type {Boolean}
+  */
+	isNativeFullScreen: false,
+	/**
+  * @type {Boolean}
+  */
+	isInIframe: false,
+	/**
+  * @type {Boolean}
+  */
+	isPluginClickThroughCreated: false,
+	/**
+  * Possible modes
+  * (1) 'native-native'  HTML5 video  + browser fullscreen (IE10+, etc.)
+  * (2) 'plugin-native'  plugin video + browser fullscreen (fails in some versions of Firefox)
+  * (3) 'fullwindow'     Full window (retains all UI)
+  *
+  * @type {String}
+  */
+	fullscreenMode: '',
+	/**
+  *
+  */
+	containerSizeTimeout: null,
+
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildfullscreen: function buildfullscreen(player, controls, layers, media) {
+
+		if (!player.isVideo) {
+			return;
+		}
 
-				track = $(track);
+		player.isInIframe = _window2.default.location !== _window2.default.parent.location;
 
-				t.tracks.push({
-					srclang: (track.attr('srclang')) ? track.attr('srclang').toLowerCase() : '',
-					src: track.attr('src'),
-					kind: track.attr('kind'),
-					label: track.attr('label') || '',
-					entries: [],
-					isLoaded: false
-				});
-			});
-		},
-		changeSkin: function(className) {
-			this.container[0].className = 'mejs-container ' + className;
-			this.setPlayerSize(this.width, this.height);
-			this.setControlsSize();
-		},
-		play: function() {
-			this.load();
-			this.media.play();
-		},
-		pause: function() {
-			try {
-				this.media.pause();
-			} catch (e) {}
-		},
-		load: function() {
-			if (!this.isLoaded) {
-				this.media.load();
-			}
+		// detect on start
+		media.addEventListener('loadstart', function () {
+			player.detectFullscreenMode();
+		});
 
-			this.isLoaded = true;
-		},
-		setMuted: function(muted) {
-			this.media.setMuted(muted);
-		},
-		setCurrentTime: function(time) {
-			this.media.setCurrentTime(time);
-		},
-		getCurrentTime: function() {
-			return this.media.currentTime;
-		},
-		setVolume: function(volume) {
-			this.media.setVolume(volume);
-		},
-		getVolume: function() {
-			return this.media.volume;
-		},
-		setSrc: function(src) {
-			this.media.setSrc(src);
-		},
-		remove: function() {
-			var t = this, featureIndex, feature;
+		var t = this,
+		    fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),
+		    fullscreenBtn = _document2.default.createElement('div');
 
-			// invoke features cleanup
-			for (featureIndex in t.options.features) {
-				feature = t.options.features[featureIndex];
-				if (t['clean' + feature]) {
-					try {
-						t['clean' + feature](t);
-					} catch (e) {
-						// TODO: report control error
-						//throw e;
-						//
-						//
-					}
-				}
-			}
+		fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';
+		fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>';
+		t.addControlElement(fullscreenBtn, 'fullscreen');
 
-			// grab video and put it back in place
-			if (!t.isDynamic) {
-				t.$media.prop('controls', true);
-				// detach events from the video
-				// TODO: detach event listeners better than this;
-				//       also detach ONLY the events attached by this plugin!
-				t.$node.clone().insertBefore(t.container).show();
-				t.$node.remove();
+		fullscreenBtn.addEventListener('click', function () {
+			// toggle fullscreen
+			var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
+
+			if (isFullScreen) {
+				player.exitFullScreen();
 			} else {
-				t.$node.insertBefore(t.container);
+				player.enterFullScreen();
 			}
+		});
+
+		player.fullscreenBtn = fullscreenBtn;
 
-			if (t.media.pluginType !== 'native') {
-				t.media.remove();
+		t.globalBind('keydown', function (e) {
+			var key = e.which || e.keyCode || 0;
+			if (key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {
+				player.exitFullScreen();
 			}
+		});
 
-			// Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to pause a non existance flash api.
-			delete mejs.players[t.id];
+		t.normalHeight = 0;
+		t.normalWidth = 0;
 
-			if (typeof t.container == 'object') {
-				t.container.remove();
-			}
-			t.globalUnbind();
-			delete t.node.player;
+		// setup native fullscreen event
+		if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
+
+			//
+			/**
+    * Detect any changes on fullscreen
+    *
+    * Chrome doesn't always fire this in an `<iframe>`
+    * @private
+    */
+			var fullscreenChanged = function fullscreenChanged() {
+				if (player.isFullScreen) {
+					if (Features.isFullScreen()) {
+						player.isNativeFullScreen = true;
+						// reset the controls once we are fully in full screen
+						player.setControlsSize();
+					} else {
+						player.isNativeFullScreen = false;
+						// when a user presses ESC
+						// make sure to put the player back into place
+						player.exitFullScreen();
+					}
+				}
+			};
+
+			player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
 		}
-	};
+	},
 
-	(function(){
-		var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
 
-		function splitEvents(events, id) {
-			// add player ID as an event namespace so it's easier to unbind them all later
-			var ret = {d: [], w: []};
-			$.each((events || '').split(' '), function(k, v){
-				var eventname = v + '.' + id;
-				if (eventname.indexOf('.') === 0) {
-					ret.d.push(eventname);
-					ret.w.push(eventname);
-				}
-				else {
-					ret[rwindow.test(v) ? 'w' : 'd'].push(eventname);
-				}
-			});
-			ret.d = ret.d.join(' ');
-			ret.w = ret.w.join(' ');
-			return ret;
+	/**
+  * Detect the type of fullscreen based on browser's capabilities
+  *
+  * @return {String}
+  */
+	detectFullscreenMode: function detectFullscreenMode() {
+
+		var t = this,
+		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+
+		var mode = '';
+
+		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {
+			mode = 'native-native';
+		} else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {
+			mode = 'plugin-native';
+		} else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {
+			mode = 'plugin-click';
+		} else {
+			mode = 'fullwindow';
 		}
 
-		mejs.MediaElementPlayer.prototype.globalBind = function(events, data, callback) {
-			var t = this;
-			events = splitEvents(events, t.id);
-			if (events.d) $(document).bind(events.d, data, callback);
-			if (events.w) $(window).bind(events.w, data, callback);
-		};
+		t.fullscreenMode = mode;
+		return mode;
+	},
 
-		mejs.MediaElementPlayer.prototype.globalUnbind = function(events, callback) {
-			var t = this;
-			events = splitEvents(events, t.id);
-			if (events.d) $(document).unbind(events.d, callback);
-			if (events.w) $(window).unbind(events.w, callback);
-		};
-	})();
 
-	// turn into jQuery plugin
-	if (typeof $ != 'undefined') {
-		$.fn.mediaelementplayer = function (options) {
-			if (options === false) {
-				this.each(function () {
-					var player = $(this).data('mediaelementplayer');
-					if (player) {
-						player.remove();
-					}
-					$(this).removeData('mediaelementplayer');
-				});
+	/**
+  * Feature destructor.
+  *
+  * Always has to be prefixed with `clean` and the name that was used in features list
+  * @param {MediaElementPlayer} player
+  */
+	cleanfullscreen: function cleanfullscreen(player) {
+		player.exitFullScreen();
+	},
+
+
+	/**
+  *
+  */
+	enterFullScreen: function enterFullScreen() {
+
+		var t = this,
+		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(html5|native)/) !== null,
+		    containerStyles = getComputedStyle(t.container);
+
+		if (Features.IS_IOS && Features.HAS_IOS_FULLSCREEN && typeof t.media.webkitEnterFullscreen === 'function') {
+			t.media.webkitEnterFullscreen();
+			return;
+		}
+
+		// set it to not show scroll bars so 100% will work
+		(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
+		(0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen');
+
+		// store sizing
+		t.normalHeight = parseFloat(containerStyles.height);
+		t.normalWidth = parseFloat(containerStyles.width);
+
+		// attempt to do true fullscreen
+		if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
+
+			Features.requestFullScreen(t.container);
+
+			if (t.isInIframe) {
+				// sometimes exiting from fullscreen doesn't work
+				// notably in Chrome <iframe>. Fixed in version 17
+				setTimeout(function checkFullscreen() {
+
+					if (t.isNativeFullScreen) {
+						var percentErrorMargin = 0.002,
+						    // 0.2%
+						windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
+						    screenWidth = screen.width,
+						    absDiff = Math.abs(screenWidth - windowWidth),
+						    marginError = screenWidth * percentErrorMargin;
+
+						// check if the video is suddenly not really fullscreen
+						if (absDiff > marginError) {
+							// manually exit
+							t.exitFullScreen();
+						} else {
+							// test again
+							setTimeout(checkFullscreen, 500);
+						}
+					}
+				}, 1000);
 			}
-			else {
-				this.each(function () {
-					$(this).data('mediaelementplayer', new mejs.MediaElementPlayer(this, options));
-				});
+		} else if (t.fullscreeMode === 'fullwindow') {}
+		// move into position
+
+		// make full size
+		t.container.style.width = '100%';
+		t.container.style.height = '100%';
+
+		// Only needed for safari 5.1 native full screen, can cause display issues elsewhere
+		// Actually, it seems to be needed for IE8, too
+		t.containerSizeTimeout = setTimeout(function () {
+			t.container.style.width = '100%';
+			t.container.style.height = '100%';
+			t.setControlsSize();
+		}, 500);
+
+		if (isNative) {
+			t.node.style.width = '100%';
+			t.node.style.height = '100%';
+		} else {
+			var elements = t.container.querySelectorAll('iframe, embed, object, video'),
+			    _total = elements.length;
+			for (var i = 0; i < _total; i++) {
+				elements[i].style.width = '100%';
+				elements[i].style.height = '100%';
 			}
-			return this;
-		};
+		}
 
+		if (t.options.setDimensions && typeof t.media.setSize === 'function') {
+			t.media.setSize(screen.width, screen.height);
+		}
 
-		$(document).ready(function() {
-			// auto enable using JSON attribute
-			$('.mejs-player').mediaelementplayer();
-		});
-	}
+		var layers = t.layers.childNodes,
+		    total = layers.length;
+		for (var _i = 0; _i < total; _i++) {
+			layers[_i].style.width = '100%';
+			layers[_i].style.height = '100%';
+		}
 
-	// push out to window
-	window.MediaElementPlayer = mejs.MediaElementPlayer;
+		if (t.fullscreenBtn) {
+			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
+			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
+		}
 
-})(mejs.$);
+		t.setControlsSize();
+		t.isFullScreen = true;
 
-(function($) {
+		var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),
+		    captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text');
+		if (captionText) {
+			captionText.style.fontSize = zoomFactor * 100 + '%';
+			captionText.style.lineHeight = 'normal';
+			t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '45px';
+		}
+		var event = (0, _general.createEvent)('enteredfullscreen', t.container);
+		t.container.dispatchEvent(event);
+	},
 
-	$.extend(mejs.MepDefaults, {
-		playpauseText: mejs.i18n.t('Play/Pause')
-	});
 
-	// PLAY/pause BUTTON
-	$.extend(MediaElementPlayer.prototype, {
-		buildplaypause: function(player, controls, layers, media) {
-			var 
-				t = this,
-				play = 
-				$('<div class="mejs-button mejs-playpause-button mejs-play" >' +
-					'<button type="button" aria-controls="' + t.id + '" title="' + t.options.playpauseText + '" aria-label="' + t.options.playpauseText + '"></button>' +
-				'</div>')
-				.appendTo(controls)
-				.click(function(e) {
-					e.preventDefault();
-				
-					if (media.paused) {
-						media.play();
-					} else {
-						media.pause();
-					}
-					
-					return false;
-				});
+	/**
+  *
+  */
+	exitFullScreen: function exitFullScreen() {
 
-			media.addEventListener('play',function() {
-				play.removeClass('mejs-play').addClass('mejs-pause');
-			}, false);
-			media.addEventListener('playing',function() {
-				play.removeClass('mejs-play').addClass('mejs-pause');
-			}, false);
+		var t = this,
+		    isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
 
+		// Prevent container from attempting to stretch a second time
+		clearTimeout(t.containerSizeTimeout);
 
-			media.addEventListener('pause',function() {
-				play.removeClass('mejs-pause').addClass('mejs-play');
-			}, false);
-			media.addEventListener('paused',function() {
-				play.removeClass('mejs-pause').addClass('mejs-play');
-			}, false);
+		// come out of native fullscreen
+		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
+			Features.cancelFullScreen();
 		}
-	});
-	
-})(mejs.$);
 
-(function($) {
+		// restore scroll bars to document
+		(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
+		(0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen');
 
-	$.extend(mejs.MepDefaults, {
-		stopText: 'Stop'
-	});
+		if (t.options.setDimensions) {
+			t.container.style.width = t.normalWidth + 'px';
+			t.container.style.height = t.normalHeight + 'px';
 
-	// STOP BUTTON
-	$.extend(MediaElementPlayer.prototype, {
-		buildstop: function(player, controls, layers, media) {
-			var t = this,
-				stop = 
-				$('<div class="mejs-button mejs-stop-button mejs-stop">' +
-					'<button type="button" aria-controls="' + t.id + '" title="' + t.options.stopText + '" aria-label="' + t.options.stopText + '"></button>' +
-				'</div>')
-				.appendTo(controls)
-				.click(function() {
-					if (!media.paused) {
-						media.pause();
-					}
-					if (media.currentTime > 0) {
-						media.setCurrentTime(0);
-                        media.pause();
-						controls.find('.mejs-time-current').width('0px');
-						controls.find('.mejs-time-handle').css('left', '0px');
-						controls.find('.mejs-time-float-current').html( mejs.Utility.secondsToTimeCode(0) );
-						controls.find('.mejs-currenttime').html( mejs.Utility.secondsToTimeCode(0) );					
-						layers.find('.mejs-poster').show();
-					}
-				});
+			if (isNative) {
+				t.node.style.width = t.normalWidth + 'px';
+				t.node.style.height = t.normalHeight + 'px';
+			} else {
+				var elements = t.container.querySelectorAll('iframe, embed, object, video'),
+				    _total2 = elements.length;
+				for (var i = 0; i < _total2; i++) {
+					elements[i].style.width = t.normalWidth + 'px';
+					elements[i].style.height = t.normalHeight + 'px';
+				}
+			}
+
+			if (typeof t.media.setSize === 'function') {
+				t.media.setSize(t.normalWidth, t.normalHeight);
+			}
+
+			var layers = t.layers.childNodes,
+			    total = layers.length;
+			for (var _i2 = 0; _i2 < total; _i2++) {
+				layers[_i2].style.width = t.normalWidth + 'px';
+				layers[_i2].style.height = t.normalHeight + 'px';
+			}
 		}
-	});
-	
-})(mejs.$);
-
-(function($) {
-	// progress/loaded bar
-	$.extend(MediaElementPlayer.prototype, {
-		buildprogress: function(player, controls, layers, media) {
-
-			$('<div class="mejs-time-rail">'+
-				'<span class="mejs-time-total">'+
-					'<span class="mejs-time-buffering"></span>'+
-					'<span class="mejs-time-loaded"></span>'+
-					'<span class="mejs-time-current"></span>'+
-					'<span class="mejs-time-handle"></span>'+
-					'<span class="mejs-time-float">' + 
-						'<span class="mejs-time-float-current">00:00</span>' + 
-						'<span class="mejs-time-float-corner"></span>' + 
-					'</span>'+
-				'</span>'+
-			'</div>')
-				.appendTo(controls);
-				controls.find('.mejs-time-buffering').hide();
-
-			var 
-				t = this,
-				total = controls.find('.mejs-time-total'),
-				loaded  = controls.find('.mejs-time-loaded'),
-				current  = controls.find('.mejs-time-current'),
-				handle  = controls.find('.mejs-time-handle'),
-				timefloat  = controls.find('.mejs-time-float'),
-				timefloatcurrent  = controls.find('.mejs-time-float-current'),
-				handleMouseMove = function (e) {
-					// mouse or touch position relative to the object
-					if (e.originalEvent.changedTouches) {
-						var x = e.originalEvent.changedTouches[0].pageX;
-					}else{
-						var x = e.pageX;
-					}
-					
-					var offset = total.offset(),
-						width = total.outerWidth(true),
-						percentage = 0,
-						newTime = 0,
-						pos = 0;
-
-
-					if (media.duration) {
-						if (x < offset.left) {
-							x = offset.left;
-						} else if (x > width + offset.left) {
-							x = width + offset.left;
-						}
-						
-						pos = x - offset.left;
-						percentage = (pos / width);
-						newTime = (percentage <= 0.02) ? 0 : percentage * media.duration;
 
-						// seek to where the mouse is
-						if (mouseIsDown && newTime !== media.currentTime) {
-							media.setCurrentTime(newTime);
-						}
+		(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
+		(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
+
+		t.setControlsSize();
+		t.isFullScreen = false;
+
+		var captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text');
+		if (captionText) {
+			captionText.style.fontSize = '';
+			captionText.style.lineHeight = '';
+			t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';
+		}
+		var event = (0, _general.createEvent)('exitedfullscreen', t.container);
+		t.container.dispatchEvent(event);
+	}
+});
+
+},{"16":16,"19":19,"2":2,"20":20,"21":21,"3":3,"4":4}],9:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _general = _dereq_(21);
+
+var _dom = _dereq_(20);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Play/Pause button
+ *
+ * This feature enables the displaying of a Play button in the control bar, and also contains logic to toggle its state
+ * between paused and playing.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * @type {?String}
+  */
+	playText: null,
+	/**
+  * @type {?String}
+  */
+	pauseText: null
+});
+
+Object.assign(_player2.default.prototype, {
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  * @public
+  */
+	buildplaypause: function buildplaypause(player, controls, layers, media) {
+
+		var t = this,
+		    op = t.options,
+		    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
+		    pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),
+		    play = _document2.default.createElement('div');
+
+		play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';
+		play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>';
+		play.addEventListener('click', function () {
+			if (media.paused) {
+				media.play();
+			} else {
+				media.pause();
+			}
+		});
+
+		var playBtn = play.querySelector('button');
+		t.addControlElement(play, 'playpause');
+
+		/**
+   * @private
+   * @param {String} which - token to determine new state of button
+   */
+		function togglePlayPause(which) {
+			if ('play' === which) {
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
+				(0, _dom.addClass)(play, t.options.classPrefix + 'pause');
+				playBtn.setAttribute('title', pauseTitle);
+				playBtn.setAttribute('aria-label', pauseTitle);
+			} else {
+
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
+				(0, _dom.addClass)(play, t.options.classPrefix + 'play');
+				playBtn.setAttribute('title', playTitle);
+				playBtn.setAttribute('aria-label', playTitle);
+			}
+		}
+
+		togglePlayPause('pse');
+
+		media.addEventListener('loadedmetadata', function () {
+			togglePlayPause('pse');
+		});
+
+		media.addEventListener('play', function () {
+			togglePlayPause('play');
+		});
+		media.addEventListener('playing', function () {
+			togglePlayPause('play');
+		});
+
+		media.addEventListener('pause', function () {
+			togglePlayPause('pse');
+		});
+		media.addEventListener('paused', function () {
+			togglePlayPause('pse');
+		});
+
+		media.addEventListener('ended', function () {
+
+			if (!player.options.loop) {
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
+				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
+				(0, _dom.addClass)(play, t.options.classPrefix + 'replay');
+				playBtn.setAttribute('title', playTitle);
+				playBtn.setAttribute('aria-label', playTitle);
+			}
+		});
+	}
+});
+
+},{"16":16,"2":2,"20":20,"21":21,"4":4}],10:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _constants = _dereq_(19);
+
+var _time = _dereq_(24);
+
+var _dom = _dereq_(20);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Progress/loaded bar
+ *
+ * This feature creates a progress bar with a slider in the control bar, and updates it based on native events.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * Enable tooltip that shows time in progress bar
+  * @type {Boolean}
+  */
+	enableProgressTooltip: true
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildprogress: function buildprogress(player, controls, layers, media) {
+
+		var lastKeyPressTime = 0,
+		    mouseIsDown = false,
+		    startedPaused = false;
+
+		var t = this,
+		    autoRewindInitial = player.options.autoRewind,
+		    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>' : "",
+		    rail = _document2.default.createElement('div');
+
+		rail.className = t.options.classPrefix + 'time-rail';
+		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-handle"></span>') + ('' + tooltip) + '</span>';
+
+		t.addControlElement(rail, 'progress');
+
+		controls.querySelector('.' + t.options.classPrefix + 'time-buffering').style.display = 'none';
+
+		t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');
+		t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');
+		t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');
+		t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');
+		t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');
+		t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');
+		t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');
+		t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');
+		t.newTime = 0;
+		t.forcedHandlePause = false;
+
+		/**
+   *
+   * @private
+   * @param {Event} e
+   */
+		var handleMouseMove = function handleMouseMove(e) {
+
+			var totalStyles = getComputedStyle(t.total),
+			    offsetStyles = (0, _dom.offset)(t.total),
+			    width = parseFloat(totalStyles.width);
+
+			var percentage = 0,
+			    pos = 0,
+			    x = void 0;
+
+			// mouse or touch position relative to the object
+			if (e.originalEvent && e.originalEvent.changedTouches) {
+				x = e.originalEvent.changedTouches[0].pageX;
+			} else if (e.changedTouches) {
+				// for Zepto
+				x = e.changedTouches[0].pageX;
+			} else {
+				x = e.pageX;
+			}
+
+			if (media.duration) {
+				if (x < offsetStyles.left) {
+					x = offsetStyles.left;
+				} else if (x > width + offsetStyles.left) {
+					x = width + offsetStyles.left;
+				}
+
+				pos = x - offsetStyles.left;
+				percentage = pos / width;
+				t.newTime = percentage <= 0.02 ? 0 : percentage * media.duration;
+
+				// fake seek to where the mouse is
+				if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) {
+					t.setCurrentRailHandle(t.newTime);
+					t.updateCurrent(t.newTime);
+				}
+
+				// position floating time box
+				if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
+					t.timefloat.style.left = pos + 'px';
+					t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength);
+					t.timefloat.style.display = 'block';
+				}
+			}
+		},
+
+		/**
+   * Update elements in progress bar for accessibility purposes only when player is paused.
+   *
+   * This is to avoid attempts to repeat the time over and over again when media is playing.
+   * @private
+   */
+		updateSlider = function updateSlider() {
+
+			var seconds = media.currentTime,
+			    timeSliderText = _i18n2.default.t('mejs.time-slider'),
+			    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength),
+			    duration = media.duration;
+
+			t.slider.setAttribute('role', 'slider');
+			t.slider.tabIndex = 0;
+
+			if (media.paused) {
+				t.slider.setAttribute('aria-label', timeSliderText);
+				t.slider.setAttribute('aria-valuemin', 0);
+				t.slider.setAttribute('aria-valuemax', duration);
+				t.slider.setAttribute('aria-valuenow', seconds);
+				t.slider.setAttribute('aria-valuetext', time);
+			} else {
+				t.slider.removeAttribute('aria-label');
+				t.slider.removeAttribute('aria-valuemin');
+				t.slider.removeAttribute('aria-valuemax');
+				t.slider.removeAttribute('aria-valuenow');
+				t.slider.removeAttribute('aria-valuetext');
+			}
+		},
+
+		/**
+   *
+   * @private
+   */
+		restartPlayer = function restartPlayer() {
+			var now = new Date();
+			if (now - lastKeyPressTime >= 1000) {
+				media.play();
+			}
+		},
+		    handleMouseup = function handleMouseup() {
+
+			if (mouseIsDown && media.currentTime !== null && t.newTime.toFixed(4) !== media.currentTime.toFixed(4)) {
+				media.setCurrentTime(t.newTime);
+				player.setCurrentRail();
+				t.updateCurrent(t.newTime);
+			}
+			if (t.forcedHandlePause) {
+				t.media.play();
+			}
+			t.forcedHandlePause = false;
+		};
+
+		// Events
+		t.slider.addEventListener('focus', function () {
+			player.options.autoRewind = false;
+		});
+		t.slider.addEventListener('blur', function () {
+			player.options.autoRewind = autoRewindInitial;
+		});
+		t.slider.addEventListener('keydown', function (e) {
+
+			if (new Date() - lastKeyPressTime >= 1000) {
+				startedPaused = media.paused;
+			}
+
+			if (t.options.keyActions.length) {
+
+				var keyCode = e.which || e.keyCode || 0,
+				    duration = media.duration,
+				    seekForward = player.options.defaultSeekForwardInterval(media),
+				    seekBackward = player.options.defaultSeekBackwardInterval(media);
+
+				var seekTime = media.currentTime;
 
-						// position floating time box
-						if (!mejs.MediaFeatures.hasTouch) {
-								timefloat.css('left', pos);
-								timefloatcurrent.html( mejs.Utility.secondsToTimeCode(newTime) );
-								timefloat.show();
+				switch (keyCode) {
+					case 37: // left
+					case 40:
+						// Down
+						if (media.duration !== Infinity) {
+							seekTime -= seekBackward;
 						}
-					}
-				},
-				mouseIsDown = false,
-				mouseIsOver = false;
+						break;
+					case 39: // Right
+					case 38:
+						// Up
+						if (media.duration !== Infinity) {
+							seekTime += seekForward;
+						}
+						break;
+					case 36:
+						// Home
+						seekTime = 0;
+						break;
+					case 35:
+						// end
+						seekTime = duration;
+						break;
+					case 32:
+						// space
+						if (!_constants.IS_FIREFOX) {
+							if (media.paused) {
+								media.play();
+							} else {
+								media.pause();
+							}
+						}
+						return;
+					case 13:
+						// enter
+						if (media.paused) {
+							media.play();
+						} else {
+							media.pause();
+						}
+						return;
+					default:
+						return;
+				}
+
+				seekTime = seekTime < 0 ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);
+				lastKeyPressTime = new Date();
+				if (!startedPaused) {
+					media.pause();
+				}
+
+				if (seekTime < media.duration && !startedPaused) {
+					setTimeout(restartPlayer, 1100);
+				}
+
+				media.setCurrentTime(seekTime);
+
+				e.preventDefault();
+				e.stopPropagation();
+			}
+		});
+
+		var events = ['mousedown', 'touchstart'];
+
+		// Required to manipulate mouse movements that require drag 'n' drop properly
+		t.slider.addEventListener('dragstart', function () {
+			return false;
+		});
 
-			// handle clicks
-			//controls.find('.mejs-time-rail').delegate('span', 'click', handleMouseMove);
-			total
-				.bind('mousedown touchstart', function (e) {
+		for (var i = 0, total = events.length; i < total; i++) {
+			t.slider.addEventListener(events[i], function (e) {
+				t.forcedHandlePause = false;
+				if (media.duration !== Infinity) {
 					// only handle left clicks or touch
 					if (e.which === 1 || e.which === 0) {
+
+						if (!media.paused) {
+							t.media.pause();
+							t.forcedHandlePause = true;
+						}
+
 						mouseIsDown = true;
 						handleMouseMove(e);
-						t.globalBind('mousemove.dur touchmove.dur', function(e) {
-							handleMouseMove(e);
+						t.globalBind('mousemove.dur touchmove.dur', function (event) {
+							var target = event.target;
+							if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
+								handleMouseMove(event);
+							}
 						});
-						t.globalBind('mouseup.dur touchend.dur', function (e) {
+						t.globalBind('mouseup.dur touchend.dur', function () {
+							handleMouseup();
 							mouseIsDown = false;
-							timefloat.hide();
-							t.globalUnbind('.dur');
+							if (t.timefloat) {
+								t.timefloat.style.display = 'none';
+							}
+							t.globalUnbind('mousemove.dur touchmove.dur mouseup.dur touchend.dur');
 						});
-						return false;
-					}
-				})
-				.bind('mouseenter', function(e) {
-					mouseIsOver = true;
-					t.globalBind('mousemove.dur', function(e) {
-						handleMouseMove(e);
-					});
-					if (!mejs.MediaFeatures.hasTouch) {
-						timefloat.show();
 					}
-				})
-				.bind('mouseleave',function(e) {
-					mouseIsOver = false;
-					if (!mouseIsDown) {
-						t.globalUnbind('.dur');
-						timefloat.hide();
+				}
+			});
+		}
+		t.slider.addEventListener('mouseenter', function (e) {
+			if (e.target === t.slider && media.duration !== Infinity) {
+				t.globalBind('mousemove.dur', function (event) {
+					var target = event.target;
+					if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
+						handleMouseMove(event);
 					}
 				});
+				if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {
+					t.timefloat.style.display = 'block';
+				}
+			}
+		});
+		t.slider.addEventListener('mouseleave', function () {
+			if (media.duration !== Infinity) {
+				if (!mouseIsDown) {
+					t.globalUnbind('mousemove.dur');
+					if (t.timefloat) {
+						t.timefloat.style.display = 'none';
+					}
+				}
+			}
+		});
 
-			// loading
-			media.addEventListener('progress', function (e) {
-				player.setProgressRail(e);
-				player.setCurrentRail(e);
-			}, false);
+		// loading
+		// If media is does not have a finite duration, remove progress bar interaction
+		// and indicate that is a live broadcast
+		media.addEventListener('progress', function (e) {
+			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
+			if (media.duration !== Infinity) {
+				if (broadcast) {
+					t.slider.style.display = '';
+					broadcast.remove();
+				}
 
-			// current time
-			media.addEventListener('timeupdate', function(e) {
 				player.setProgressRail(e);
-				player.setCurrentRail(e);
-			}, false);
-			
-			
-			// store for later use
-			t.loaded = loaded;
-			t.total = total;
-			t.current = current;
-			t.handle = handle;
-		},
-		setProgressRail: function(e) {
-
-			var
-				t = this,
-				target = (e != undefined) ? e.target : t.media,
-				percent = null;			
-
-			// newest HTML5 spec has buffered array (FF4, Webkit)
-			if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) {
-				// TODO: account for a real array with multiple values (only Firefox 4 has this so far) 
-				percent = target.buffered.end(0) / target.duration;
-			} 
-			// Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end()
-			// to be anything other than 0. If the byte count is available we use this instead.
-			// Browsers that support the else if do not seem to have the bufferedBytes value and
-			// should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8.
-			else if (target && target.bytesTotal != undefined && target.bytesTotal > 0 && target.bufferedBytes != undefined) {
-				percent = target.bufferedBytes / target.bytesTotal;
+				if (!t.forcedHandlePause) {
+					player.setCurrentRail(e);
+				}
+			} else if (!broadcast) {
+				var label = _document2.default.createElement('span');
+				label.className = t.options.classPrefix + 'broadcast';
+				label.innerText = _i18n2.default.t('mejs.live-broadcast');
+				t.slider.style.display = 'none';
 			}
-			// Firefox 3 with an Ogg file seems to go this way
-			else if (e && e.lengthComputable && e.total != 0) {
-				percent = e.loaded/e.total;
+		});
+
+		// current time
+		media.addEventListener('timeupdate', function (e) {
+			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
+			if (media.duration !== Infinity) {
+				if (broadcast) {
+					t.slider.style.display = '';
+					broadcast.remove();
+				}
+
+				player.setProgressRail(e);
+				if (!t.forcedHandlePause) {
+					player.setCurrentRail(e);
+				}
+				updateSlider(e);
+			} else if (!broadcast) {
+				var label = _document2.default.createElement('span');
+				label.className = t.options.classPrefix + 'broadcast';
+				label.innerText = _i18n2.default.t('mejs.live-broadcast');
+				controls.querySelector('.' + t.options.classPrefix + 'time-rail').appendChild(label);
+				t.slider.style.display = 'none';
 			}
+		});
 
-			// finally update the progress bar
-			if (percent !== null) {
-				percent = Math.min(1, Math.max(0, percent));
-				// update loaded bar
-				if (t.loaded && t.total) {
-					t.loaded.width(t.total.width() * percent);
+		t.container.addEventListener('controlsresize', function (e) {
+			if (media.duration !== Infinity) {
+				player.setProgressRail(e);
+				if (!t.forcedHandlePause) {
+					player.setCurrentRail(e);
 				}
 			}
-		},
-		setCurrentRail: function() {
+		});
+	},
 
-			var t = this;
-		
-			if (t.media.currentTime != undefined && t.media.duration) {
 
-				// update bar and handle
-				if (t.total && t.handle) {
-					var 
-						newWidth = Math.round(t.total.width() * t.media.currentTime / t.media.duration),
-						handlePos = newWidth - Math.round(t.handle.outerWidth(true) / 2);
+	/**
+  * Calculate the progress on the media and update progress bar's width
+  *
+  * @param {Event} e
+  */
+	setProgressRail: function setProgressRail(e) {
+
+		var percent = null;
+
+		var t = this,
+		    target = e !== undefined ? e.target : t.media;
 
-					t.current.width(newWidth);
-					t.handle.css('left', handlePos);
+		// newest HTML5 spec has buffered array (FF4, Webkit)
+		if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) {
+			// account for a real array with multiple values - always read the end of the last buffer
+			percent = target.buffered.end(target.buffered.length - 1) / target.duration;
+		}
+		// Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end()
+		// to be anything other than 0. If the byte count is available we use this instead.
+		// Browsers that support the else if do not seem to have the bufferedBytes value and
+		// should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8.
+		else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
+				percent = target.bufferedBytes / target.bytesTotal;
+			}
+			// Firefox 3 with an Ogg file seems to go this way
+			else if (e && e.lengthComputable && e.total !== 0) {
+					percent = e.loaded / e.total;
 				}
+
+		// finally update the progress bar
+		if (percent !== null) {
+			percent = Math.min(1, Math.max(0, percent));
+			// update loaded bar
+			if (t.loaded && t.total) {
+				t.loaded.style.width = percent * 100 + '%';
+			}
+		}
+	},
+
+	/**
+  * Update the slider's width depending on the time assigned
+  *
+  * @param {Number} fakeTime
+  */
+	setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
+		var t = this;
+		t.setCurrentRailMain(t, fakeTime);
+	},
+
+	/**
+  * Update the slider's width depending on the current time
+  *
+  */
+	setCurrentRail: function setCurrentRail() {
+		var t = this;
+		t.setCurrentRailMain(t);
+	},
+
+	/**
+  * Method that handles the calculation of the width of the rail.
+  *
+  * @param {MediaElementPlayer} t
+  * @param {?Number} fakeTime
+  */
+	setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
+		if (t.media.currentTime !== undefined && t.media.duration) {
+			var nTime = typeof fakeTime === 'undefined' ? t.media.currentTime : fakeTime;
+
+			// update bar and handle
+			if (t.total && t.handle) {
+				var newWidth = Math.round(parseFloat(getComputedStyle(t.total).width) * nTime / t.media.duration),
+				    handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);
+
+				newWidth = nTime / t.media.duration * 100;
+				t.current.style.width = newWidth + '%';
+				t.handle.style.left = handlePos + 'px';
 			}
+		}
+	}
+});
 
-		}	
-	});
-})(mejs.$);
-
-(function($) {
-	
-	// options
-	$.extend(mejs.MepDefaults, {
-		duration: -1,
-		timeAndDurationSeparator: '<span> | </span>'
-	});
+},{"16":16,"19":19,"2":2,"20":20,"24":24,"4":4}],11:[function(_dereq_,module,exports){
+'use strict';
 
+var _document = _dereq_(2);
 
-	// current and duration 00:00 / 00:00
-	$.extend(MediaElementPlayer.prototype, {
-		buildcurrent: function(player, controls, layers, media) {
-			var t = this;
-			
-			$('<div class="mejs-time">'+
-					'<span class="mejs-currenttime">' + (player.options.alwaysShowHours ? '00:' : '')
-					+ (player.options.showTimecodeFrameCount? '00:00:00':'00:00')+ '</span>'+
-					'</div>')
-					.appendTo(controls);
-			
-			t.currenttime = t.controls.find('.mejs-currenttime');
-
-			media.addEventListener('timeupdate',function() {
-				player.updateCurrent();
-			}, false);
-		},
+var _document2 = _interopRequireDefault(_document);
 
+var _player = _dereq_(16);
 
-		buildduration: function(player, controls, layers, media) {
-			var t = this;
-			
-			if (controls.children().last().find('.mejs-currenttime').length > 0) {
-				$(t.options.timeAndDurationSeparator +
-					'<span class="mejs-duration">' + 
-						(t.options.duration > 0 ? 
-							mejs.Utility.secondsToTimeCode(t.options.duration, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25) :
-				   			((player.options.alwaysShowHours ? '00:' : '') + (player.options.showTimecodeFrameCount? '00:00:00':'00:00')) 
-				   		) + 
-					'</span>')
-					.appendTo(controls.find('.mejs-time'));
-			} else {
+var _player2 = _interopRequireDefault(_player);
 
-				// add class to current time
-				controls.find('.mejs-currenttime').parent().addClass('mejs-currenttime-container');
-				
-				$('<div class="mejs-time mejs-duration-container">'+
-					'<span class="mejs-duration">' + 
-						(t.options.duration > 0 ? 
-							mejs.Utility.secondsToTimeCode(t.options.duration, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25) :
-				   			((player.options.alwaysShowHours ? '00:' : '') + (player.options.showTimecodeFrameCount? '00:00:00':'00:00')) 
-				   		) + 
-					'</span>' +
-				'</div>')
-				.appendTo(controls);
-			}
-			
-			t.durationD = t.controls.find('.mejs-duration');
-
-			media.addEventListener('timeupdate',function() {
-				player.updateDuration();
-			}, false);
-		},
-		
-		updateCurrent:  function() {
-			var t = this;
+var _time = _dereq_(24);
+
+var _dom = _dereq_(20);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-			if (t.currenttime) {
-				t.currenttime.html(mejs.Utility.secondsToTimeCode(t.media.currentTime, t.options.alwaysShowHours || t.media.duration > 3600, t.options.showTimecodeFrameCount,  t.options.framesPerSecond || 25));
+/**
+ * Current/duration times
+ *
+ * This feature creates/updates the duration and progress times in the control bar, based on native events.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * The initial duration
+  * @type {Number}
+  */
+	duration: 0,
+	/**
+  * @type {String}
+  */
+	timeAndDurationSeparator: '<span> | </span>'
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * Current time constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildcurrent: function buildcurrent(player, controls, layers, media) {
+		var t = this,
+		    time = _document2.default.createElement('div');
+
+		time.className = t.options.classPrefix + 'time';
+		time.setAttribute('role', 'timer');
+		time.setAttribute('aria-live', 'off');
+		time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength) + '</span>';
+
+		t.addControlElement(time, 'current');
+
+		media.addEventListener('timeupdate', function () {
+			if (t.controlsAreVisible) {
+				player.updateCurrent();
 			}
-		},
-		
-		updateDuration: function() {
-			var t = this;
+		});
+	},
 
-			//Toggle the long video class if the video is longer than an hour.
-			t.container.toggleClass("mejs-long-video", t.media.duration > 3600);
-			
-			if (t.durationD && (t.options.duration > 0 || t.media.duration)) {
-				t.durationD.html(mejs.Utility.secondsToTimeCode(t.options.duration > 0 ? t.options.duration : t.media.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond || 25));
-			}		
-		}
-	});
 
-})(mejs.$);
+	/**
+  * Duration time constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildduration: function buildduration(player, controls, layers, media) {
 
-(function($) {
+		var t = this,
+		    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
 
-	$.extend(mejs.MepDefaults, {
-		muteText: mejs.i18n.t('Mute Toggle'),
-		hideVolumeOnTouchDevices: true,
-		
-		audioVolume: 'horizontal',
-		videoVolume: 'vertical'
-	});
+		if (currTime) {
+			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) + '</span>');
+		} else {
 
-	$.extend(MediaElementPlayer.prototype, {
-		buildvolume: function(player, controls, layers, media) {
-				
-			// Android and iOS don't support volume controls
-			if ((mejs.MediaFeatures.isAndroid || mejs.MediaFeatures.isiOS) && this.options.hideVolumeOnTouchDevices)
-				return;
-			
-			var t = this,
-				mode = (t.isVideo) ? t.options.videoVolume : t.options.audioVolume,
-				mute = (mode == 'horizontal') ?
-				
-				// horizontal version
-				$('<div class="mejs-button mejs-volume-button mejs-mute">'+
-					'<button type="button" aria-controls="' + t.id + '" title="' + t.options.muteText + '" aria-label="' + t.options.muteText + '"></button>'+
-				'</div>' +
-				'<div class="mejs-horizontal-volume-slider">'+ // outer background
-					'<div class="mejs-horizontal-volume-total"></div>'+ // line background
-					'<div class="mejs-horizontal-volume-current"></div>'+ // current volume
-					'<div class="mejs-horizontal-volume-handle"></div>'+ // handle
-				'</div>'
-				)
-					.appendTo(controls) :
+			// add class to current time
+			if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
+				(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
+			}
+
+			var duration = _document2.default.createElement('div');
+			duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';
+			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) + '</span>');
+
+			t.addControlElement(duration, 'duration');
+		}
+
+		media.addEventListener('timeupdate', function () {
+			if (t.controlsAreVisible) {
+				player.updateDuration();
+			}
+		});
+	},
+
+
+	/**
+  * Update the current time and output it in format 00:00
+  *
+  */
+	updateCurrent: function updateCurrent() {
+		var t = this;
+
+		var currentTime = t.media.currentTime;
+
+		if (isNaN(currentTime)) {
+			currentTime = 0;
+		}
+
+		if (t.controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
+			t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
+		}
+	},
+
+
+	/**
+  * Update the duration time and output it in format 00:00
+  *
+  */
+	updateDuration: function updateDuration() {
+		var t = this;
+
+		var duration = t.media.duration;
+
+		if (isNaN(duration) || duration === Infinity || duration < 0) {
+			t.media.duration = t.options.duration = duration = 0;
+		}
+
+		if (t.options.duration > 0) {
+			duration = t.options.duration;
+		}
+
+		var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength);
+
+		// Toggle long-video class if time code is >5 digits (MM:SS)
+		if (timecode.length > 5) {
+			(0, _dom.toggleClass)(t.container, t.options.classPrefix + 'long-video');
+		}
+
+		if (t.controls.querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {
+			t.controls.querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;
+		}
+	}
+});
+
+},{"16":16,"2":2,"20":20,"24":24}],12:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _time = _dereq_(24);
+
+var _general = _dereq_(21);
+
+var _dom = _dereq_(20);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Closed Captions (CC) button
+ *
+ * This feature enables the displaying of a CC button in the control bar, and also contains the methods to start media
+ * with a certain language (if available), toggle captions, etc.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * Default language to start media using ISO 639-2 Language Code List (en, es, it, etc.)
+  * If there are multiple tracks for one language, the last track node found is activated
+  * @see https://www.loc.gov/standards/iso639-2/php/code_list.php
+  * @type {String}
+  */
+	startLanguage: '',
+	/**
+  * @type {?String}
+  */
+	tracksText: null,
+	/**
+  * @type {?String}
+  */
+	chaptersText: null,
+	/**
+  * Avoid to screen reader speak captions over an audio track.
+  *
+  * @type {Boolean}
+  */
+	tracksAriaLive: false,
+	/**
+  * Remove the [cc] button when no track nodes are present
+  * @type {Boolean}
+  */
+	hideCaptionsButtonWhenEmpty: true,
+	/**
+  * Change captions to pop-up if true and only one track node is found
+  * @type {Boolean}
+  */
+	toggleCaptionsButtonWhenOnlyOne: false,
+	/**
+  * @type {String}
+  */
+	slidesSelector: ''
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * @type {Boolean}
+  */
+	hasChapters: false,
+
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  */
+	buildtracks: function buildtracks(player, controls, layers, media) {
+		if (player.tracks.length === 0) {
+			return;
+		}
+
+		var t = this,
+		    attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '',
+		    tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),
+		    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
+		    total = player.tracks.length;
+
+		// If browser will do native captions, prefer mejs captions, loop through tracks and hide
+		if (t.domNode.textTracks) {
+			for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
+				t.domNode.textTracks[i].mode = 'hidden';
+			}
+		}
+
+		t.cleartracks(player);
+
+		player.captions = _document2.default.createElement('div');
+		player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';
+		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>';
+		player.captions.style.display = 'none';
+		layers.insertBefore(player.captions, layers.firstChild);
+
+		player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');
+
+		player.captionsButton = _document2.default.createElement('div');
+		player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';
+		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>';
+
+		t.addControlElement(player.captionsButton, 'tracks');
+
+		player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-list-item').disabled = false;
+
+		player.chaptersButton = _document2.default.createElement('div');
+		player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';
+		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>';
+
+		var subtitleCount = 0;
+
+		for (var _i = 0; _i < total; _i++) {
+			var kind = player.tracks[_i].kind;
+			if (kind === 'subtitles' || kind === 'captions') {
+				subtitleCount++;
+			} else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {
+				player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);
+			}
+		}
+
+		player.trackToLoad = -1;
+		player.selectedTrack = null;
+		player.isLoadingTrack = false;
+
+		// add to list
+		for (var _i2 = 0; _i2 < total; _i2++) {
+			var _kind = player.tracks[_i2].kind;
+			if (_kind === 'subtitles' || _kind === 'captions') {
+				player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);
+			}
+		}
+
+		// start loading tracks
+		player.loadNextTrack();
+
+		var inEvents = ['mouseenter', 'focusin'],
+		    outEvents = ['mouseleave', 'focusout'];
+
+		// if only one language then just make the button a toggle
+		if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
+			// click
+			player.captionsButton.addEventListener('click', function () {
+				var trackId = 'none';
+				if (player.selectedTrack === null) {
+					trackId = player.tracks[0].trackId;
+				}
+				player.setTrack(trackId);
+			});
+		} else {
+			var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
+			    captions = player.captionsButton.querySelectorAll('input[type=radio]');
+			// hover or keyboard focus
+			for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
+				player.captionsButton.addEventListener(inEvents[_i3], function () {
+					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
+				});
+			}
+
+			for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {
+				player.captionsButton.addEventListener(outEvents[_i4], function () {
+					(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
+				});
+			}
+
+			// handle clicks to the language radio buttons
+			for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
+				captions[_i5].addEventListener('click', function () {
+					// value is trackId, same as the actual id, and we're using it here
+					// because the "none" checkbox doesn't have a trackId
+					// to use, but we want to know when "none" is clicked
+					player.setTrack(this.value);
+				});
+			}
+
+			for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {
+				labels[_i6].addEventListener('click', function () {
+					var radio = (0, _dom.siblings)(this, function (el) {
+						return el.tagName === 'INPUT';
+					})[0],
+					    event = (0, _general.createEvent)('click', radio);
+					radio.dispatchEvent(event);
+				});
+			}
+
+			//Allow up/down arrow to change the selected radio without changing the volume.
+			player.captionsButton.addEventListener('keydown', function (e) {
+				e.stopPropagation();
+			});
+		}
+
+		for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {
+			player.chaptersButton.addEventListener(inEvents[_i7], function () {
+				if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').childNodes.length) {
+					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
+				}
+			});
+		}
+
+		for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {
+			player.chaptersButton.addEventListener(outEvents[_i8], function () {
+				(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
+			});
+		}
+
+		//Allow up/down arrow to change the selected radio without changing the volume.
+		player.chaptersButton.addEventListener('keydown', function (e) {
+			e.stopPropagation();
+		});
+
+		if (!player.options.alwaysShowControls) {
+			// move with controls
+			player.container.addEventListener('controlsshown', function () {
+				// push captions above controls
+				(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
+			});
+
+			player.container.addEventListener('controlshidden', function () {
+				if (!media.paused) {
+					// move back to normal place
+					(0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
+				}
+			});
+		} else {
+			(0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
+		}
+
+		media.addEventListener('timeupdate', function () {
+			player.displayCaptions();
+		});
+
+		if (player.options.slidesSelector !== '') {
+			player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);
+
+			media.addEventListener('timeupdate', function () {
+				player.displaySlides();
+			});
+		}
+	},
+
+
+	/**
+  * Feature destructor.
+  *
+  * Always has to be prefixed with `clean` and the name that was used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  */
+	cleartracks: function cleartracks(player) {
+		if (player) {
+			if (player.captions) {
+				player.captions.remove();
+			}
+			if (player.chapters) {
+				player.chapters.remove();
+			}
+			if (player.captionsText) {
+				player.captionsText.remove();
+			}
+			if (player.captionsButton) {
+				player.captionsButton.remove();
+			}
+			if (player.chaptersButton) {
+				player.chaptersButton.remove();
+			}
+		}
+	},
+	rebuildtracks: function rebuildtracks() {
+		var t = this;
+		t.findTracks();
+		t.buildtracks(t, t.controls, t.layers, t.media);
+	},
+	findTracks: function findTracks() {
+		var t = this,
+		    tracktags = t.node.querySelectorAll('track'),
+		    total = tracktags.length;
+
+		// store for use by plugins
+		t.tracks = [];
+		for (var i = 0; i < total; i++) {
+			var track = tracktags[i],
+			    srclang = track.getAttribute('srclang').toLowerCase() || '',
+			    trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;
+			t.tracks.push({
+				trackId: trackId,
+				srclang: srclang,
+				src: track.getAttribute('src'),
+				kind: track.getAttribute('kind'),
+				label: track.getAttribute('label') || '',
+				entries: [],
+				isLoaded: false
+			});
+		}
+	},
+
+
+	/**
+  *
+  * @param {String} trackId, or "none" to disable captions
+  */
+	setTrack: function setTrack(trackId) {
+
+		var t = this,
+		    radios = t.captionsButton.querySelectorAll('input[type="radio"]'),
+		    captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),
+		    track = t.captionsButton.querySelector('input[value="' + trackId + '"]');
+
+		for (var i = 0, total = radios.length; i < total; i++) {
+			radios[i].checked = false;
+		}
+
+		for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {
+			(0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');
+		}
+
+		track.checked = true;
+		var labels = (0, _dom.siblings)(track, function (el) {
+			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
+		});
+		for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {
+			(0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');
+		}
+
+		if (trackId === 'none') {
+			t.selectedTrack = null;
+			(0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
+		} else {
+			for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {
+				var _track = t.tracks[_i11];
+				if (_track.trackId === trackId) {
+					if (t.selectedTrack === null) {
+						(0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
+					}
+					t.selectedTrack = _track;
+					t.captions.setAttribute('lang', t.selectedTrack.srclang);
+					t.displayCaptions();
+					break;
+				}
+			}
+		}
+
+		var event = (0, _general.createEvent)('captionschange', t.media);
+		event.detail.caption = t.selectedTrack;
+		t.media.dispatchEvent(event);
+	},
+
+
+	/**
+  *
+  */
+	loadNextTrack: function loadNextTrack() {
+		var t = this;
+
+		t.trackToLoad++;
+		if (t.trackToLoad < t.tracks.length) {
+			t.isLoadingTrack = true;
+			t.loadTrack(t.trackToLoad);
+		} else {
+			// add done?
+			t.isLoadingTrack = false;
+			t.checkForTracks();
+		}
+	},
+
+
+	/**
+  *
+  * @param index
+  */
+	loadTrack: function loadTrack(index) {
+		var t = this,
+		    track = t.tracks[index];
+
+		if (track !== undefined && (track.src !== undefined || track.src !== "")) {
+			(0, _dom.ajax)(track.src, 'text', function (d) {
+
+				// parse the loaded file
+				track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
+
+				track.isLoaded = true;
+
+				t.enableTrackButton(track);
+				t.loadNextTrack();
+
+				if (track.kind === 'slides') {
+					t.setupSlides(track);
+				}
+				// Load by default the first track with `chapters` kind
+				else if (track.kind === 'chapters' && !t.hasChapters) {
+						t.drawChapters(track);
+						t.hasChapters = true;
+					}
+			}, function () {
+				t.removeTrackButton(track.trackId);
+				t.loadNextTrack();
+			});
+		}
+	},
+
+
+	/**
+  *
+  * @param {String} track - The language code
+  */
+	enableTrackButton: function enableTrackButton(track) {
+		var t = this,
+		    lang = track.srclang,
+		    target = _document2.default.getElementById('' + track.trackId);
+
+		if (!target) {
+			return;
+		}
+
+		var label = track.label;
+
+		if (label === '') {
+			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
+		}
+		target.disabled = false;
+		var targetSiblings = (0, _dom.siblings)(target, function (el) {
+			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
+		});
+		for (var i = 0, total = targetSiblings.length; i < total; i++) {
+			targetSiblings[i].innerHTML = label;
+		}
+
+		// auto select
+		if (t.options.startLanguage === lang) {
+			target.checked = true;
+			var event = (0, _general.createEvent)('click', target);
+			target.dispatchEvent(event);
+		}
+	},
+
+
+	/**
+  *
+  * @param {String} trackId
+  */
+	removeTrackButton: function removeTrackButton(trackId) {
+
+		var element = _document2.default.getElementById('' + trackId);
+
+		if (element) {
+			var button = element.closest('li');
+			if (button) {
+				button.remove();
+			}
+		}
+	},
+
+
+	/**
+  *
+  * @param {String} trackId
+  * @param {String} lang - The language code
+  * @param {String} label
+  */
+	addTrackButton: function addTrackButton(trackId, lang, label) {
+		var t = this;
+		if (label === '') {
+			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
+		}
+
+		// trackId is used in the value, too, because the "none"
+		// caption option doesn't have a trackId but we need to be able
+		// to set it, too
+		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">' + label + ' (loading)</label>') + '</li>';
+	},
+
+
+	/**
+  *
+  */
+	checkForTracks: function checkForTracks() {
+		var t = this;
+
+		var hasSubtitles = false;
+
+		// check if any subtitles
+		if (t.options.hideCaptionsButtonWhenEmpty) {
+			for (var i = 0, total = t.tracks.length; i < total; i++) {
+				var kind = t.tracks[i].kind;
+				if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {
+					hasSubtitles = true;
+					break;
+				}
+			}
+
+			t.captionsButton.style.display = hasSubtitles ? '' : 'none';
+			t.setControlsSize();
+		}
+	},
+
+
+	/**
+  *
+  */
+	displayCaptions: function displayCaptions() {
+
+		if (this.tracks === undefined) {
+			return;
+		}
+
+		var t = this,
+		    track = t.selectedTrack,
+		    sanitize = function sanitize(html) {
+
+			var div = _document2.default.createElement('div');
+			div.innerHTML = html;
+
+			// Remove all `<script>` tags first
+			var scripts = div.getElementsByTagName('script');
+			var i = scripts.length;
+			while (i--) {
+				scripts[i].remove();
+			}
+
+			// Loop the elements and remove anything that contains value="javascript:" or an `on*` attribute
+			// (`onerror`, `onclick`, etc.)
+			var allElements = div.getElementsByTagName('*');
+			for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
+				var attributesObj = allElements[_i12].attributes,
+				    attributes = Array.prototype.slice.call(attributesObj);
+
+				for (var j = 0, total = attributes.length; j < total; j++) {
+					if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {
+						allElements[_i12].remove();
+					} else if (attributes[j].name === 'style') {
+						allElements[_i12].removeAttribute(attributes[j].name);
+					}
+				}
+			}
+			return div.innerHTML;
+		};
+
+		if (track !== null && track.isLoaded) {
+			var i = t.searchTrackPosition(track.entries, t.media.currentTime);
+			if (i > -1) {
+				// Set the line before the timecode as a class so the cue can be targeted if needed
+				t.captionsText.innerHTML = sanitize(track.entries[i].text);
+				t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
+				t.captions.style.display = '';
+				t.captions.style.height = '0px';
+				return; // exit out if one is visible;
+			}
+
+			t.captions.style.display = 'none';
+		} else {
+			t.captions.style.display = 'none';
+		}
+	},
+
+
+	/**
+  *
+  * @param {HTMLElement} track
+  */
+	setupSlides: function setupSlides(track) {
+		var t = this;
+
+		t.slides = track;
+		t.slides.entries.imgs = [t.slides.entries.length];
+		t.showSlide(0);
+	},
+
+
+	/**
+  *
+  * @param {Number} index
+  */
+	showSlide: function showSlide(index) {
+		var _this = this;
+
+		var t = this;
+
+		if (t.tracks === undefined || t.slidesContainer === undefined) {
+			return;
+		}
+
+		var url = t.slides.entries[index].text;
+
+		var img = t.slides.entries[index].imgs;
+
+		if (img === undefined || img.fadeIn === undefined) {
+			(function () {
+
+				var image = _document2.default.createElement('img');
+				image.src = url;
+				image.addEventListener('load', function () {
+					var self = _this,
+					    visible = (0, _dom.siblings)(self, function (el) {
+						return visible(el);
+					});
+					self.style.display = 'none';
+					t.slidesContainer.innerHTML += self.innerHTML;
+					(0, _dom.fadeIn)(t.slidesContainer.querySelector(image));
+					for (var i = 0, total = visible.length; i < total; i++) {
+						(0, _dom.fadeOut)(visible[i], 400);
+					}
+				});
+				t.slides.entries[index].imgs = img = image;
+			})();
+		} else if (!(0, _dom.visible)(img)) {
+			(function () {
+				var visible = (0, _dom.siblings)(self, function (el) {
+					return visible(el);
+				});
+				(0, _dom.fadeIn)(t.slidesContainer.querySelector(img));
+				for (var i = 0, total = visible.length; i < total; i++) {
+					(0, _dom.fadeOut)(visible[i]);
+				}
+			})();
+		}
+	},
+
+
+	/**
+  *
+  */
+	displaySlides: function displaySlides() {
+		var t = this;
+
+		if (this.slides === undefined) {
+			return;
+		}
+
+		var slides = t.slides,
+		    i = t.searchTrackPosition(slides.entries, t.media.currentTime);
+
+		if (i > -1) {
+			t.showSlide(i);
+			return; // exit out if one is visible;
+		}
+	},
+
+
+	/**
+  *
+  * @param {Object} chapters
+  */
+	drawChapters: function drawChapters(chapters) {
+		var t = this,
+		    total = chapters.entries.length;
+
+		if (!total) {
+			return;
+		}
+
+		t.chaptersButton.querySelector('ul').innerHTML = '';
+
+		for (var i = 0; i < total; i++) {
+			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" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label">' + chapters.entries[i].text + '</label>') + '</li>';
+		}
+
+		var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
+		    labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');
+
+		for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {
+			radios[_i13].disabled = false;
+			radios[_i13].checked = false;
+			radios[_i13].addEventListener('click', function () {
+				var self = this,
+				    listItems = t.chaptersButton.querySelectorAll('li'),
+				    label = (0, _dom.siblings)(self, function (el) {
+					return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');
+				})[0];
+
+				self.checked = true;
+				self.parentNode.setAttribute('aria-checked', true);
+				(0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');
+				(0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');
+
+				for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {
+					listItems[_i14].setAttribute('aria-checked', false);
+				}
+
+				t.media.setCurrentTime(parseFloat(self.value));
+				if (t.media.paused) {
+					t.media.play();
+				}
+			});
+		}
+
+		for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {
+			labels[_i15].addEventListener('click', function () {
+				var radio = (0, _dom.siblings)(this, function (el) {
+					return el.tagName === 'INPUT';
+				})[0],
+				    event = (0, _general.createEvent)('click', radio);
+				radio.dispatchEvent(event);
+			});
+		}
+	},
+
+	/**
+  * Perform binary search to look for proper track index
+  *
+  * @param {Object[]} tracks
+  * @param {Number} currentTime
+  * @return {Number}
+  */
+	searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
+		var lo = 0,
+		    hi = tracks.length - 1,
+		    mid = void 0,
+		    start = void 0,
+		    stop = void 0;
+
+		while (lo <= hi) {
+			mid = lo + hi >> 1;
+			start = tracks[mid].start;
+			stop = tracks[mid].stop;
+
+			if (currentTime >= start && currentTime < stop) {
+				return mid;
+			} else if (start < currentTime) {
+				lo = mid + 1;
+			} else if (start > currentTime) {
+				hi = mid - 1;
+			}
+		}
+
+		return -1;
+	}
+});
+
+/**
+ * Map all possible languages with their respective code
+ *
+ * @constructor
+ */
+_mejs2.default.language = {
+	codes: {
+		af: 'mejs.afrikaans',
+		sq: 'mejs.albanian',
+		ar: 'mejs.arabic',
+		be: 'mejs.belarusian',
+		bg: 'mejs.bulgarian',
+		ca: 'mejs.catalan',
+		zh: 'mejs.chinese',
+		'zh-cn': 'mejs.chinese-simplified',
+		'zh-tw': 'mejs.chines-traditional',
+		hr: 'mejs.croatian',
+		cs: 'mejs.czech',
+		da: 'mejs.danish',
+		nl: 'mejs.dutch',
+		en: 'mejs.english',
+		et: 'mejs.estonian',
+		fl: 'mejs.filipino',
+		fi: 'mejs.finnish',
+		fr: 'mejs.french',
+		gl: 'mejs.galician',
+		de: 'mejs.german',
+		el: 'mejs.greek',
+		ht: 'mejs.haitian-creole',
+		iw: 'mejs.hebrew',
+		hi: 'mejs.hindi',
+		hu: 'mejs.hungarian',
+		is: 'mejs.icelandic',
+		id: 'mejs.indonesian',
+		ga: 'mejs.irish',
+		it: 'mejs.italian',
+		ja: 'mejs.japanese',
+		ko: 'mejs.korean',
+		lv: 'mejs.latvian',
+		lt: 'mejs.lithuanian',
+		mk: 'mejs.macedonian',
+		ms: 'mejs.malay',
+		mt: 'mejs.maltese',
+		no: 'mejs.norwegian',
+		fa: 'mejs.persian',
+		pl: 'mejs.polish',
+		pt: 'mejs.portuguese',
+		ro: 'mejs.romanian',
+		ru: 'mejs.russian',
+		sr: 'mejs.serbian',
+		sk: 'mejs.slovak',
+		sl: 'mejs.slovenian',
+		es: 'mejs.spanish',
+		sw: 'mejs.swahili',
+		sv: 'mejs.swedish',
+		tl: 'mejs.tagalog',
+		th: 'mejs.thai',
+		tr: 'mejs.turkish',
+		uk: 'mejs.ukrainian',
+		vi: 'mejs.vietnamese',
+		cy: 'mejs.welsh',
+		yi: 'mejs.yiddish'
+	}
+};
+
+/*
+ Parses WebVTT format which should be formatted as
+ ================================
+ WEBVTT
+
+ 1
+ 00:00:01,1 --> 00:00:05,000
+ A line of text
+
+ 2
+ 00:01:15,1 --> 00:02:05,000
+ A second line of text
+
+ ===============================
+
+ Adapted from: http://www.delphiki.com/html5/playr
+ */
+_mejs2.default.TrackFormatParser = {
+	webvtt: {
+		/**
+   * @type {String}
+   */
+		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})?)(.*)$/,
+
+		/**
+   *
+   * @param {String} trackText
+   * @returns {{text: Array, times: Array}}
+   */
+		parse: function parse(trackText) {
+			var lines = trackText.split(/\r?\n/),
+			    entries = [];
+
+			var timecode = void 0,
+			    text = void 0,
+			    identifier = void 0;
+
+			for (var i = 0, total = lines.length; i < total; i++) {
+				timecode = this.pattern.exec(lines[i]);
+
+				if (timecode && i < lines.length) {
+					if (i - 1 >= 0 && lines[i - 1] !== '') {
+						identifier = lines[i - 1];
+					}
+					i++;
+					// grab all the (possibly multi-line) text that follows
+					text = lines[i];
+					i++;
+					while (lines[i] !== '' && i < lines.length) {
+						text = text + '\n' + lines[i];
+						i++;
+					}
+					text = text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
+					entries.push({
+						identifier: identifier,
+						start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),
+						stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),
+						text: text,
+						settings: timecode[5]
+					});
+				}
+				identifier = '';
+			}
+			return entries;
+		}
+	},
+	// Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420
+	dfxp: {
+		/**
+   *
+   * @param {String} trackText
+   * @returns {{text: Array, times: Array}}
+   */
+		parse: function parse(trackText) {
+			trackText = $(trackText).filter('tt');
+			var container = trackText.firstChild,
+			    lines = container.querySelectorAll('p'),
+			    styleNode = trackText.getElementById('' + container.attr('style')),
+			    entries = [];
+
+			var styles = void 0;
+
+			if (styleNode.length) {
+				styleNode.removeAttribute('id');
+				var attributes = styleNode.attributes;
+				if (attributes.length) {
+					styles = {};
+					for (var i = 0, total = attributes.length; i < total; i++) {
+						styles[attributes[i].name.split(":")[1]] = attributes[i].value;
+					}
+				}
+			}
+
+			for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {
+				var style = void 0,
+				    _temp = {
+					start: null,
+					stop: null,
+					style: null,
+					text: null
+				};
+
+				if (lines.eq(_i16).attr('begin')) {
+					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('begin'));
+				}
+				if (!_temp.start && lines.eq(_i16 - 1).attr('end')) {
+					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 - 1).attr('end'));
+				}
+				if (lines.eq(_i16).attr('end')) {
+					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('end'));
+				}
+				if (!_temp.stop && lines.eq(_i16 + 1).attr('begin')) {
+					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 + 1).attr('begin'));
+				}
+
+				if (styles) {
+					style = '';
+					for (var _style in styles) {
+						style += _style + ':' + styles[_style] + ';';
+					}
+				}
+				if (style) {
+					_temp.style = style;
+				}
+				if (_temp.start === 0) {
+					_temp.start = 0.200;
+				}
+				_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>");
+				entries.push(_temp);
+			}
+			return entries;
+		}
+	}
+};
+
+},{"16":16,"2":2,"20":20,"21":21,"24":24,"4":4,"6":6}],13:[function(_dereq_,module,exports){
+'use strict';
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _player = _dereq_(16);
+
+var _player2 = _interopRequireDefault(_player);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _constants = _dereq_(19);
+
+var _general = _dereq_(21);
+
+var _dom = _dereq_(20);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Volume button
+ *
+ * This feature enables the displaying of a Volume button in the control bar, and also contains logic to manipulate its
+ * events, such as sliding up/down (or left/right, if vertical), muting/unmuting media, etc.
+ */
+
+// Feature configuration
+Object.assign(_player.config, {
+	/**
+  * @type {?String}
+  */
+	muteText: null,
+	/**
+  * @type {?String}
+  */
+	unmuteText: null,
+	/**
+  * @type {?String}
+  */
+	allyVolumeControlText: null,
+	/**
+  * @type {Boolean}
+  */
+	hideVolumeOnTouchDevices: true,
+	/**
+  * @type {String}
+  */
+	audioVolume: 'horizontal',
+	/**
+  * @type {String}
+  */
+	videoVolume: 'vertical'
+});
+
+Object.assign(_player2.default.prototype, {
+
+	/**
+  * Feature constructor.
+  *
+  * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list
+  * @param {MediaElementPlayer} player
+  * @param {$} controls
+  * @param {$} layers
+  * @param {HTMLElement} media
+  * @public
+  */
+	buildvolume: function buildvolume(player, controls, layers, media) {
+
+		// Android and iOS don't support volume controls
+		if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
+			return;
+		}
+
+		var t = this,
+		    mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,
+		    muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),
+		    unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),
+		    volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),
+		    mute = _document2.default.createElement('div');
+
+		mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
+		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">') + ('<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>';
+
+		t.addControlElement(mute, 'volume');
+
+		// horizontal version
+		if (mode === 'horizontal') {
+			var anchor = _document2.default.createElement('a');
+			anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
+			anchor.href = 'javascript:void(0);';
+			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>';
+			mute.parentNode.insertBefore(anchor, mute.nextSibling);
+		}
+
+		var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
+		    volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
+		    volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
+		    volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
+		    button = mute.firstElementChild,
+
+
+		/**
+   * @private
+   * @param {Number} volume
+   */
+		positionVolumeHandle = function positionVolumeHandle(volume) {
+
+			// correct to 0-1
+			volume = Math.max(0, volume);
+			volume = Math.min(volume, 1);
+
+			// adjust mute button style
+			if (volume === 0) {
+				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
+				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
+				var _button = mute.firstElementChild;
+				_button.setAttribute('title', unmuteText);
+				_button.setAttribute('aria-label', unmuteText);
+			} else {
+				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
+				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
+				var _button2 = mute.firstElementChild;
+				_button2.setAttribute('title', muteText);
+				_button2.setAttribute('aria-label', muteText);
+			}
+
+			var volumePercentage = volume * 100 + '%',
+			    volumeStyles = getComputedStyle(volumeHandle);
+
+			// position slider
+			if (mode === 'vertical') {
+				volumeCurrent.style.bottom = 0;
+				volumeCurrent.style.height = volumePercentage;
+				volumeHandle.style.bottom = volumePercentage;
+				volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';
+			} else {
+				volumeCurrent.style.left = 0;
+				volumeCurrent.style.width = volumePercentage;
+				volumeHandle.style.left = volumePercentage;
+				volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
+			}
+		},
+
+		/**
+   * @private
+   */
+		handleVolumeMove = function handleVolumeMove(e) {
+
+			var totalOffset = (0, _dom.offset)(volumeTotal),
+			    volumeStyles = getComputedStyle(volumeTotal);
+
+			var volume = null;
+
+			// calculate the new volume based on the most recent position
+			if (mode === 'vertical') {
+
+				var railHeight = parseFloat(volumeStyles.height),
+				    newY = e.pageY - totalOffset.top;
+
+				volume = (railHeight - newY) / railHeight;
+
+				// the controls just hide themselves (usually when mouse moves too far up)
+				if (totalOffset.top === 0 || totalOffset.left === 0) {
+					return;
+				}
+			} else {
+				var railWidth = parseFloat(volumeStyles.width),
+				    newX = e.pageX - totalOffset.left;
+
+				volume = newX / railWidth;
+			}
+
+			// ensure the volume isn't outside 0-1
+			volume = Math.max(0, volume);
+			volume = Math.min(volume, 1);
+
+			// position the slider and handle
+			positionVolumeHandle(volume);
+
+			// set the media object (this will trigger the `volumechanged` event)
+			if (volume === 0) {
+				media.setMuted(true);
+			} else {
+				media.setMuted(false);
+			}
+			media.setVolume(volume);
+
+			e.preventDefault();
+			e.stopPropagation();
+		};
+
+		mute.addEventListener('mouseenter', function (e) {
+			if (e.target === mute) {
+				volumeSlider.style.display = 'block';
+				mouseIsOver = true;
+				e.preventDefault();
+				e.stopPropagation();
+			}
+		});
+		mute.addEventListener('focusin', function () {
+			volumeSlider.style.display = 'block';
+			mouseIsOver = true;
+		});
+		mute.addEventListener('mouseleave', function () {
+			mouseIsOver = false;
+			if (!mouseIsDown && mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
+		mute.addEventListener('focusout', function () {
+			mouseIsOver = false;
+			if (!mouseIsDown && mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
+		mute.addEventListener('keydown', function (e) {
+
+			if (t.options.keyActions.length) {
+				var keyCode = e.which || e.keyCode || 0,
+				    volume = media.volume;
+				switch (keyCode) {
+					case 38:
+						// Up
+						volume = Math.min(volume + 0.1, 1);
+						break;
+					case 40:
+						// Down
+						volume = Math.max(0, volume - 0.1);
+						break;
+					default:
+						return true;
+				}
+
+				mouseIsDown = false;
+				positionVolumeHandle(volume);
+				media.setVolume(volume);
+
+				e.preventDefault();
+				e.stopPropagation();
+			}
+		});
+
+		var mouseIsDown = false,
+		    mouseIsOver = false,
+
+
+		/**
+   * @private
+   */
+		updateVolumeSlider = function updateVolumeSlider() {
+			var volume = Math.floor(media.volume * 100);
+			volumeSlider.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
+			volumeSlider.setAttribute('aria-valuemin', 0);
+			volumeSlider.setAttribute('aria-valuemax', 100);
+			volumeSlider.setAttribute('aria-valuenow', volume);
+			volumeSlider.setAttribute('aria-valuetext', volume + '%');
+			volumeSlider.setAttribute('role', 'slider');
+			volumeSlider.tabIndex = -1;
+		};
+
+		// Events
+		volumeSlider.addEventListener('dragstart', function () {
+			return false;
+		});
+
+		volumeSlider.addEventListener('mouseover', function () {
+			mouseIsOver = true;
+		});
+		volumeSlider.addEventListener('mousedown', function (e) {
+			handleVolumeMove(e);
+			t.globalBind('mousemove.vol', function (event) {
+				var target = event.target;
+				if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {
+					handleVolumeMove(event);
+				}
+			});
+			t.globalBind('mouseup.vol', function () {
+				mouseIsDown = false;
+				t.globalUnbind('mousemove.vol mouseup.vol');
+
+				if (!mouseIsOver && mode === 'vertical') {
+					volumeSlider.style.display = 'none';
+				}
+			});
+			mouseIsDown = true;
+
+			e.preventDefault();
+			e.stopPropagation();
+		});
+
+		// MUTE button
+		button.addEventListener('click', function () {
+			media.setMuted(!media.muted);
+			var event = (0, _general.createEvent)('volumechange', media);
+			media.dispatchEvent(event);
+		});
+		button.addEventListener('focus', function () {
+			if (mode === 'vertical') {
+				volumeSlider.style.display = 'block';
+			}
+		});
+		button.addEventListener('blur', function () {
+			if (mode === 'vertical') {
+				volumeSlider.style.display = 'none';
+			}
+		});
+
+		// listen for volume change events from other sources
+		media.addEventListener('volumechange', function (e) {
+			if (!mouseIsDown) {
+				if (media.muted) {
+					positionVolumeHandle(0);
+					(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
+					(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
+				} else {
+					positionVolumeHandle(media.volume);
+					(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
+					(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
+				}
+			}
+			updateVolumeSlider(e);
+		});
+
+		// mutes the media and sets the volume icon muted if the initial volume is set to 0
+		if (player.options.startVolume === 0) {
+			media.setMuted(true);
+		}
+
+		// shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements
+		var isNative = t.media.rendererName !== null && t.media.rendererName.match(/(native|html5)/) !== null;
+
+		if (isNative) {
+			media.setVolume(player.options.startVolume);
+		}
+
+		t.container.addEventListener('controlsresize', function () {
+			if (media.muted) {
+				positionVolumeHandle(0);
+				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
+				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
+			} else {
+				positionVolumeHandle(media.volume);
+				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
+				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
+			}
+		});
+	}
+});
+
+},{"16":16,"19":19,"2":2,"20":20,"21":21,"4":4}],14:[function(_dereq_,module,exports){
+'use strict';
+
+/*!
+ * This is a `i18n` language object.
+ *
+ * English; This can serve as a template for other languages to translate
+ *
+ * @author
+ *   TBD
+ *   Sascha Greuel (Twitter: @SoftCreatR)
+ *
+ * @see core/i18n.js
+ */
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+var EN = exports.EN = {
+	"mejs.plural-form": 1,
+
+	// core/mediaelement.js
+	"mejs.download-file": "Download File",
+
+	// renderers/flash.js
+	"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/",
+
+	// features/fullscreen.js
+	"mejs.fullscreen": "Fullscreen",
+
+	// features/playpause.js
+	"mejs.play": "Play",
+	"mejs.pause": "Pause",
+
+	// features/progress.js
+	"mejs.time-slider": "Time Slider",
+	"mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.",
+	"mejs.live-broadcast": "Live Broadcast",
+
+	// features/volume.js
+	"mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.",
+	"mejs.unmute": "Unmute",
+	"mejs.mute": "Mute",
+	"mejs.volume-slider": "Volume Slider",
+
+	// core/player.js
+	"mejs.video-player": "Video Player",
+	"mejs.audio-player": "Audio Player",
+
+	// features/tracks.js
+	"mejs.captions-subtitles": "Captions/Subtitles",
+	"mejs.captions-chapters": "Chapters",
+	"mejs.none": "None",
+	"mejs.afrikaans": "Afrikaans",
+	"mejs.albanian": "Albanian",
+	"mejs.arabic": "Arabic",
+	"mejs.belarusian": "Belarusian",
+	"mejs.bulgarian": "Bulgarian",
+	"mejs.catalan": "Catalan",
+	"mejs.chinese": "Chinese",
+	"mejs.chinese-simplified": "Chinese (Simplified)",
+	"mejs.chinese-traditional": "Chinese (Traditional)",
+	"mejs.croatian": "Croatian",
+	"mejs.czech": "Czech",
+	"mejs.danish": "Danish",
+	"mejs.dutch": "Dutch",
+	"mejs.english": "English",
+	"mejs.estonian": "Estonian",
+	"mejs.filipino": "Filipino",
+	"mejs.finnish": "Finnish",
+	"mejs.french": "French",
+	"mejs.galician": "Galician",
+	"mejs.german": "German",
+	"mejs.greek": "Greek",
+	"mejs.haitian-creole": "Haitian Creole",
+	"mejs.hebrew": "Hebrew",
+	"mejs.hindi": "Hindi",
+	"mejs.hungarian": "Hungarian",
+	"mejs.icelandic": "Icelandic",
+	"mejs.indonesian": "Indonesian",
+	"mejs.irish": "Irish",
+	"mejs.italian": "Italian",
+	"mejs.japanese": "Japanese",
+	"mejs.korean": "Korean",
+	"mejs.latvian": "Latvian",
+	"mejs.lithuanian": "Lithuanian",
+	"mejs.macedonian": "Macedonian",
+	"mejs.malay": "Malay",
+	"mejs.maltese": "Maltese",
+	"mejs.norwegian": "Norwegian",
+	"mejs.persian": "Persian",
+	"mejs.polish": "Polish",
+	"mejs.portuguese": "Portuguese",
+	"mejs.romanian": "Romanian",
+	"mejs.russian": "Russian",
+	"mejs.serbian": "Serbian",
+	"mejs.slovak": "Slovak",
+	"mejs.slovenian": "Slovenian",
+	"mejs.spanish": "Spanish",
+	"mejs.swahili": "Swahili",
+	"mejs.swedish": "Swedish",
+	"mejs.tagalog": "Tagalog",
+	"mejs.thai": "Thai",
+	"mejs.turkish": "Turkish",
+	"mejs.ukrainian": "Ukrainian",
+	"mejs.vietnamese": "Vietnamese",
+	"mejs.welsh": "Welsh",
+	"mejs.yiddish": "Yiddish"
+};
+
+},{}],15:[function(_dereq_,module,exports){
+'use strict';
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+if (typeof jQuery !== 'undefined') {
+	_mejs2.default.$ = _window2.default.jQuery = _window2.default.$ = jQuery;
+} else if (typeof Zepto !== 'undefined') {
+	_mejs2.default.$ = _window2.default.Zepto = _window2.default.$ = Zepto;
+} else if (typeof ender !== 'undefined') {
+	_mejs2.default.$ = _window2.default.ender = _window2.default.$ = ender;
+}
+
+},{"3":3,"6":6}],16:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.config = undefined;
+
+var _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; };
+
+var _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; }; }();
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _mediaelement = _dereq_(5);
+
+var _mediaelement2 = _interopRequireDefault(_mediaelement);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _constants = _dereq_(19);
+
+var _general = _dereq_(21);
+
+var _time = _dereq_(24);
+
+var _media = _dereq_(22);
+
+var _dom = _dereq_(20);
+
+var dom = _interopRequireWildcard(_dom);
+
+function _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; } }
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+_mejs2.default.mepIndex = 0;
+
+_mejs2.default.players = {};
+
+// default player values
+var config = exports.config = {
+	// url to poster (to fix iOS 3.x)
+	poster: '',
+	// When the video is ended, show the poster.
+	showPosterWhenEnded: false,
+	// When the video is paused, show the poster.
+	showPosterWhenPaused: false,
+	// Default if the <video width> is not specified
+	defaultVideoWidth: 480,
+	// Default if the <video height> is not specified
+	defaultVideoHeight: 270,
+	// If set, overrides <video width>
+	videoWidth: -1,
+	// If set, overrides <video height>
+	videoHeight: -1,
+	// Default if the user doesn't specify
+	defaultAudioWidth: 400,
+	// Default if the user doesn't specify
+	defaultAudioHeight: 40,
+	// Default amount to move back when back key is pressed
+	defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
+		return media.duration * 0.05;
+	},
+	// Default amount to move forward when forward key is pressed
+	defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
+		return media.duration * 0.05;
+	},
+	// Set dimensions via JS instead of CSS
+	setDimensions: true,
+	// Width of audio player
+	audioWidth: -1,
+	// Height of audio player
+	audioHeight: -1,
+	// Initial volume when the player starts (overridden by user cookie)
+	startVolume: 0.8,
+	// Useful for <audio> player loops
+	loop: false,
+	// Rewind to beginning when media ends
+	autoRewind: true,
+	// Resize to media dimensions
+	enableAutosize: true,
+	/*
+  * Time format to use. Default: 'mm:ss'
+  * Supported units:
+  *   h: hour
+  *   m: minute
+  *   s: second
+  *   f: frame count
+  * When using 'hh', 'mm', 'ss' or 'ff' we always display 2 digits.
+  * If you use 'h', 'm', 's' or 'f' we display 1 digit if possible.
+  *
+  * Example to display 75 seconds:
+  * Format 'mm:ss': 01:15
+  * Format 'm:ss': 1:15
+  * Format 'm:s': 1:15
+  */
+	timeFormat: '',
+	// Force the hour marker (##:00:00)
+	alwaysShowHours: false,
+	// Show framecount in timecode (##:00:00:00)
+	showTimecodeFrameCount: false,
+	// Used when showTimecodeFrameCount is set to true
+	framesPerSecond: 25,
+	// Hide controls when playing and mouse is not over the video
+	alwaysShowControls: false,
+	// Display the video control when media is loading
+	hideVideoControlsOnLoad: false,
+	// Display the video controls when media is paused
+	hideVideoControlsOnPause: false,
+	// Enable click video element to toggle play/pause
+	clickToPlayPause: true,
+	// Time in ms to hide controls
+	controlsTimeoutDefault: 1500,
+	// Time in ms to trigger the timer when mouse moves
+	controlsTimeoutMouseEnter: 2500,
+	// Time in ms to trigger the timer when mouse leaves
+	controlsTimeoutMouseLeave: 1000,
+	// Force iPad's native controls
+	iPadUseNativeControls: false,
+	// Force iPhone's native controls
+	iPhoneUseNativeControls: false,
+	// Force Android's native controls
+	AndroidUseNativeControls: false,
+	// Features to show
+	features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
+	// Only for dynamic
+	isVideo: true,
+	// Stretching modes (auto, fill, responsive, none)
+	stretching: 'auto',
+	// Prefix class names on elements
+	classPrefix: 'mejs__',
+	// Turn keyboard support on and off for this instance
+	enableKeyboard: true,
+	// When this player starts, it will pause other players
+	pauseOtherPlayers: true,
+	// Number of decimal places to show if frames are shown
+	secondsDecimalLength: 0,
+	// Array of keyboard actions such as play/pause
+	keyActions: [{
+		keys: [32, // SPACE
+		179 // GOOGLE play/pause button
+		],
+		action: function action(player, media) {
+
+			if (!_constants.IS_FIREFOX) {
+				if (media.paused || media.ended) {
+					media.play();
+				} else {
+					media.pause();
+				}
+			}
+		}
+	}, {
+		keys: [38], // UP
+		action: function action(player, media) {
+
+			if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) {
+				player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = '';
+			}
+			if (player.isVideo) {
+				player.showControls();
+				player.startControlsTimer();
+			}
+
+			var newVolume = Math.min(media.volume + 0.1, 1);
+			media.setVolume(newVolume);
+			if (newVolume > 0) {
+				media.setMuted(false);
+			}
+		}
+	}, {
+		keys: [40], // DOWN
+		action: function action(player, media) {
+
+			if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) {
+				player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = '';
+			}
+
+			if (player.isVideo) {
+				player.showControls();
+				player.startControlsTimer();
+			}
+
+			var newVolume = Math.max(media.volume - 0.1, 0);
+			media.setVolume(newVolume);
+
+			if (newVolume <= 0.1) {
+				media.setMuted(true);
+			}
+		}
+	}, {
+		keys: [37, // LEFT
+		227 // Google TV rewind
+		],
+		action: function action(player, media) {
+			if (!isNaN(media.duration) && media.duration > 0) {
+				if (player.isVideo) {
+					player.showControls();
+					player.startControlsTimer();
+				}
+
+				// 5%
+				var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0);
+				media.setCurrentTime(newTime);
+			}
+		}
+	}, {
+		keys: [39, // RIGHT
+		228 // Google TV forward
+		],
+		action: function action(player, media) {
+
+			if (!isNaN(media.duration) && media.duration > 0) {
+				if (player.isVideo) {
+					player.showControls();
+					player.startControlsTimer();
+				}
+
+				// 5%
+				var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration);
+				media.setCurrentTime(newTime);
+			}
+		}
+	}, {
+		keys: [70], // F
+		action: function action(player, media, key, event) {
+			if (!event.ctrlKey) {
+				if (typeof player.enterFullScreen !== 'undefined') {
+					if (player.isFullScreen) {
+						player.exitFullScreen();
+					} else {
+						player.enterFullScreen();
+					}
+				}
+			}
+		}
+	}, {
+		keys: [77], // M
+		action: function action(player) {
+
+			player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = '';
+			if (player.isVideo) {
+				player.showControls();
+				player.startControlsTimer();
+			}
+			if (player.media.muted) {
+				player.setMuted(false);
+			} else {
+				player.setMuted(true);
+			}
+		}
+	}]
+};
+
+_mejs2.default.MepDefaults = config;
+
+/**
+ * Wrap a MediaElement object in player controls
+ *
+ * @constructor
+ * @param {HTMLElement|String} node
+ * @param {Object} o
+ * @return {?MediaElementPlayer}
+ */
+
+var MediaElementPlayer = function () {
+	function MediaElementPlayer(node, o) {
+		_classCallCheck(this, MediaElementPlayer);
+
+		var t = this,
+		    element = typeof node === 'string' ? _document2.default.getElementById(node) : node;
+
+		t.hasFocus = false;
+
+		t.controlsAreVisible = true;
+
+		t.controlsEnabled = true;
+
+		t.controlsTimer = null;
+
+		// enforce object, even without "new" (via John Resig)
+		if (!(t instanceof MediaElementPlayer)) {
+			return new MediaElementPlayer(element, o);
+		}
+
+		// these will be reset after the MediaElement.success fires
+		// t.media will be the fake node to emulate all HTML5 events, methods, etc
+		// t.node will be the node to be restored
+		t.node = t.media = element;
+
+		if (!t.node) {
+			return;
+		}
+
+		// check for existing player
+		if (t.media.player !== undefined) {
+			return t.media.player;
+		}
+
+		// try to get options from data-mejsoptions
+		if (o === undefined) {
+			o = t.node.getAttribute('data-mejsoptions');
+		}
+
+		// extend default options
+		t.options = Object.assign({}, config, o);
+
+		if (!t.options.timeFormat) {
+			// Generate the time format according to options
+			t.options.timeFormat = 'mm:ss';
+			if (t.options.alwaysShowHours) {
+				t.options.timeFormat = 'hh:mm:ss';
+			}
+			if (t.options.showTimecodeFrameCount) {
+				t.options.timeFormat += ':ff';
+			}
+		}
+
+		(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
+
+		// unique ID
+		t.id = 'mep_' + _mejs2.default.mepIndex++;
+
+		// add to player array (for focus events)
+		_mejs2.default.players[t.id] = t;
+
+		// start up
+		var meOptions = Object.assign({}, t.options, {
+			success: function success(media, domNode) {
+				t._meReady(media, domNode);
+			},
+			error: function error(e) {
+				t._handleError(e);
+			}
+		}),
+		    tagName = t.node.tagName.toLowerCase();
+
+		// get video from src or href?
+		t.isDynamic = tagName !== 'audio' && tagName !== 'video';
+		t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
+
+		// use native controls in iPad, iPhone, and Android
+		if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
+
+			// add controls and stop
+			t.node.setAttribute('controls', true);
+
+			// override Apple's autoplay override for iPads
+			if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
+				t.play();
+			}
+		} else if ((t.isVideo || !t.isVideo && t.options.features.length) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
+
+			// DESKTOP: use MediaElementPlayer controls
+
+			// remove native controls
+			t.node.removeAttribute('controls');
+			var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
+			// insert description for screen readers
+			var offscreen = _document2.default.createElement('span');
+			offscreen.className = t.options.classPrefix + 'offscreen';
+			offscreen.innerText = videoPlayerTitle;
+			t.media.parentNode.insertBefore(offscreen, t.media);
+
+			// build container
+			t.container = _document2.default.createElement('div');
+			t.container.id = t.id;
+			t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
+			t.container.tabIndex = 0;
+			t.container.setAttribute('role', 'application');
+			t.container.setAttribute('aria-label', videoPlayerTitle);
+			t.container.innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'clear"></div>') + '</div>';
+			t.container.addEventListener('focus', function (e) {
+				if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
+					t.showControls(true);
+					// In versions older than IE11, the focus causes the playbar to be displayed
+					// if user clicks on the Play/Pause button in the control bar once it attempts
+					// to hide it
+					if (!_constants.HAS_MS_NATIVE_FULLSCREEN) {
+						// If e.relatedTarget appears before container, send focus to play button,
+						// else send focus to last control button.
+						var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
+						    button = t.container.querySelector(btnSelector);
+
+						button.focus();
+					}
+				}
+			});
+			t.node.parentNode.insertBefore(t.container, t.node);
+
+			// When no elements in controls, hide bar completely
+			if (!t.options.features.length) {
+				t.container.style.background = 'transparent';
+				t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
+			}
+
+			if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) {
+				// outer container
+				t.outerContainer = t.media.parentNode;
+
+				var wrapper = _document2.default.createElement('div');
+				wrapper.className = t.options.classPrefix + 'fill-container';
+				t.container.parentNode.insertBefore(wrapper, t.container);
+				wrapper.appendChild(t.container);
+			}
+
+			// add classes for user and content
+			if (_constants.IS_ANDROID) {
+				dom.addClass(t.container, t.options.classPrefix + 'android');
+			}
+			if (_constants.IS_IOS) {
+				dom.addClass(t.container, t.options.classPrefix + 'ios');
+			}
+			if (_constants.IS_IPAD) {
+				dom.addClass(t.container, t.options.classPrefix + 'ipad');
+			}
+			if (_constants.IS_IPHONE) {
+				dom.addClass(t.container, t.options.classPrefix + 'iphone');
+			}
+			dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
+
+			// move the <video/video> tag into the right spot
+			t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
+
+			// needs to be assigned here, after iOS remap
+			t.media.player = t;
+
+			// find parts
+			t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls');
+			t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers');
+
+			// determine the size
+
+			/* size priority:
+    (1) videoWidth (forced),
+    (2) style="width;height;"
+    (3) width attribute,
+    (4) defaultVideoWidth (for unspecified cases)
+    */
+
+			var tagType = t.isVideo ? 'video' : 'audio',
+			    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
+
+			if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
+				t.width = t.options[tagType + 'Width'];
+			} else if (t.node.style.width !== '' && t.node.style.width !== null) {
+				t.width = t.node.style.width;
+			} else if (t.node.getAttribute('width')) {
+				t.width = t.node.getAttribute('width');
+			} else {
+				t.width = t.options['default' + capsTagName + 'Width'];
+			}
+
+			if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
+				t.height = t.options[tagType + 'Height'];
+			} else if (t.node.style.height !== '' && t.node.style.height !== null) {
+				t.height = t.node.style.height;
+			} else if (t.node.getAttribute('height')) {
+				t.height = t.node.getAttribute('height');
+			} else {
+				t.height = t.options['default' + capsTagName + 'Height'];
+			}
+
+			t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
+
+			// set the size, while we wait for the plugins to load below
+			t.setPlayerSize(t.width, t.height);
+
+			// create MediaElementShim
+			meOptions.pluginWidth = t.width;
+			meOptions.pluginHeight = t.height;
+		}
+		// Hide media completely for audio that doesn't have any features
+		else if (!t.isVideo && !t.options.features.length) {
+				t.node.style.display = 'none';
+			}
+
+		// create MediaElement shim
+		new _mediaelement2.default(t.media, meOptions);
+
+		if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
+			// controls are shown when loaded
+			var event = (0, _general.createEvent)('controlsshown', t.container);
+			t.container.dispatchEvent(event);
+		}
+
+		return t;
+	}
+
+	_createClass(MediaElementPlayer, [{
+		key: 'showControls',
+		value: function showControls(doAnimation) {
+			var t = this;
+
+			doAnimation = doAnimation === undefined || doAnimation;
+
+			if (t.controlsAreVisible) {
+				return;
+			}
+
+			if (doAnimation) {
+				(function () {
+					dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
+					dom.fadeIn(t.controls, 200, function () {
+						var event = (0, _general.createEvent)('controlsshown', t.container);
+						t.container.dispatchEvent(event);
+					});
+
+					// any additional controls people might add and want to hide
+					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
+
+					var _loop = function _loop(i, total) {
+						dom.fadeIn(controls[i], 200, function () {
+							dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
+						});
+					};
+
+					for (var i = 0, total = controls.length; i < total; i++) {
+						_loop(i, total);
+					}
+				})();
+			} else {
+				dom.removeClass(t.controls, t.options.classPrefix + 'offscreen');
+				t.controls.style.display = '';
+
+				// any additional controls people might add and want to hide
+				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
+				for (var i = 0, total = controls.length; i < total; i++) {
+					dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
+					controls[i].style.display = '';
+				}
+
+				var event = (0, _general.createEvent)('controlsshown', t.container);
+				t.container.dispatchEvent(event);
+			}
+
+			t.controlsAreVisible = true;
+			t.setControlsSize();
+		}
+	}, {
+		key: 'hideControls',
+		value: function hideControls(doAnimation, forceHide) {
+			var t = this;
+
+			doAnimation = doAnimation === undefined || doAnimation;
+
+			if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.keyboardAction || t.media.paused && t.media.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.media.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.media.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.media.readyState || t.media.ended)) {
+				return;
+			}
+
+			if (doAnimation) {
+				(function () {
+					// fade out main controls
+					dom.fadeOut(t.controls, 200, function () {
+						dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
+						t.controls.style.display = '';
+						var event = (0, _general.createEvent)('controlshidden', t.container);
+						t.container.dispatchEvent(event);
+					});
+
+					// any additional controls people might add and want to hide
+					var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
+
+					var _loop2 = function _loop2(i, total) {
+						dom.fadeOut(controls[i], 200, function () {
+							dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
+							controls[i].style.display = '';
+						});
+					};
+
+					for (var i = 0, total = controls.length; i < total; i++) {
+						_loop2(i, total);
+					}
+				})();
+			} else {
+
+				// hide main controls
+				dom.addClass(t.controls, t.options.classPrefix + 'offscreen');
+				t.controls.style.display = '';
+
+				// hide others
+				var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control');
+				for (var i = 0, total = controls.length; i < total; i++) {
+					dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
+					controls[i].style.display = '';
+				}
+
+				var event = (0, _general.createEvent)('controlshidden', t.container);
+				t.container.dispatchEvent(event);
+			}
+
+			t.controlsAreVisible = false;
+		}
+	}, {
+		key: 'startControlsTimer',
+		value: function startControlsTimer(timeout) {
+
+			var t = this;
+
+			timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
+
+			t.killControlsTimer('start');
+
+			t.controlsTimer = setTimeout(function () {
+				t.hideControls();
+				t.killControlsTimer('hide');
+			}, timeout);
+		}
+	}, {
+		key: 'killControlsTimer',
+		value: function killControlsTimer() {
+
+			var t = this;
+
+			if (t.controlsTimer !== null) {
+				clearTimeout(t.controlsTimer);
+				delete t.controlsTimer;
+				t.controlsTimer = null;
+			}
+		}
+	}, {
+		key: 'disableControls',
+		value: function disableControls() {
+			var t = this;
+
+			t.killControlsTimer();
+			t.controlsEnabled = true;
+			t.hideControls(false, true);
+		}
+	}, {
+		key: 'enableControls',
+		value: function enableControls() {
+			var t = this;
+
+			t.controlsEnabled = true;
+			t.showControls(false);
+		}
+
+		/**
+   * Set up all controls and events
+   *
+   * @param media
+   * @param domNode
+   * @private
+   */
+
+	}, {
+		key: '_meReady',
+		value: function _meReady(media, domNode) {
+
+			var t = this,
+			    autoplayAttr = domNode.getAttribute('autoplay'),
+			    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
+			    isNative = media.rendererName !== null && media.rendererName.match(/(native|html5)/) !== null;
+
+			if (t.controls) {
+				t.enableControls();
+			}
+
+			if (t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) {
+				t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
+			}
+
+			// make sure it can't create itself again if a plugin reloads
+			if (t.created) {
+				return;
+			}
+
+			t.created = true;
+			t.media = media;
+			t.domNode = domNode;
+
+			if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
+				var _ret5 = function () {
+
+					// In the event that no features are specified for audio,
+					// create only MediaElement instance rather than
+					// doing all the work to create a full player
+					if (!t.isVideo && !t.options.features.length) {
+
+						// force autoplay for HTML5
+						if (autoplay && isNative) {
+							t.play();
+						}
+
+						if (t.options.success) {
+
+							if (typeof t.options.success === 'string') {
+								_window2.default[t.options.success](t.media, t.domNode, t);
+							} else {
+								t.options.success(t.media, t.domNode, t);
+							}
+						}
+
+						return {
+							v: void 0
+						};
+					}
+
+					// two built in features
+					t.buildposter(t, t.controls, t.layers, t.media);
+					t.buildkeyboard(t, t.controls, t.layers, t.media);
+					t.buildoverlays(t, t.controls, t.layers, t.media);
+
+					// grab for use by features
+					t.findTracks();
+
+					// cache container to store control elements' original position
+					t.featurePosition = {};
+
+					// add user-defined features/controls
+					for (var i = 0, total = t.options.features.length; i < total; i++) {
+						var feature = t.options.features[i];
+						if (t['build' + feature]) {
+							try {
+								t['build' + feature](t, t.controls, t.layers, t.media);
+							} catch (e) {
+								// TODO: report control error
+								console.error('error building ' + feature, e);
+							}
+						}
+					}
+
+					var event = (0, _general.createEvent)('controlsready', t.container);
+					t.container.dispatchEvent(event);
+
+					// reset all layers and controls
+					t.setPlayerSize(t.width, t.height);
+					t.setControlsSize();
+
+					// controls fade
+					if (t.isVideo) {
+
+						// create callback here since it needs access to current
+						// MediaElement object
+						t.clickToPlayPauseCallback = function () {
+
+							if (t.options.clickToPlayPause) {
+								var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
+								    pressed = button.getAttribute('aria-pressed');
+
+								if (t.media.paused && pressed) {
+									t.pause();
+								} else if (t.media.paused) {
+									t.play();
+								} else {
+									t.pause();
+								}
+
+								button.setAttribute('aria-pressed', !pressed);
+							}
+						};
+
+						t.createIframeLayer();
+
+						// click to play/pause
+						t.media.addEventListener('click', t.clickToPlayPauseCallback);
+
+						if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
+
+							// for touch devices (iOS, Android)
+							// show/hide without animation on touch
+							t.node.addEventListener('touchstart', function () {
+
+								// toggle controls
+								if (t.controlsAreVisible) {
+									t.hideControls(false);
+								} else {
+									if (t.controlsEnabled) {
+										t.showControls(false);
+									}
+								}
+							});
+						} else {
+
+							// show/hide controls
+							t.container.addEventListener('mouseenter', function () {
+								if (t.controlsEnabled) {
+									if (!t.options.alwaysShowControls) {
+										t.killControlsTimer('enter');
+										t.showControls();
+										t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
+									}
+								}
+							});
+							t.container.addEventListener('mousemove', function () {
+								if (t.controlsEnabled) {
+									if (!t.controlsAreVisible) {
+										t.showControls();
+									}
+									if (!t.options.alwaysShowControls) {
+										t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
+									}
+								}
+							});
+							t.container.addEventListener('mouseleave', function () {
+								if (t.controlsEnabled) {
+									if (!t.media.paused && !t.options.alwaysShowControls) {
+										t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
+									}
+								}
+							});
+						}
+
+						if (t.options.hideVideoControlsOnLoad) {
+							t.hideControls(false);
+						}
+
+						// check for autoplay
+						if (autoplay && !t.options.alwaysShowControls) {
+							t.hideControls();
+						}
+
+						// resizer
+						if (t.options.enableAutosize) {
+							t.media.addEventListener('loadedmetadata', function (e) {
+								// if the <video height> was not set and the options.videoHeight was not set
+								// then resize to the real dimensions
+								if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && e.target !== null && !isNaN(e.target.videoHeight)) {
+									t.setPlayerSize(e.target.videoWidth, e.target.videoHeight);
+									t.setControlsSize();
+									t.media.setSize(e.target.videoWidth, e.target.videoHeight);
+								}
+							});
+						}
+					}
+
+					// EVENTS
+
+					// FOCUS: when a video starts playing, it takes focus from other players (possibly pausing them)
+					t.media.addEventListener('play', function () {
+						t.hasFocus = true;
+
+						// go through all other players
+						for (var playerIndex in _mejs2.default.players) {
+							if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
+								var p = _mejs2.default.players[playerIndex];
+
+								if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
+									p.pause();
+									p.hasFocus = false;
+								}
+							}
+						}
+					});
+
+					// ended for all
+					t.media.addEventListener('ended', function () {
+						if (t.options.autoRewind) {
+							try {
+								t.media.setCurrentTime(0);
+								// Fixing an Android stock browser bug, where "seeked" isn't fired correctly after
+								// ending the video and jumping to the beginning
+								setTimeout(function () {
+									t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading').parentNode.style.display = 'none';
+								}, 20);
+							} catch (exp) {
+								
+							}
+						}
+
+						if (typeof t.media.stop === 'function') {
+							t.media.stop();
+						} else {
+							t.media.pause();
+						}
+
+						if (t.setProgressRail) {
+							t.setProgressRail();
+						}
+						if (t.setCurrentRail) {
+							t.setCurrentRail();
+						}
+
+						if (t.options.loop) {
+							t.play();
+						} else if (!t.options.alwaysShowControls && t.controlsEnabled) {
+							t.showControls();
+						}
+					});
+
+					// resize on the first play
+					t.media.addEventListener('loadedmetadata', function () {
+
+						(0, _time.calculateTimeFormat)(t.duration, t.options, t.options.framesPerSecond || 25);
+
+						if (t.updateDuration) {
+							t.updateDuration();
+						}
+						if (t.updateCurrent) {
+							t.updateCurrent();
+						}
+
+						if (!t.isFullScreen) {
+							t.setPlayerSize(t.width, t.height);
+							t.setControlsSize();
+						}
+					});
+
+					// Only change the time format when necessary
+					var duration = null;
+					t.media.addEventListener('timeupdate', function () {
+						if (duration !== t.media.duration) {
+							duration = t.media.duration;
+							(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
+
+							// make sure to fill in and resize the controls (e.g., 00:00 => 01:13:15
+							if (t.updateDuration) {
+								t.updateDuration();
+							}
+							if (t.updateCurrent) {
+								t.updateCurrent();
+							}
+							t.setControlsSize();
+						}
+					});
+
+					t.container.addEventListener('focusout', function (e) {
+						setTimeout(function () {
+							//FF is working on supporting focusout https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+							if (e.relatedTarget) {
+								if (t.keyboardAction && !e.relatedTarget.closest('.mejs-container')) {
+									t.keyboardAction = false;
+									if (t.isVideo && !t.options.alwaysShowControls) {
+										t.hideControls(true);
+									}
+								}
+							}
+						}, 0);
+					});
+
+					// webkit has trouble doing this without a delay
+					setTimeout(function () {
+						t.setPlayerSize(t.width, t.height);
+						t.setControlsSize();
+					}, 0);
+
+					// adjust controls whenever window sizes (used to be in fullscreen only)
+					t.globalBind('resize', function () {
+
+						// don't resize for fullscreen mode
+						if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
+							t.setPlayerSize(t.width, t.height);
+						}
+
+						// always adjust controls
+						t.setControlsSize();
+					});
+
+					// Disable focus outline to improve look-and-feel for regular users
+					t.globalBind('click', function (e) {
+						if (e.target.matches('.' + t.options.classPrefix + 'container')) {
+							dom.addClass(e.target, t.options.classPrefix + 'container-keyboard-inactive');
+						} else if (e.target.closest('.' + t.options.classPrefix + 'container')) {
+							dom.addClass(e.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive');
+						}
+					});
+
+					// Enable focus outline for Accessibility purposes
+					t.globalBind('keydown', function (e) {
+						if (e.target.matches('.' + t.options.classPrefix + 'container')) {
+							dom.removeClass(e.target, t.options.classPrefix + 'container-keyboard-inactive');
+						} else if (e.target.closest('.' + t.options.classPrefix + 'container')) {
+							dom.removeClass(event.target.closest('.' + t.options.classPrefix + 'container'), t.options.classPrefix + 'container-keyboard-inactive');
+						}
+					});
+				}();
+
+				if ((typeof _ret5 === 'undefined' ? 'undefined' : _typeof(_ret5)) === "object") return _ret5.v;
+			}
+
+			// force autoplay for HTML5
+			if (autoplay && isNative) {
+				t.play();
+			}
+
+			if (t.options.success) {
+
+				if (typeof t.options.success === 'string') {
+					_window2.default[t.options.success](t.media, t.domNode, t);
+				} else {
+					t.options.success(t.media, t.domNode, t);
+				}
+			}
+		}
+
+		/**
+   *
+   * @param {Event} e
+   * @private
+   */
+
+	}, {
+		key: '_handleError',
+		value: function _handleError(e) {
+			var t = this;
+
+			if (t.controls) {
+				t.disableControls();
+			}
+
+			var play = t.layers.querySelector('.' + t.options.classPrefix + 'overlay-play');
+
+			if (play) {
+				play.style.display = 'none';
+			}
+
+			// Tell user that the file cannot be played
+			if (t.options.error) {
+				t.options.error(e);
+			}
+		}
+	}, {
+		key: 'setPlayerSize',
+		value: function setPlayerSize(width, height) {
+			var t = this;
+
+			if (!t.options.setDimensions) {
+				return false;
+			}
+
+			if (typeof width !== 'undefined') {
+				t.width = width;
+			}
+
+			if (typeof height !== 'undefined') {
+				t.height = height;
+			}
+
+			if (typeof FB !== 'undefined' && t.isVideo) {
+				FB.Event.subscribe('xfbml.ready', function () {
+					var target = t.media.firstChild;
+
+					t.width = parseFloat(target.offsetWidth);
+					t.height = parseFloat(target.offsetHeight);
+					t.setDimensions(t.width, t.height);
+					return false;
+				});
+
+				var target = t.media.firstChild;
+
+				if (target.length) {
+					t.width = target.offsetWidth;
+					t.height = target.offsetHeight;
+				}
+			}
+
+			// check stretching modes
+			switch (t.options.stretching) {
+				case 'fill':
+					// The 'fill' effect only makes sense on video; for audio we will set the dimensions
+					if (t.isVideo) {
+						t.setFillMode();
+					} else {
+						t.setDimensions(t.width, t.height);
+					}
+					break;
+				case 'responsive':
+					t.setResponsiveMode();
+					break;
+				case 'none':
+					t.setDimensions(t.width, t.height);
+					break;
+				// This is the 'auto' mode
+				default:
+					if (t.hasFluidMode() === true) {
+						t.setResponsiveMode();
+					} else {
+						t.setDimensions(t.width, t.height);
+					}
+					break;
+			}
+		}
+	}, {
+		key: 'hasFluidMode',
+		value: function hasFluidMode() {
+			var t = this;
+
+			// detect 100% mode - use currentStyle for IE since css() doesn't return percentages
+			return t.height.toString().includes('%') || t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';
+		}
+	}, {
+		key: 'setResponsiveMode',
+		value: function setResponsiveMode() {
+			var t = this,
+			    parent = function () {
+
+				var parentEl = void 0,
+				    el = t.container;
+
+				// traverse parents to find the closest visible one
+				while (el) {
+					parentEl = el.parentElement;
+					if (parentEl && dom.visible(parentEl)) {
+						return parentEl;
+					}
+					el = parentEl;
+				}
+
+				return null;
+			}(),
+			    parentStyles = getComputedStyle(parent, null),
+			    nativeWidth = function () {
+				if (t.isVideo) {
+					if (t.media.videoWidth && t.media.videoWidth > 0) {
+						return t.media.videoWidth;
+					} else if (t.node.getAttribute('width')) {
+						return t.node.getAttribute('width');
+					} else {
+						return t.options.defaultVideoWidth;
+					}
+				} else {
+					return t.options.defaultAudioWidth;
+				}
+			}(),
+			    nativeHeight = function () {
+				if (t.isVideo) {
+					if (t.media.videoHeight && t.media.videoHeight > 0) {
+						return t.media.videoHeight;
+					} else if (t.node.getAttribute('height')) {
+						return t.node.getAttribute('height');
+					} else {
+						return t.options.defaultVideoHeight;
+					}
+				} else {
+					return t.options.defaultAudioHeight;
+				}
+			}(),
+			    aspectRatio = function () {
+				var ratio = 1;
+				if (!t.isVideo) {
+					return ratio;
+				}
+
+				if (t.media.videoWidth && t.media.videoWidth > 0 && t.media.videoHeight && t.media.videoHeight > 0) {
+					ratio = t.height >= t.width ? t.media.videoWidth / t.media.videoHeight : t.media.videoHeight / t.media.videoWidth;
+				} else {
+					ratio = t.initialAspectRatio;
+				}
+
+				if (isNaN(ratio) || ratio < 0.01 || ratio > 100) {
+					ratio = 1;
+				}
+
+				return ratio;
+			}(),
+			    parentHeight = parseFloat(parentStyles.height);
+
+			var newHeight = void 0,
+			    parentWidth = parseFloat(parentStyles.width);
+
+			if (t.isVideo) {
+				// Responsive video is based on width: 100% and height: 100%
+				if (t.height === '100%') {
+					newHeight = parseInt(parentWidth * nativeHeight / nativeWidth, 10);
+				} else {
+					newHeight = t.height >= t.width ? parseInt(parentWidth / aspectRatio, 10) : parseInt(parentWidth * aspectRatio, 10);
+				}
+			} else {
+				newHeight = nativeHeight;
+			}
+
+			// If we were unable to compute newHeight, get the container height instead
+			if (isNaN(newHeight)) {
+				newHeight = parentHeight;
+			}
+
+			if (t.container.parentNode.length > 0 && t.container.parentNode.tagName.toLowerCase() === 'body') {
+				parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;
+				newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;
+			}
+
+			if (newHeight && parentWidth) {
+
+				// set outer container size
+				t.container.style.width = parentWidth + 'px';
+				t.container.style.height = newHeight + 'px';
+
+				// set native <video> or <audio> and shims
+				t.node.style.width = '100%';
+				t.node.style.height = '100%';
+
+				// if shim is ready, send the size to the embedded plugin
+				if (t.isVideo && t.media.setSize) {
+					t.media.setSize(parentWidth, newHeight);
+				}
+
+				// set the layers
+				var layerChildren = t.layers.childNodes;
+				for (var i = 0, total = layerChildren.length; i < total; i++) {
+					layerChildren[i].style.width = '100%';
+					layerChildren[i].style.height = '100%';
+				}
+			}
+		}
+	}, {
+		key: 'setFillMode',
+		value: function setFillMode() {
+			var t = this,
+			    parent = t.outerContainer;
+
+			var parentStyles = getComputedStyle(parent);
+
+			// Remove the responsive attributes in the event they are there
+			if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
+				t.node.style.height = '';
+			}
+			if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {
+				t.node.style.maxWidth = '';
+			}
+
+			if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {
+				t.node.style.maxHeight = '';
+			}
+
+			if (t.node.currentStyle) {
+				if (t.node.currentStyle.height === '100%') {
+					t.node.currentStyle.height = '';
+				}
+				if (t.node.currentStyle.maxWidth === '100%') {
+					t.node.currentStyle.maxWidth = '';
+				}
+				if (t.node.currentStyle.maxHeight === '100%') {
+					t.node.currentStyle.maxHeight = '';
+				}
+			}
+
+			if (!parseFloat(parentStyles.width)) {
+				parent.style.width = t.media.offsetWidth + 'px';
+			}
+
+			if (!parseFloat(parentStyles.height)) {
+				parent.style.height = t.media.offsetHeight + 'px';
+			}
+
+			parentStyles = getComputedStyle(parent);
+
+			var parentWidth = parseFloat(parentStyles.width),
+			    parentHeight = parseFloat(parentStyles.height);
+
+			t.setDimensions('100%', '100%');
+
+			// This prevents an issue when displaying poster
+			var poster = t.container.querySelector(t.options.classPrefix + 'poster img');
+			if (poster) {
+				poster.style.display = '';
+			}
+
+			// calculate new width and height
+			var targetElement = t.container.querySelectorAll('object, embed, iframe, video'),
+			    initHeight = t.height,
+			    initWidth = t.width,
+
+			// scale to the target width
+			scaleX1 = parentWidth,
+			    scaleY1 = initHeight * parentWidth / initWidth,
+
+			// scale to the target height
+			scaleX2 = initWidth * parentHeight / initHeight,
+			    scaleY2 = parentHeight,
+
+			// now figure out which one we should use
+			bScaleOnWidth = scaleX2 > parentWidth === false,
+			    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
+			    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
+			    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
+			    height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';
+
+			for (var i = 0, total = targetElement.length; i < total; i++) {
+				targetElement[i].style.height = height;
+				targetElement[i].style.width = width;
+				if (t.media.setSize) {
+					t.media.setSize(width, height);
+				}
+
+				targetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px';
+				targetElement[i].style.marginTop = 0;
+			}
+		}
+	}, {
+		key: 'setDimensions',
+		value: function setDimensions(width, height) {
+			var t = this;
+
+			width = (0, _general.isString)(width) && width.includes('%') ? width : parseFloat(width) + 'px';
+			height = (0, _general.isString)(height) && height.includes('%') ? height : parseFloat(height) + 'px';
+
+			t.container.style.width = width;
+			t.container.style.height = height;
+
+			var layers = t.layers.childNodes;
+			for (var i = 0, total = layers.length; i < total; i++) {
+				layers[i].style.width = width;
+				layers[i].style.height = height;
+			}
+		}
+	}, {
+		key: 'setControlsSize',
+		value: function setControlsSize() {
+			var t = this;
+
+			// skip calculation if hidden
+			if (!dom.visible(t.container) || !t.rail || !dom.visible(t.rail)) {
+				return;
+			}
+
+			var railStyles = getComputedStyle(t.rail),
+			    totalStyles = getComputedStyle(t.total),
+			    railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight),
+			    totalMargin = parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) || 0;
+
+			var siblingsWidth = 0;
+
+			var siblings = dom.siblings(t.rail, function (el) {
+				return el !== t.rail;
+			}),
+			    total = siblings.length;
+			for (var i = 0; i < total; i++) {
+				siblingsWidth += siblings[i].offsetWidth;
+			}
+
+			siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
+
+			// Substract the width of the feature siblings from time rail
+			var controlsWidth = parseFloat(t.controls.offsetWidth);
+			t.rail.style.width = (siblingsWidth > controlsWidth ? 0 : controlsWidth - siblingsWidth) + 'px';
+
+			var event = (0, _general.createEvent)('controlsresize', t.container);
+			t.container.dispatchEvent(event);
+		}
+
+		/**
+   * Add featured control element and cache its position in case features are reset
+   *
+   * @param {HTMLElement} element
+   * @param {String} key
+   */
+
+	}, {
+		key: 'addControlElement',
+		value: function addControlElement(element, key) {
+
+			var t = this;
+
+			if (t.featurePosition[key] !== undefined) {
+				var child = t.controls.childNodes[t.featurePosition[key] - 1];
+				child.parentNode.insertBefore(element, child.nextSibling);
+			} else {
+				t.controls.appendChild(element);
+				var children = t.controls.childNodes;
+				for (var i = 0, total = children.length; i < total; i++) {
+					if (element == children[i]) {
+						t.featurePosition[key] = i;
+						break;
+					}
+				}
+			}
+		}
+
+		/**
+   * Append layer to manipulate `<iframe>` elements safely.
+   *
+   * This allows the user to trigger events properly given that mouse/click don't get lost in the `<iframe>`.
+   */
+
+	}, {
+		key: 'createIframeLayer',
+		value: function createIframeLayer() {
+
+			var t = this;
+
+			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.match(/iframe/i) !== null && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
+
+				var layer = _document2.default.createElement('div'),
+				    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
+
+				layer.id = t.media.id + '-iframe-overlay';
+				layer.className = t.options.classPrefix + 'iframe-overlay';
+				layer.addEventListener('click', function (e) {
+					if (t.options.clickToPlayPause) {
+						if (t.media.paused) {
+							t.media.play();
+						} else {
+							t.media.pause();
+						}
+
+						e.preventDefault();
+						e.stopPropagation();
+					}
+				});
+
+				target.parentNode.insertBefore(layer, target);
+			}
+		}
+	}, {
+		key: 'resetSize',
+		value: function resetSize() {
+			var t = this;
+			// webkit has trouble doing this without a delay
+			setTimeout(function () {
+				t.setPlayerSize(t.width, t.height);
+				t.setControlsSize();
+			}, 50);
+		}
+	}, {
+		key: 'setPoster',
+		value: function setPoster(url) {
+			var t = this,
+			    posterDiv = t.container.querySelector('.' + t.options.classPrefix + 'poster');
+
+			var posterImg = posterDiv.querySelector('img');
+
+			if (!posterImg) {
+				posterImg = _document2.default.createElement('img');
+				posterImg.className = t.options.classPrefix + 'poster-img';
+				posterImg.width = '100%';
+				posterImg.height = '100%';
+				posterDiv.appendChild(posterImg);
+			}
+
+			posterImg.setAttribute('src', url);
+			posterDiv.style.backgroundImage = 'url("' + url + '")';
+		}
+	}, {
+		key: 'changeSkin',
+		value: function changeSkin(className) {
+			var t = this;
+
+			t.container.className = t.options.classPrefix + 'container ' + className;
+			t.setPlayerSize(t.width, t.height);
+			t.setControlsSize();
+		}
+	}, {
+		key: 'globalBind',
+		value: function globalBind(events, callback) {
+			var t = this,
+			    doc = t.node ? t.node.ownerDocument : _document2.default;
+
+			events = (0, _general.splitEvents)(events, t.id);
+			if (events.d) {
+				var eventList = events.d.split(' ');
+				for (var i = 0, total = eventList.length; i < total; i++) {
+					eventList[i].split('.').reduce(function (part, e) {
+						doc.addEventListener(e, callback, false);
+						return e;
+					}, '');
+				}
+			}
+			if (events.w) {
+				var _eventList = events.w.split(' ');
+				for (var _i = 0, _total = _eventList.length; _i < _total; _i++) {
+					_eventList[_i].split('.').reduce(function (part, e) {
+						_window2.default.addEventListener(e, callback, false);
+						return e;
+					}, '');
+				}
+			}
+		}
+	}, {
+		key: 'globalUnbind',
+		value: function globalUnbind(events, callback) {
+
+			var t = this,
+			    doc = t.node ? t.node.ownerDocument : _document2.default;
+
+			events = (0, _general.splitEvents)(events, t.id);
+			if (events.d) {
+				var eventList = events.d.split(' ');
+				for (var i = 0, total = eventList.length; i < total; i++) {
+					eventList[i].split('.').reduce(function (part, e) {
+						doc.removeEventListener(e, callback, false);
+						return e;
+					}, '');
+				}
+			}
+			if (events.w) {
+				var _eventList2 = events.d.split(' ');
+				for (var _i2 = 0, _total2 = _eventList2.length; _i2 < _total2; _i2++) {
+					_eventList2[_i2].split('.').reduce(function (part, e) {
+						_window2.default.removeEventListener(e, callback, false);
+						return e;
+					}, '');
+				}
+			}
+		}
+	}, {
+		key: 'buildposter',
+		value: function buildposter(player, controls, layers, media) {
+
+			var t = this,
+			    poster = _document2.default.createElement('div');
+
+			poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
+			layers.appendChild(poster);
+
+			var posterUrl = player.media.getAttribute('poster');
+
+			// priority goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster)
+			if (player.options.poster !== '') {
+				posterUrl = player.options.poster;
+			}
+
+			// second, try the real poster
+			if (posterUrl) {
+				t.setPoster(posterUrl);
+			} else {
+				poster.style.display = 'none';
+			}
+
+			media.addEventListener('play', function () {
+				poster.style.display = 'none';
+			});
+
+			media.addEventListener('playing', function () {
+				poster.style.display = 'none';
+			});
+
+			if (player.options.showPosterWhenEnded && player.options.autoRewind) {
+				media.addEventListener('ended', function () {
+					poster.style.display = '';
+				});
+			}
+
+			media.addEventListener('error', function () {
+				poster.style.display = 'none';
+			});
+
+			if (player.options.showPosterWhenPaused) {
+				media.addEventListener('pause', function () {
+					// To avoid displaying the poster when video ended, since it
+					// triggers a pause event as well
+					if (!media.ended) {
+						poster.style.display = '';
+					}
+				});
+			}
+		}
+	}, {
+		key: 'buildoverlays',
+		value: function buildoverlays(player, controls, layers, media) {
+
+			if (!player.isVideo) {
+				return;
+			}
+
+			var t = this,
+			    loading = _document2.default.createElement('div'),
+			    error = _document2.default.createElement('div'),
+
+			// this needs to come last so it's on top
+			bigPlay = _document2.default.createElement('div'),
+			    buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
+
+			loading.style.display = 'none'; // start out hidden
+			loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
+			loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
+			layers.appendChild(loading);
+
+			error.style.display = 'none';
+			error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
+			error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>';
+			layers.appendChild(error);
+
+			bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
+			bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0"' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
+			bigPlay.addEventListener('click', function () {
+				// Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay
+				// started and immediately stopped the video
+				if (t.options.clickToPlayPause) {
+
+					var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'),
+					    pressed = button.getAttribute('aria-pressed');
+
+					if (media.paused) {
+						media.play();
+					} else {
+						media.pause();
+					}
+
+					button.setAttribute('aria-pressed', !!pressed);
+				}
+			});
+			layers.appendChild(bigPlay);
+
+			if (t.media.rendererName !== null && (t.media.rendererName.match(/(youtube|facebook)/) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) {
+				bigPlay.style.display = 'none';
+			}
+
+			// show/hide big play button
+			media.addEventListener('play', function () {
+				bigPlay.style.display = 'none';
+				loading.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+				error.style.display = 'none';
+			});
+
+			media.addEventListener('playing', function () {
+				bigPlay.style.display = 'none';
+				loading.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+				error.style.display = 'none';
+			});
+
+			media.addEventListener('seeking', function () {
+				bigPlay.style.display = 'none';
+				loading.style.display = '';
+				if (buffer) {
+					buffer.style.display = '';
+				}
+			});
+
+			media.addEventListener('seeked', function () {
+				bigPlay.style.display = '';
+				loading.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = '';
+				}
+			});
+
+			media.addEventListener('pause', function () {
+				loading.style.display = 'none';
+				if (!_constants.IS_STOCK_ANDROID) {
+					bigPlay.style.display = '';
+				}
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+			});
+
+			media.addEventListener('waiting', function () {
+				loading.style.display = '';
+				if (buffer) {
+					buffer.style.display = '';
+				}
+			});
+
+			// show/hide loading
+			media.addEventListener('loadeddata', function () {
+				loading.style.display = '';
+				if (buffer) {
+					buffer.style.display = '';
+				}
+
+				// Firing the 'canplay' event after a timeout which isn't getting fired on some Android 4.1 devices
+				// (https://github.com/johndyer/mediaelement/issues/1305)
+				if (_constants.IS_ANDROID) {
+					media.canplayTimeout = setTimeout(function () {
+						if (_document2.default.createEvent) {
+							var evt = _document2.default.createEvent('HTMLEvents');
+							evt.initEvent('canplay', true, true);
+							return media.dispatchEvent(evt);
+						}
+					}, 300);
+				}
+			});
+			media.addEventListener('canplay', function () {
+				loading.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+				// Clear timeout inside 'loadeddata' to prevent 'canplay' from firing twice
+				clearTimeout(media.canplayTimeout);
+			});
+
+			// error handling
+			media.addEventListener('error', function (e) {
+				t._handleError(e);
+				loading.style.display = 'none';
+				bigPlay.style.display = 'none';
+				if (buffer) {
+					buffer.style.display = 'none';
+				}
+				error.style.display = 'block';
+				error.querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = e.message;
+			});
+
+			media.addEventListener('keydown', function (e) {
+				t.onkeydown(player, media, e);
+			});
+		}
+	}, {
+		key: 'buildkeyboard',
+		value: function buildkeyboard(player, controls, layers, media) {
+
+			var t = this;
+
+			t.container.addEventListener('keydown', function () {
+				t.keyboardAction = true;
+			});
+
+			// listen for key presses
+			t.globalBind('keydown', function (event) {
+				var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
+				    target = t.media.closest('.' + t.options.classPrefix + 'container');
+				t.hasFocus = !!(container && target && container.id === target.id);
+				return t.onkeydown(player, media, event);
+			});
+
+			// check if someone clicked outside a player region, then kill its focus
+			t.globalBind('click', function (event) {
+				t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
+			});
+		}
+	}, {
+		key: 'onkeydown',
+		value: function onkeydown(player, media, e) {
+
+			if (player.hasFocus && player.options.enableKeyboard) {
+				// find a matching key
+				for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
+					var keyAction = player.options.keyActions[i];
+
+					for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
+						if (e.keyCode === keyAction.keys[j]) {
+							keyAction.action(player, media, e.keyCode, e);
+							e.preventDefault();
+							e.stopPropagation();
+						}
+					}
+				}
+			}
+
+			return true;
+		}
+	}, {
+		key: 'play',
+		value: function play() {
+			var t = this;
+
+			// only load if the current time is 0 to ensure proper playing
+			if (t.media.getCurrentTime() <= 0) {
+				t.load();
+			}
+			t.media.play();
+		}
+	}, {
+		key: 'pause',
+		value: function pause() {
+			try {
+				this.media.pause();
+			} catch (e) {
 				
-				// vertical version
-				$('<div class="mejs-button mejs-volume-button mejs-mute">'+
-					'<button type="button" aria-controls="' + t.id + '" title="' + t.options.muteText + '" aria-label="' + t.options.muteText + '"></button>'+
-					'<div class="mejs-volume-slider">'+ // outer background
-						'<div class="mejs-volume-total"></div>'+ // line background
-						'<div class="mejs-volume-current"></div>'+ // current volume
-						'<div class="mejs-volume-handle"></div>'+ // handle
-					'</div>'+
-				'</div>')
-					.appendTo(controls),
-			volumeSlider = t.container.find('.mejs-volume-slider, .mejs-horizontal-volume-slider'),
-			volumeTotal = t.container.find('.mejs-volume-total, .mejs-horizontal-volume-total'),
-			volumeCurrent = t.container.find('.mejs-volume-current, .mejs-horizontal-volume-current'),
-			volumeHandle = t.container.find('.mejs-volume-handle, .mejs-horizontal-volume-handle'),
-
-			positionVolumeHandle = function(volume, secondTry) {
-
-				if (!volumeSlider.is(':visible') && typeof secondTry == 'undefined') {
-					volumeSlider.show();
-					positionVolumeHandle(volume, true);
-					volumeSlider.hide()
-					return;
+			}
+		}
+	}, {
+		key: 'load',
+		value: function load() {
+			var t = this;
+
+			if (!t.isLoaded) {
+				t.media.load();
+			}
+
+			t.isLoaded = true;
+		}
+	}, {
+		key: 'setMuted',
+		value: function setMuted(muted) {
+			this.media.setMuted(muted);
+		}
+	}, {
+		key: 'setCurrentTime',
+		value: function setCurrentTime(time) {
+			this.media.setCurrentTime(time);
+		}
+	}, {
+		key: 'getCurrentTime',
+		value: function getCurrentTime() {
+			return this.media.currentTime;
+		}
+	}, {
+		key: 'setVolume',
+		value: function setVolume(volume) {
+			this.media.setVolume(volume);
+		}
+	}, {
+		key: 'getVolume',
+		value: function getVolume() {
+			return this.media.volume;
+		}
+	}, {
+		key: 'setSrc',
+		value: function setSrc(src) {
+			var t = this,
+			    layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
+
+			if (layer) {
+				layer.remove();
+			}
+
+			t.media.setSrc(src);
+
+			t.createIframeLayer();
+		}
+	}, {
+		key: 'remove',
+		value: function remove() {
+
+			var t = this,
+			    rendererName = t.media.rendererName;
+
+			// Stop completely media playing
+			if (!t.media.paused) {
+				t.media.pause();
+			}
+
+			var src = t.media.originalNode.getAttribute('src');
+			t.media.setSrc('');
+
+			// invoke features cleanup
+			for (var featureIndex in t.options.features) {
+				var feature = t.options.features[featureIndex];
+				if (t['clean' + feature]) {
+					try {
+						t['clean' + feature](t);
+					} catch (e) {
+						// @todo: report control error
+						console.error('error cleaning ' + feature, e);
+					}
+				}
+			}
+
+			// reset dimensions
+			var nativeWidth = t.node.getAttribute('width'),
+			    nativeHeight = t.node.getAttribute('height');
+			if (nativeWidth) {
+				if (nativeWidth.match('%') === null) {
+					nativeWidth = nativeWidth + 'px';
+				}
+			} else {
+				nativeWidth = 'auto';
+			}
+			if (nativeHeight) {
+				if (nativeHeight.match('%') === null) {
+					nativeHeight = nativeHeight + 'px';
+				}
+			} else {
+				nativeHeight = 'auto';
+			}
+			t.node.style.width = nativeWidth;
+			t.node.style.height = nativeHeight;
+
+			// grab video and put it back in place
+			if (!t.isDynamic) {
+				t.node.setAttribute('controls', true);
+				t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
+
+				// Remove `autoplay` (not worth bringing it back once player is destroyed)
+				delete t.node.autoplay;
+
+				// Reintegrate file if it can be played
+				if (t.media.canPlayType((0, _media.getTypeFromFile)(src))) {
+					t.node.setAttribute('src', src);
+				}
+
+				// If <iframe>, remove overlay
+				if (rendererName.match(/iframe/i) !== null) {
+					var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
+					layer.remove();
+				}
+
+				var node = t.node.cloneNode(true);
+				t.container.parentNode.insertBefore(node, t.container);
+				t.node.remove();
+				delete t.node;
+			} else {
+				t.container.parentNode.insertBefore(t.node, t.container);
+			}
+
+			if (typeof t.media.destroy === 'function') {
+				t.media.destroy();
+			}
+
+			// Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to
+			// pause a non existent Flash API.
+			delete _mejs2.default.players[t.id];
+
+			if (_typeof(t.container) === 'object') {
+				var offscreen = t.container.parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');
+				offscreen.remove();
+				t.container.remove();
+			}
+			t.globalUnbind();
+
+			delete t.media.player;
+		}
+	}]);
+
+	return MediaElementPlayer;
+}();
+
+_window2.default.MediaElementPlayer = MediaElementPlayer;
+
+exports.default = MediaElementPlayer;
+
+// turn into plugin
+
+(function ($) {
+
+	if (typeof $ !== 'undefined') {
+		$.fn.mediaelementplayer = function (options) {
+			if (options === false) {
+				this.each(function () {
+					var player = $(this).data('mediaelementplayer');
+					if (player) {
+						player.remove();
+					}
+					$(this).removeData('mediaelementplayer');
+				});
+			} else {
+				this.each(function () {
+					$(this).data('mediaelementplayer', new MediaElementPlayer(this, options));
+				});
+			}
+			return this;
+		};
+
+		$(_document2.default).ready(function () {
+			// auto enable using JSON attribute
+			$('.' + config.classPrefix + 'player').mediaelementplayer();
+		});
+	}
+})(_mejs2.default.$);
+
+},{"19":19,"2":2,"20":20,"21":21,"22":22,"24":24,"3":3,"4":4,"5":5,"6":6}],17:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.PluginDetector = undefined;
+
+var _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; };
+
+var _window = _dereq_(3);
+
+var _window2 = _interopRequireDefault(_window);
+
+var _document = _dereq_(2);
+
+var _document2 = _interopRequireDefault(_document);
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+var _i18n = _dereq_(4);
+
+var _i18n2 = _interopRequireDefault(_i18n);
+
+var _renderer = _dereq_(7);
+
+var _general = _dereq_(21);
+
+var _constants = _dereq_(19);
+
+var _media = _dereq_(22);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/**
+ * Shim that falls back to Flash if a media type is not supported.
+ *
+ * Any format not supported natively, including, RTMP, FLV, HLS and M(PEG)-DASH (if browser does not support MSE),
+ * will play using Flash.
+ */
+
+/**
+ * Core detector, plugins are added below
+ *
+ */
+var PluginDetector = exports.PluginDetector = {
+	/**
+  * Cached version numbers
+  * @type {Array}
+  */
+	plugins: [],
+
+	/**
+  * Test a plugin version number
+  * @param {String} plugin - In this scenario 'flash' will be tested
+  * @param {Array} v - An array containing the version up to 3 numbers (major, minor, revision)
+  * @return {Boolean}
+  */
+	hasPluginVersion: function hasPluginVersion(plugin, v) {
+		var pv = PluginDetector.plugins[plugin];
+		v[1] = v[1] || 0;
+		v[2] = v[2] || 0;
+		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];
+	},
+
+	/**
+  * Detect plugin and store its version number
+  *
+  * @see PluginDetector.detectPlugin
+  * @param {String} p
+  * @param {String} pluginName
+  * @param {String} mimeType
+  * @param {String} activeX
+  * @param {Function} axDetect
+  */
+	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
+		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
+	},
+
+	/**
+  * Obtain version number from the mime-type (all but IE) or ActiveX (IE)
+  *
+  * @param {String} pluginName
+  * @param {String} mimeType
+  * @param {String} activeX
+  * @param {Function} axDetect
+  * @return {int[]}
+  */
+	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
+
+		var version = [0, 0, 0],
+		    description = void 0,
+		    ax = void 0;
+
+		// Firefox, Webkit, Opera; avoid MS Edge since `plugins` cannot be accessed
+		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
+			description = _constants.NAV.plugins[pluginName].description;
+			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
+				version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
+				for (var i = 0, total = version.length; i < total; i++) {
+					version[i] = parseInt(version[i].match(/\d+/), 10);
+				}
+			}
+			// Internet Explorer / ActiveX
+		} else if (_window2.default.ActiveXObject !== undefined) {
+			try {
+				ax = new ActiveXObject(activeX);
+				if (ax) {
+					version = axDetect(ax);
 				}
-			
-				// correct to 0-1
-				volume = Math.max(0,volume);
-				volume = Math.min(volume,1);					
+			} catch (e) {
 				
-				// ajust mute button style
-				if (volume == 0) {
-					mute.removeClass('mejs-mute').addClass('mejs-unmute');
+			}
+		}
+		return version;
+	}
+};
+
+/**
+ * Add Flash detection
+ *
+ */
+PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
+	// adapted from SWFObject
+	var version = [],
+	    d = ax.GetVariable("$version");
+
+	if (d) {
+		d = d.split(" ")[1].split(",");
+		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
+	}
+	return version;
+});
+
+var FlashMediaElementRenderer = {
+
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var flash = {};
+
+		// store main variable
+		flash.options = options;
+		flash.id = mediaElement.id + '_' + flash.options.prefix;
+		flash.mediaElement = mediaElement;
+
+		// insert data
+		flash.flashState = {};
+		flash.flashApi = null;
+		flash.flashApiStack = [];
+
+		// mediaElements for get/set
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+
+			// add to flash state that we will store
+			flash.flashState[propName] = null;
+
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+			flash['get' + capName] = function () {
+
+				if (flash.flashApi !== null) {
+
+					if (flash.flashApi['get_' + propName] !== undefined) {
+						var _ret = function () {
+							var value = flash.flashApi['get_' + propName]();
+
+							// special case for buffered to conform to HTML5's newest
+							if (propName === 'buffered') {
+								return {
+									v: {
+										start: function start() {
+											return 0;
+										},
+										end: function end() {
+											return value;
+										},
+										length: 1
+									}
+								};
+							}
+
+							return {
+								v: value
+							};
+						}();
+
+						if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
+					} else {
+						return null;
+					}
 				} else {
-					mute.removeClass('mejs-unmute').addClass('mejs-mute');
-				}				
+					return null;
+				}
+			};
 
-				// position slider 
-				if (mode == 'vertical') {
-					var 
-					
-						// height of the full size volume slider background
-						totalHeight = volumeTotal.height(),
-						
-						// top/left of full size volume slider background
-						totalPosition = volumeTotal.position(),
-						
-						// the new top position based on the current volume
-						// 70% volume on 100px height == top:30px
-						newTop = totalHeight - (totalHeight * volume);
-	
-					// handle
-					volumeHandle.css('top', Math.round(totalPosition.top + newTop - (volumeHandle.height() / 2)));
-	
-					// show the current visibility
-					volumeCurrent.height(totalHeight - newTop );
-					volumeCurrent.css('top', totalPosition.top + newTop);
+			flash['set' + capName] = function (value) {
+				if (propName === 'src') {
+					value = (0, _media.absolutizeUrl)(value);
+				}
+
+				// send value to Flash
+				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
+					flash.flashApi['set_' + propName](value);
 				} else {
-					var 
-					
-						// height of the full size volume slider background
-						totalWidth = volumeTotal.width(),
-						
-						// top/left of full size volume slider background
-						totalPosition = volumeTotal.position(),
-						
-						// the new left position based on the current volume
-						newLeft = totalWidth * volume;
-	
-					// handle
-					volumeHandle.css('left', Math.round(totalPosition.left + newLeft - (volumeHandle.width() / 2)));
-	
-					// rezize the current part of the volume bar
-					volumeCurrent.width( Math.round(newLeft) );
+					// store for after "READY" event fires
+					flash.flashApiStack.push({
+						type: 'set',
+						propName: propName,
+						value: value
+					});
 				}
-			},
-			handleVolumeMove = function(e) {
-				
-				var volume = null,
-					totalOffset = volumeTotal.offset();
-				
-				// calculate the new volume based on the moust position
-				if (mode == 'vertical') {
-				
-					var
-						railHeight = volumeTotal.height(),
-						totalTop = parseInt(volumeTotal.css('top').replace(/px/,''),10),
-						newY = e.pageY - totalOffset.top;
-						
-					volume = (railHeight - newY) / railHeight;
+			};
+		};
+
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
+
+		// add mediaElements for native methods
+		var methods = _mejs2.default.html5media.methods,
+		    assignMethods = function assignMethods(methodName) {
+
+			// run the method on the native HTMLMediaElement
+			flash[methodName] = function () {
+
+				if (flash.flashApi !== null) {
+
+					// send call up to Flash ExternalInterface API
+					if (flash.flashApi['fire_' + methodName]) {
+						try {
+							flash.flashApi['fire_' + methodName]();
+						} catch (e) {
+							
+						}
+					} else {
 						
-					// the controls just hide themselves (usually when mouse moves too far up)
-					if (totalOffset.top == 0 || totalOffset.left == 0)
-						return;
-					
+					}
 				} else {
-					var
-						railWidth = volumeTotal.width(),
-						newX = e.pageX - totalOffset.left;
-						
-					volume = newX / railWidth;
+					// store for after "READY" event fires
+					flash.flashApiStack.push({
+						type: 'call',
+						methodName: methodName
+					});
 				}
-				
-				// ensure the volume isn't outside 0-1
-				volume = Math.max(0,volume);
-				volume = Math.min(volume,1);
-				
-				// position the slider and handle			
-				positionVolumeHandle(volume);
-				
-				// set the media object (this will trigger the volumechanged event)
-				if (volume == 0) {
-					media.setMuted(true);
-				} else {
-					media.setMuted(false);
+			};
+		};
+		methods.push('stop');
+		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
+			assignMethods(methods[_i]);
+		}
+
+		// give initial events like in others renderers
+		var initEvents = ['rendererready', 'loadeddata', 'loadedmetadata', 'canplay', 'error'];
+
+		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
+			var event = (0, _general.createEvent)(initEvents[_i2], flash);
+			mediaElement.dispatchEvent(event);
+		}
+
+		// add a ready method that Flash can call to
+		_window2.default['__ready__' + flash.id] = function () {
+
+			flash.flashReady = true;
+			flash.flashApi = _document2.default.getElementById('__' + flash.id);
+
+			// do call stack
+			if (flash.flashApiStack.length) {
+				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
+
+					var stackItem = flash.flashApiStack[_i3];
+
+					if (stackItem.type === 'set') {
+						var propName = stackItem.propName,
+						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
+
+						flash['set' + capName](stackItem.value);
+					} else if (stackItem.type === 'call') {
+						flash[stackItem.methodName]();
+					}
+				}
+			}
+		};
+
+		_window2.default['__event__' + flash.id] = function (eventName, message) {
+
+			var event = (0, _general.createEvent)(eventName, flash);
+			event.message = message || '';
+
+			// send event from Flash up to the mediaElement
+			flash.mediaElement.dispatchEvent(event);
+		};
+
+		// insert Flash object
+		flash.flashWrapper = _document2.default.createElement('div');
+
+		// If the access script flag does not have any of the valid values, set to `sameDomain` by default
+		if (!['always', 'sameDomain'].includes(flash.options.shimScriptAccess)) {
+			flash.options.shimScriptAccess = 'sameDomain';
+		}
+
+		var autoplay = mediaElement.originalNode.autoplay,
+		    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess],
+		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
+		    flashHeight = isVideo ? mediaElement.originalNode.height : 1,
+		    flashWidth = isVideo ? mediaElement.originalNode.width : 1;
+
+		if (mediaElement.originalNode.getAttribute('src')) {
+			flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
+		}
+
+		if (flash.options.enablePseudoStreaming === true) {
+			flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
+			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
+		}
+
+		mediaElement.appendChild(flash.flashWrapper);
+
+		if (mediaElement.originalNode !== null) {
+			mediaElement.originalNode.style.display = 'none';
+		}
+
+		var settings = [];
+
+		if (_constants.IS_IE) {
+			var specialIEContainer = _document2.default.createElement('div');
+			flash.flashWrapper.appendChild(specialIEContainer);
+
+			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 + '"'];
+
+			if (!isVideo) {
+				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
+			}
+
+			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>';
+		} else {
+
+			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('&') + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
+
+			if (!isVideo) {
+				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
+			}
+
+			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
+		}
+
+		flash.flashNode = flash.flashWrapper.lastChild;
+
+		flash.hide = function () {
+			if (isVideo) {
+				flash.flashNode.style.position = 'absolute';
+				flash.flashNode.style.width = '1px';
+				flash.flashNode.style.height = '1px';
+				try {
+					flash.flashNode.style.clip = 'rect(0 0 0 0);';
+				} catch (e) {
+					
+				}
+			}
+		};
+		flash.show = function () {
+			if (isVideo) {
+				flash.flashNode.style.position = '';
+				flash.flashNode.style.width = '';
+				flash.flashNode.style.height = '';
+				try {
+					flash.flashNode.style.clip = '';
+				} catch (e) {
+					
 				}
-				media.setVolume(volume);			
-			},
-			mouseIsDown = false,
-			mouseIsOver = false;
+			}
+		};
+		flash.setSize = function (width, height) {
+			flash.flashNode.style.width = width + 'px';
+			flash.flashNode.style.height = height + 'px';
 
-			// SLIDER
-			
-			mute
-				.hover(function() {
-					volumeSlider.show();
-					mouseIsOver = true;
-				}, function() {
-					mouseIsOver = false;	
-						
-					if (!mouseIsDown && mode == 'vertical')	{
-						volumeSlider.hide();
-					}
-				});
-			
-			volumeSlider
-				.bind('mouseover', function() {
-					mouseIsOver = true;	
-				})
-				.bind('mousedown', function (e) {
-					handleVolumeMove(e);
-					t.globalBind('mousemove.vol', function(e) {
-						handleVolumeMove(e);
-					});
-					t.globalBind('mouseup.vol', function () {
-						mouseIsDown = false;
-						t.globalUnbind('.vol');
+			if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
+				flash.flashApi.fire_setSize(width, height);
+			}
+		};
 
-						if (!mouseIsOver && mode == 'vertical') {
-							volumeSlider.hide();
-						}
-					});
-					mouseIsDown = true;
-						
-					return false;
-				});
+		flash.destroy = function () {
+			flash.flashNode.remove();
+		};
 
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
+					flash.setSrc(mediaFiles[_i4].src);
+					break;
+				}
+			}
+		}
 
-			// MUTE button
-			mute.find('button').click(function() {
-				media.setMuted( !media.muted );
-			});
+		return flash;
+	}
+};
 
-			// listen for volume change events from other sources
-			media.addEventListener('volumechange', function(e) {
-				if (!mouseIsDown) {
-					if (media.muted) {
-						positionVolumeHandle(0);
-						mute.removeClass('mejs-mute').addClass('mejs-unmute');
-					} else {
-						positionVolumeHandle(media.volume);
-						mute.removeClass('mejs-unmute').addClass('mejs-mute');
-					}
-				}
-			}, false);
+var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
 
-			if (t.container.is(':visible')) {
-				// set initial volume
-				positionVolumeHandle(player.options.startVolume);
+if (hasFlash) {
 
-				// mutes the media and sets the volume icon muted if the initial volume is set to 0
-        if (player.options.startVolume === 0) {
-          media.setMuted(true);
-        }
+	/**
+  * Register media type based on URL structure if Flash is detected
+  *
+  */
+	_media.typeChecks.push(function (url) {
 
-				// shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements
-				if (media.pluginType === 'native') {
-					media.setVolume(player.options.startVolume);
-				}
+		url = url.toLowerCase();
+
+		if (url.startsWith('rtmp')) {
+			if (url.includes('.mp3')) {
+				return 'audio/rtmp';
+			} else {
+				return 'video/rtmp';
 			}
+		} else if (url.includes('.oga') || url.includes('.ogg')) {
+			return 'audio/ogg';
+		} else if (url.includes('.m3u8')) {
+			return 'application/x-mpegURL';
+		} else if (url.includes('.mpd')) {
+			return 'application/dash+xml';
+		} else if (url.includes('.flv')) {
+			return 'video/flv';
+		} else {
+			return null;
 		}
 	});
-	
-})(mejs.$);
 
-(function($) {
+	// VIDEO
+	var FlashMediaElementVideoRenderer = {
+		name: 'flash_video',
+
+		options: {
+			prefix: 'flash_video',
+			filename: 'mediaelement-flash-video.swf',
+			enablePseudoStreaming: false,
+			// start query parameter sent to server for pseudo-streaming
+			pseudoStreamingStartQueryParam: 'start',
+			// pseudo streaming type: use `time` for time based seeking (MP4) or `byte` for file byte position (FLV)
+			pseudoStreamingType: 'byte'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].includes(type.toLowerCase());
+		},
 
-	$.extend(mejs.MepDefaults, {
-		usePluginFullScreen: true,
-		newWindowCallback: function() { return '';},
-		fullscreenText: mejs.i18n.t('Fullscreen')
-	});
+		create: FlashMediaElementRenderer.create
 
-	$.extend(MediaElementPlayer.prototype, {
+	};
+	_renderer.renderer.add(FlashMediaElementVideoRenderer);
 
-		isFullScreen: false,
+	// HLS
+	var FlashMediaElementHlsVideoRenderer = {
+		name: 'flash_hls',
 
-		isNativeFullScreen: false,
+		options: {
+			prefix: 'flash_hls',
+			filename: 'mediaelement-flash-video-hls.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase());
+		},
 
-		isInIframe: false,
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
 
-		buildfullscreen: function(player, controls, layers, media) {
+	// M(PEG)-DASH
+	var FlashMediaElementMdashVideoRenderer = {
+		name: 'flash_dash',
 
-			if (!player.isVideo)
-				return;
+		options: {
+			prefix: 'flash_dash',
+			filename: 'mediaelement-flash-video-mdash.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['application/dash+xml'].includes(type.toLowerCase());
+		},
 
-			player.isInIframe = (window.location != window.parent.location);
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
 
-			// native events
-			if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
+	// AUDIO
+	var FlashMediaElementAudioRenderer = {
+		name: 'flash_audio',
 
-				// chrome doesn't alays fire this in an iframe
-				var func = function(e) {
-					if (player.isFullScreen) {
-						if (mejs.MediaFeatures.isFullScreen()) {
-							player.isNativeFullScreen = true;
-							// reset the controls once we are fully in full screen
-							player.setControlsSize();
-						} else {
-							player.isNativeFullScreen = false;
-							// when a user presses ESC
-							// make sure to put the player back into place
-							player.exitFullScreen();
-						}
-					}
-				};
+		options: {
+			prefix: 'flash_audio',
+			filename: 'mediaelement-flash-audio.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['audio/mp3'].includes(type.toLowerCase());
+		},
 
-				player.globalBind(mejs.MediaFeatures.fullScreenEventName, func);
-			}
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementAudioRenderer);
 
-			var t = this,
-				normalHeight = 0,
-				normalWidth = 0,
-				container = player.container,
-				fullscreenBtn =
-					$('<div class="mejs-button mejs-fullscreen-button">' +
-						'<button type="button" aria-controls="' + t.id + '" title="' + t.options.fullscreenText + '" aria-label="' + t.options.fullscreenText + '"></button>' +
-					'</div>')
-					.appendTo(controls);
-
-				if (t.media.pluginType === 'native' || (!t.options.usePluginFullScreen && !mejs.MediaFeatures.isFirefox)) {
-
-					fullscreenBtn.click(function() {
-						var isFullScreen = (mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || player.isFullScreen;
-
-						if (isFullScreen) {
-							player.exitFullScreen();
-						} else {
-							player.enterFullScreen();
-						}
-					});
+	// AUDIO - ogg
+	var FlashMediaElementAudioOggRenderer = {
+		name: 'flash_audio_ogg',
 
-				} else {
+		options: {
+			prefix: 'flash_audio_ogg',
+			filename: 'mediaelement-flash-audio-ogg.swf'
+		},
+		/**
+   * Determine if a specific element type can be played with this render
+   *
+   * @param {String} type
+   * @return {Boolean}
+   */
+		canPlayType: function canPlayType(type) {
+			return ['audio/ogg', 'audio/oga', 'audio/ogv'].includes(type.toLowerCase());
+		},
 
-					var hideTimeout = null,
-						supportsPointerEvents = (function() {
-							// TAKEN FROM MODERNIZR
-							var element = document.createElement('x'),
-								documentElement = document.documentElement,
-								getComputedStyle = window.getComputedStyle,
-								supports;
-							if(!('pointerEvents' in element.style)){
-								return false;
-							}
-							element.style.pointerEvents = 'auto';
-							element.style.pointerEvents = 'x';
-							documentElement.appendChild(element);
-							supports = getComputedStyle &&
-								getComputedStyle(element, '').pointerEvents === 'auto';
-							documentElement.removeChild(element);
-							return !!supports;
-						})();
-
-					//
-
-					if (supportsPointerEvents && !mejs.MediaFeatures.isOpera) { // opera doesn't allow this :(
-
-						// allows clicking through the fullscreen button and controls down directly to Flash
-
-						/*
-						 When a user puts his mouse over the fullscreen button, the controls are disabled
-						 So we put a div over the video and another one on iether side of the fullscreen button
-						 that caputre mouse movement
-						 and restore the controls once the mouse moves outside of the fullscreen button
-						*/
-
-						var fullscreenIsDisabled = false,
-							restoreControls = function() {
-								if (fullscreenIsDisabled) {
-									// hide the hovers
-									for (var i in hoverDivs) {
-										hoverDivs[i].hide();
-									}
+		create: FlashMediaElementRenderer.create
+	};
+	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
+}
 
-									// restore the control bar
-									fullscreenBtn.css('pointer-events', '');
-									t.controls.css('pointer-events', '');
+},{"19":19,"2":2,"21":21,"22":22,"3":3,"4":4,"6":6,"7":7}],18:[function(_dereq_,module,exports){
+'use strict';
 
-									// prevent clicks from pausing video
-									t.media.removeEventListener('click', t.clickToPlayPauseCallback);
+var _window = _dereq_(3);
 
-									// store for later
-									fullscreenIsDisabled = false;
-								}
-							},
-							hoverDivs = {},
-							hoverDivNames = ['top', 'left', 'right', 'bottom'],
-							i, len,
-							positionHoverDivs = function() {
-								var fullScreenBtnOffsetLeft = fullscreenBtn.offset().left - t.container.offset().left,
-									fullScreenBtnOffsetTop = fullscreenBtn.offset().top - t.container.offset().top,
-									fullScreenBtnWidth = fullscreenBtn.outerWidth(true),
-									fullScreenBtnHeight = fullscreenBtn.outerHeight(true),
-									containerWidth = t.container.width(),
-									containerHeight = t.container.height();
-
-								for (i in hoverDivs) {
-									hoverDivs[i].css({position: 'absolute', top: 0, left: 0}); //, backgroundColor: '#f00'});
-								}
+var _window2 = _interopRequireDefault(_window);
 
-								// over video, but not controls
-								hoverDivs['top']
-									.width( containerWidth )
-									.height( fullScreenBtnOffsetTop );
-
-								// over controls, but not the fullscreen button
-								hoverDivs['left']
-									.width( fullScreenBtnOffsetLeft )
-									.height( fullScreenBtnHeight )
-									.css({top: fullScreenBtnOffsetTop});
-
-								// after the fullscreen button
-								hoverDivs['right']
-									.width( containerWidth - fullScreenBtnOffsetLeft - fullScreenBtnWidth )
-									.height( fullScreenBtnHeight )
-									.css({top: fullScreenBtnOffsetTop,
-										 left: fullScreenBtnOffsetLeft + fullScreenBtnWidth});
-
-								// under the fullscreen button
-								hoverDivs['bottom']
-									.width( containerWidth )
-									.height( containerHeight - fullScreenBtnHeight - fullScreenBtnOffsetTop )
-									.css({top: fullScreenBtnOffsetTop + fullScreenBtnHeight});
-							};
+var _document = _dereq_(2);
 
-						t.globalBind('resize', function() {
-							positionHoverDivs();
-						});
+var _document2 = _interopRequireDefault(_document);
 
-						for (i = 0, len = hoverDivNames.length; i < len; i++) {
-							hoverDivs[hoverDivNames[i]] = $('<div class="mejs-fullscreen-hover" />').appendTo(t.container).mouseover(restoreControls).hide();
-						}
+var _mejs = _dereq_(6);
 
-						// on hover, kill the fullscreen button's HTML handling, allowing clicks down to Flash
-						fullscreenBtn.on('mouseover',function() {
+var _mejs2 = _interopRequireDefault(_mejs);
 
-							if (!t.isFullScreen) {
+var _renderer = _dereq_(7);
 
-								var buttonPos = fullscreenBtn.offset(),
-									containerPos = player.container.offset();
+var _general = _dereq_(21);
 
-								// move the button in Flash into place
-								media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, false);
+var _constants = _dereq_(19);
 
-								// allows click through
-								fullscreenBtn.css('pointer-events', 'none');
-								t.controls.css('pointer-events', 'none');
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-								// restore click-to-play
-								t.media.addEventListener('click', t.clickToPlayPauseCallback);
+/**
+ * Native HTML5 Renderer
+ *
+ * Wraps the native HTML5 <audio> or <video> tag and bubbles its properties, events, and methods up to the mediaElement.
+ */
+var HtmlMediaElement = {
+
+	name: 'html5',
+
+	options: {
+		prefix: 'html5'
+	},
+
+	/**
+  * Determine if a specific element type can be played with this render
+  *
+  * @param {String} type
+  * @return {String}
+  */
+	canPlayType: function canPlayType(type) {
+
+		var mediaElement = _document2.default.createElement('video');
+
+		// Due to an issue on Webkit, force the MP3 and MP4 on Android and consider native support for HLS;
+		// also consider URLs that might have obfuscated URLs
+		if (_constants.IS_ANDROID && type.match(/\/mp(3|4)$/gi) !== null || ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].includes(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
+			return 'yes';
+		} else if (mediaElement.canPlayType) {
+			return mediaElement.canPlayType(type).replace(/no/, '');
+		} else {
+			return '';
+		}
+	},
+	/**
+  * Create the player instance and add all native events/methods/properties as possible
+  *
+  * @param {MediaElement} mediaElement Instance of mejs.MediaElement already created
+  * @param {Object} options All the player configuration options passed through constructor
+  * @param {Object[]} mediaFiles List of sources with format: {src: url, type: x/y-z}
+  * @return {Object}
+  */
+	create: function create(mediaElement, options, mediaFiles) {
+
+		var id = mediaElement.id + '_' + options.prefix;
+
+		var node = null;
+
+		// CREATE NODE
+		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
+			node = _document2.default.createElement('audio');
+			mediaElement.appendChild(node);
+		} else {
+			node = mediaElement.originalNode;
+		}
 
-								// show the divs that will restore things
-								for (i in hoverDivs) {
-									hoverDivs[i].show();
-								}
+		node.setAttribute('id', id);
 
-								positionHoverDivs();
+		// WRAPPERS for PROPs
+		var props = _mejs2.default.html5media.properties,
+		    assignGettersSetters = function assignGettersSetters(propName) {
+			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 
-								fullscreenIsDisabled = true;
-							}
+			node['get' + capName] = function () {
+				return node[propName];
+			};
 
-						});
+			node['set' + capName] = function (value) {
+				if (!_mejs2.default.html5media.readOnlyProperties.includes(propName)) {
+					node[propName] = value;
+				}
+			};
+		};
 
-						// restore controls anytime the user enters or leaves fullscreen
-						media.addEventListener('fullscreenchange', function(e) {
-							t.isFullScreen = !t.isFullScreen;
-							// don't allow plugin click to pause video - messes with
-							// plugin's controls
-							if (t.isFullScreen) {
-								t.media.removeEventListener('click', t.clickToPlayPauseCallback);
-							} else {
-								t.media.addEventListener('click', t.clickToPlayPauseCallback);
-							}
-							restoreControls();
-						});
+		for (var i = 0, total = props.length; i < total; i++) {
+			assignGettersSetters(props[i]);
+		}
 
+		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']),
+		    assignEvents = function assignEvents(eventName) {
 
-						// the mouseout event doesn't work on the fullscren button, because we already killed the pointer-events
-						// so we use the document.mousemove event to restore controls when the mouse moves outside the fullscreen button
+			node.addEventListener(eventName, function (e) {
+				// copy event
 
-						t.globalBind('mousemove', function(e) {
+				var event = _document2.default.createEvent('HTMLEvents');
+				event.initEvent(e.type, e.bubbles, e.cancelable);
+				mediaElement.dispatchEvent(event);
+			});
+		};
 
-							// if the mouse is anywhere but the fullsceen button, then restore it all
-							if (fullscreenIsDisabled) {
+		for (var _i = 0, _total = events.length; _i < _total; _i++) {
+			assignEvents(events[_i]);
+		}
 
-								var fullscreenBtnPos = fullscreenBtn.offset();
+		// HELPER METHODS
+		node.setSize = function (width, height) {
+			node.style.width = width + 'px';
+			node.style.height = height + 'px';
+			return node;
+		};
 
+		node.hide = function () {
+			node.style.display = 'none';
 
-								if (e.pageY < fullscreenBtnPos.top || e.pageY > fullscreenBtnPos.top + fullscreenBtn.outerHeight(true) ||
-									e.pageX < fullscreenBtnPos.left || e.pageX > fullscreenBtnPos.left + fullscreenBtn.outerWidth(true)
-									) {
+			return node;
+		};
 
-									fullscreenBtn.css('pointer-events', '');
-									t.controls.css('pointer-events', '');
+		node.show = function () {
+			node.style.display = '';
 
-									fullscreenIsDisabled = false;
-								}
-							}
-						});
+			return node;
+		};
 
+		if (mediaFiles && mediaFiles.length > 0) {
+			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
+				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
+					node.setAttribute('src', mediaFiles[_i2].src);
+					break;
+				}
+			}
+		}
 
+		var event = (0, _general.createEvent)('rendererready', node);
+		mediaElement.dispatchEvent(event);
 
-					} else {
+		return node;
+	}
+};
 
-						// the hover state will show the fullscreen button in Flash to hover up and click
+_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
 
-						fullscreenBtn
-							.on('mouseover', function() {
+_renderer.renderer.add(HtmlMediaElement);
 
-								if (hideTimeout !== null) {
-									clearTimeout(hideTimeout);
-									delete hideTimeout;
-								}
+},{"19":19,"2":2,"21":21,"3":3,"6":6,"7":7}],19:[function(_dereq_,module,exports){
+'use strict';
 
-								var buttonPos = fullscreenBtn.offset(),
-									containerPos = player.container.offset();
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.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_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_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
 
-								media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, true);
+var _window = _dereq_(3);
 
-							})
-							.on('mouseout', function() {
+var _window2 = _interopRequireDefault(_window);
 
-								if (hideTimeout !== null) {
-									clearTimeout(hideTimeout);
-									delete hideTimeout;
-								}
+var _document = _dereq_(2);
 
-								hideTimeout = setTimeout(function() {
-									media.hideFullscreenButton();
-								}, 1500);
+var _document2 = _interopRequireDefault(_document);
 
+var _mejs = _dereq_(6);
 
-							});
-					}
-				}
+var _mejs2 = _interopRequireDefault(_mejs);
 
-			player.fullscreenBtn = fullscreenBtn;
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-			t.globalBind('keydown',function (e) {
-				if (((mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || t.isFullScreen) && e.keyCode == 27) {
-					player.exitFullScreen();
-				}
-			});
+var NAV = exports.NAV = _window2.default.navigator;
+var UA = exports.UA = NAV.userAgent.toLowerCase();
 
-		},
+var IS_IPAD = exports.IS_IPAD = UA.match(/ipad/i) !== null;
+var IS_IPHONE = exports.IS_IPHONE = UA.match(/iphone/i) !== null;
+var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD;
+var IS_ANDROID = exports.IS_ANDROID = UA.match(/android/i) !== null;
+var IS_IE = exports.IS_IE = NAV.appName.toLowerCase().includes('microsoft') || NAV.appName.toLowerCase().match(/trident/gi) !== null;
+var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
+var IS_CHROME = exports.IS_CHROME = UA.match(/chrome/gi) !== null;
+var IS_FIREFOX = exports.IS_FIREFOX = UA.match(/firefox/gi) !== null;
+var IS_SAFARI = exports.IS_SAFARI = UA.match(/safari/gi) !== null && !IS_CHROME;
+var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = UA.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi) !== null;
 
-		cleanfullscreen: function(player) {
-			player.exitFullScreen();
-		},
+var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
+var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () {
+	var element = _document2.default.createElement('x'),
+	    documentElement = _document2.default.documentElement,
+	    getComputedStyle = _window2.default.getComputedStyle;
 
-        containerSizeTimeout: null,
+	if (!('pointerEvents' in element.style)) {
+		return false;
+	}
 
-		enterFullScreen: function() {
+	element.style.pointerEvents = 'auto';
+	element.style.pointerEvents = 'x';
+	documentElement.appendChild(element);
+	var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
+	element.remove();
+	return !!supports;
+}();
 
-			var t = this;
+// for IE
+var html5Elements = ['source', 'track', 'audio', 'video'];
+var video = void 0;
 
-			// firefox+flash can't adjust plugin sizes without resetting :(
-			if (t.media.pluginType !== 'native' && (mejs.MediaFeatures.isFirefox || t.options.usePluginFullScreen)) {
-				//t.media.setFullscreen(true);
-				//player.isFullScreen = true;
-				return;
-			}
+for (var i = 0, total = html5Elements.length; i < total; i++) {
+	video = _document2.default.createElement(html5Elements[i]);
+}
+
+// Test if browsers support HLS natively (right now Safari, Android's Chrome and Stock browsers, and MS Edge)
+var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && UA.match(/edge/gi) !== null;
 
-			// set it to not show scroll bars so 100% will work
-            $(document.documentElement).addClass('mejs-fullscreen');
+// Detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails)
 
-			// store sizing
-			normalHeight = t.container.height();
-			normalWidth = t.container.width();
+// iOS
+var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
 
-			// attempt to do true fullscreen (Safari 5.1 and Firefox Nightly only for now)
-			if (t.media.pluginType === 'native') {
-				if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
+// W3C
+var hasNativeFullscreen = video.requestFullscreen !== undefined;
 
-					mejs.MediaFeatures.requestFullScreen(t.container[0]);
-					//return;
+// OS X 10.5 can't do this even if it says it can :(
+if (hasiOSFullScreen && UA.match(/mac os x 10_5/i)) {
+	hasNativeFullscreen = false;
+	hasiOSFullScreen = false;
+}
 
-					if (t.isInIframe) {
-						// sometimes exiting from fullscreen doesn't work
-						// notably in Chrome <iframe>. Fixed in version 17
-						setTimeout(function checkFullscreen() {
+// webkit/firefox/IE11+
+var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
+var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
+var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
+
+var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
+var nativeFullScreenEnabled = hasTrueNativeFullScreen;
+var fullScreenEventName = '';
+var isFullScreen = void 0,
+    requestFullScreen = void 0,
+    cancelFullScreen = void 0;
+
+// Enabled?
+if (hasMozNativeFullScreen) {
+	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
+} else if (hasMsNativeFullScreen) {
+	nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
+}
 
-							if (t.isNativeFullScreen) {
-								var zoomMultiplier = window["devicePixelRatio"] || 1;
-								// Use a percent error margin since devicePixelRatio is a float and not exact.
-								var percentErrorMargin = 0.002; // 0.2%
-								var windowWidth = zoomMultiplier * $(window).width();
-								var screenWidth = screen.width;
-								var absDiff = Math.abs(screenWidth - windowWidth);
-								var marginError = screenWidth * percentErrorMargin;
+if (IS_CHROME) {
+	hasiOSFullScreen = false;
+}
 
-								// check if the video is suddenly not really fullscreen
-								if (absDiff > marginError) {
-									// manually exit
-									t.exitFullScreen();
-								} else {
-									// test again
-									setTimeout(checkFullscreen, 500);
-								}
-							}
+if (hasTrueNativeFullScreen) {
 
+	if (hasWebkitNativeFullScreen) {
+		fullScreenEventName = 'webkitfullscreenchange';
+	} else if (hasMozNativeFullScreen) {
+		fullScreenEventName = 'mozfullscreenchange';
+	} else if (hasMsNativeFullScreen) {
+		fullScreenEventName = 'MSFullscreenChange';
+	}
 
-						}, 500);
-					}
+	exports.isFullScreen = isFullScreen = function isFullScreen() {
+		if (hasMozNativeFullScreen) {
+			return _document2.default.mozFullScreen;
+		} else if (hasWebkitNativeFullScreen) {
+			return _document2.default.webkitIsFullScreen;
+		} else if (hasMsNativeFullScreen) {
+			return _document2.default.msFullscreenElement !== null;
+		}
+	};
 
-				} else if (mejs.MediaFeatures.hasSemiNativeFullScreen) {
-					t.media.webkitEnterFullscreen();
-					return;
-				}
-			}
+	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
 
-			// check for iframe launch
-			if (t.isInIframe) {
-				var url = t.options.newWindowCallback(this);
+		if (hasWebkitNativeFullScreen) {
+			el.webkitRequestFullScreen();
+		} else if (hasMozNativeFullScreen) {
+			el.mozRequestFullScreen();
+		} else if (hasMsNativeFullScreen) {
+			el.msRequestFullscreen();
+		}
+	};
 
+	exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
+		if (hasWebkitNativeFullScreen) {
+			_document2.default.webkitCancelFullScreen();
+		} else if (hasMozNativeFullScreen) {
+			_document2.default.mozCancelFullScreen();
+		} else if (hasMsNativeFullScreen) {
+			_document2.default.msExitFullscreen();
+		}
+	};
+}
 
-				if (url !== '') {
+var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
+var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
+var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
+var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
+var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
+var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
+var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
+var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
+
+exports.isFullScreen = isFullScreen;
+exports.requestFullScreen = requestFullScreen;
+exports.cancelFullScreen = cancelFullScreen;
+
+
+_mejs2.default.Features = _mejs2.default.Features || {};
+_mejs2.default.Features.isiPad = IS_IPAD;
+_mejs2.default.Features.isiPhone = IS_IPHONE;
+_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
+_mejs2.default.Features.isAndroid = IS_ANDROID;
+_mejs2.default.Features.isIE = IS_IE;
+_mejs2.default.Features.isEdge = IS_EDGE;
+_mejs2.default.Features.isChrome = IS_CHROME;
+_mejs2.default.Features.isFirefox = IS_FIREFOX;
+_mejs2.default.Features.isSafari = IS_SAFARI;
+_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
+_mejs2.default.Features.hasMSE = HAS_MSE;
+_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
+
+_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
+_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
+_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
+_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
+_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
+_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
+_mejs2.default.Features.isFullScreen = isFullScreen;
+_mejs2.default.Features.requestFullScreen = requestFullScreen;
+_mejs2.default.Features.cancelFullScreen = cancelFullScreen;
+
+},{"2":2,"3":3,"6":6}],20:[function(_dereq_,module,exports){
+'use strict';
 
-					// launch immediately
-					if (!mejs.MediaFeatures.hasTrueNativeFullScreen) {
-						t.pause();
-						window.open(url, t.id, 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',resizable=yes,scrollbars=no,status=no,toolbar=no');
-						return;
-					} else {
-						setTimeout(function() {
-							if (!t.isNativeFullScreen) {
-								t.pause();
-								window.open(url, t.id, 'top=0,left=0,width=' + screen.availWidth + ',height=' + screen.availHeight + ',resizable=yes,scrollbars=no,status=no,toolbar=no');
-							}
-						}, 250);
-					}
-				}
+/**
+ * Most of the mtehods have been borrowed/adapted from https://plainjs.com/javascript,
+ * except fadeIn/fadeOut (from https://github.com/DimitriMikadze/vanilla-helpers/blob/master/js/vanillaHelpers.js)
+ */
 
-			}
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.removeClass = exports.addClass = exports.hasClass = undefined;
+exports.offset = offset;
+exports.toggleClass = toggleClass;
+exports.fadeOut = fadeOut;
+exports.fadeIn = fadeIn;
+exports.siblings = siblings;
+exports.visible = visible;
+exports.ajax = ajax;
 
-			// full window code
+var _window = _dereq_(3);
 
+var _window2 = _interopRequireDefault(_window);
 
+var _document = _dereq_(2);
 
-			// make full size
-			t.container
-				.addClass('mejs-container-fullscreen')
-				.width('100%')
-				.height('100%');
-				//.css({position: 'fixed', left: 0, top: 0, right: 0, bottom: 0, overflow: 'hidden', width: '100%', height: '100%', 'z-index': 1000});
+var _document2 = _interopRequireDefault(_document);
 
-			// Only needed for safari 5.1 native full screen, can cause display issues elsewhere
-			// Actually, it seems to be needed for IE8, too
-			//if (mejs.MediaFeatures.hasTrueNativeFullScreen) {
-				t.containerSizeTimeout = setTimeout(function() {
-					t.container.css({width: '100%', height: '100%'});
-					t.setControlsSize();
-				}, 500);
-			//}
+var _mejs = _dereq_(6);
 
-			if (t.media.pluginType === 'native') {
-				t.$media
-					.width('100%')
-					.height('100%');
-			} else {
-				t.container.find('.mejs-shim')
-					.width('100%')
-					.height('100%');
+var _mejs2 = _interopRequireDefault(_mejs);
 
-				//if (!mejs.MediaFeatures.hasTrueNativeFullScreen) {
-					t.media.setVideoSize($(window).width(),$(window).height());
-				//}
-			}
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-			t.layers.children('div')
-				.width('100%')
-				.height('100%');
+function offset(el) {
+	var rect = el.getBoundingClientRect(),
+	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
+	    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
+	return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
+}
 
-			if (t.fullscreenBtn) {
-				t.fullscreenBtn
-					.removeClass('mejs-fullscreen')
-					.addClass('mejs-unfullscreen');
-			}
+var hasClassMethod = void 0,
+    addClassMethod = void 0,
+    removeClassMethod = void 0;
 
-			t.setControlsSize();
-			t.isFullScreen = true;
+if ('classList' in _document2.default.documentElement) {
+	hasClassMethod = function hasClassMethod(el, className) {
+		return el.classList !== undefined && el.classList.contains(className);
+	};
+	addClassMethod = function addClassMethod(el, className) {
+		return el.classList.add(className);
+	};
+	removeClassMethod = function removeClassMethod(el, className) {
+		return el.classList.remove(className);
+	};
+} else {
+	hasClassMethod = function hasClassMethod(el, className) {
+		return new RegExp('\\b' + className + '\\b').test(el.className);
+	};
+	addClassMethod = function addClassMethod(el, className) {
+		if (!hasClass(el, className)) {
+			el.className += ' ' + className;
+		}
+	};
+	removeClassMethod = function removeClassMethod(el, className) {
+		el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
+	};
+}
 
-			t.container.find('.mejs-captions-text').css('font-size', screen.width / t.width * 1.00 * 100 + '%');
-			t.container.find('.mejs-captions-position').css('bottom', '45px');
-		},
+var hasClass = exports.hasClass = hasClassMethod;
+var addClass = exports.addClass = addClassMethod;
+var removeClass = exports.removeClass = removeClassMethod;
 
-		exitFullScreen: function() {
+function toggleClass(el, className) {
+	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
+}
 
-			var t = this;
+// fade an element from the current state to full opacity in "duration" ms
+function fadeOut(el) {
+	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
+	var callback = arguments[2];
 
-            // Prevent container from attempting to stretch a second time
-            clearTimeout(t.containerSizeTimeout);
+	if (!el.style.opacity) {
+		el.style.opacity = 1;
+	}
 
-			// firefox can't adjust plugins
-			if (t.media.pluginType !== 'native' && mejs.MediaFeatures.isFirefox) {
-				t.media.setFullscreen(false);
-				//player.isFullScreen = false;
-				return;
+	var start = null;
+	_window2.default.requestAnimationFrame(function animate(timestamp) {
+		start = start || timestamp;
+		var progress = timestamp - start;
+		el.style.opacity = parseFloat(1 - progress / duration, 2);
+		if (progress > duration) {
+			if (callback && typeof callback === 'function') {
+				callback();
 			}
+		} else {
+			_window2.default.requestAnimationFrame(animate);
+		}
+	});
+}
+
+// fade out an element from the current state to full transparency in "duration" ms
+// display is the display style the element is assigned after the animation is done
+function fadeIn(el) {
+	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
+	var callback = arguments[2];
+
+	if (!el.style.opacity) {
+		el.style.opacity = 0;
+	}
 
-			// come outo of native fullscreen
-			if (mejs.MediaFeatures.hasTrueNativeFullScreen && (mejs.MediaFeatures.isFullScreen() || t.isFullScreen)) {
-				mejs.MediaFeatures.cancelFullScreen();
+	var start = null;
+	_window2.default.requestAnimationFrame(function animate(timestamp) {
+		start = start || timestamp;
+		var progress = timestamp - start;
+		el.style.opacity = parseFloat(progress / duration, 2);
+		if (progress > duration) {
+			if (callback && typeof callback === 'function') {
+				callback();
 			}
+		} else {
+			_window2.default.requestAnimationFrame(animate);
+		}
+	});
+}
+
+function siblings(el, filter) {
+	var siblings = [];
+	el = el.parentNode.firstChild;
+	do {
+		if (!filter || filter(el)) {
+			siblings.push(el);
+		}
+	} while (el = el.nextSibling);
+	return siblings;
+}
 
-			// restore scroll bars to document
-            $(document.documentElement).removeClass('mejs-fullscreen');
+function visible(elem) {
+	return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
+}
 
-			t.container
-				.removeClass('mejs-container-fullscreen')
-				.width(normalWidth)
-				.height(normalHeight);
-				//.css({position: '', left: '', top: '', right: '', bottom: '', overflow: 'inherit', width: normalWidth + 'px', height: normalHeight + 'px', 'z-index': 1});
+function ajax(url, dataType, success, error) {
+	var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
+
+	var type = 'application/x-www-form-urlencoded; charset=UTF-8',
+	    completed = false,
+	    accept = '*/'.concat('*');
+
+	switch (dataType) {
+		case 'text':
+			type = 'text/plain';
+			break;
+		case 'json':
+			type = 'application/json, text/javascript';
+			break;
+		case 'html':
+			type = 'text/html';
+			break;
+		case 'xml':
+			type = 'application/xml, text/xml';
+			break;
+	}
 
-			if (t.media.pluginType === 'native') {
-				t.$media
-					.width(normalWidth)
-					.height(normalHeight);
-			} else {
-				t.container.find('.mejs-shim')
-					.width(normalWidth)
-					.height(normalHeight);
+	if (!type.includes('application/x-www-form-urlencoded')) {
+		accept = type + ', */*; q=0.01';
+	}
 
-				t.media.setVideoSize(normalWidth, normalHeight);
+	if (xhr) {
+		xhr.open('GET', url, true);
+		xhr.setRequestHeader('Accept', accept);
+		xhr.onreadystatechange = function () {
+
+			// Ignore repeat invocations
+			if (completed) {
+				return;
 			}
 
-			t.layers.children('div')
-				.width(normalWidth)
-				.height(normalHeight);
+			if (xhr.readyState === 4) {
+				if (xhr.status === 200) {
 
-			t.fullscreenBtn
-				.removeClass('mejs-unfullscreen')
-				.addClass('mejs-fullscreen');
+					completed = true;
 
-			t.setControlsSize();
-			t.isFullScreen = false;
+					var data = void 0;
 
-			t.container.find('.mejs-captions-text').css('font-size','');
-			t.container.find('.mejs-captions-position').css('bottom', '');
-		}
-	});
+					switch (dataType) {
+						case 'json':
+							data = JSON.parse(xhr.responseText);
+							break;
+						case 'xml':
+							data = xhr.responseXML;
+							break;
+						default:
+							data = xhr.responseText;
+							break;
+					}
 
-})(mejs.$);
+					success(data);
+				} else if (typeof error === 'function') {
+					error(xhr.status);
+				}
+			}
+		};
 
-(function($) {
+		xhr.send();
+	}
+}
 
-	// Speed
-	$.extend(mejs.MepDefaults, {
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.offset = offset;
+_mejs2.default.Utils.hasClass = hasClass;
+_mejs2.default.Utils.addClass = addClass;
+_mejs2.default.Utils.removeClass = removeClass;
+_mejs2.default.Utils.toggleClass = toggleClass;
+_mejs2.default.Utils.fadeIn = fadeIn;
+_mejs2.default.Utils.fadeOut = fadeOut;
+_mejs2.default.Utils.siblings = siblings;
+_mejs2.default.Utils.visible = visible;
+_mejs2.default.Utils.ajax = ajax;
+
+},{"2":2,"3":3,"6":6}],21:[function(_dereq_,module,exports){
+'use strict';
+
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.escapeHTML = escapeHTML;
+exports.debounce = debounce;
+exports.isObjectEmpty = isObjectEmpty;
+exports.splitEvents = splitEvents;
+exports.createEvent = createEvent;
+exports.isNodeAfter = isNodeAfter;
+exports.isString = isString;
+
+var _mejs = _dereq_(6);
+
+var _mejs2 = _interopRequireDefault(_mejs);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-		speeds: ['1.50', '1.25', '1.00', '0.75'],
+/**
+ *
+ * @param {String} input
+ * @return {string}
+ */
+function escapeHTML(input) {
 
-		defaultSpeed: '1.00'
+	if (typeof input !== 'string') {
+		throw new Error('Argument passed must be a string');
+	}
 
-	});
+	var map = {
+		'&': '&amp;',
+		'<': '&lt;',
+		'>': '&gt;',
+		'"': '&quot;'
+	};
 
-	$.extend(MediaElementPlayer.prototype, {
+	return input.replace(/[&<>"]/g, function (c) {
+		return map[c];
+	});
+}
 
-		buildspeed: function(player, controls, layers, media) {
-			var t = this;
+// taken from underscore
+function debounce(func, wait) {
+	var _this = this,
+	    _arguments = arguments;
 
-			if (t.media.pluginType == 'native') {
-				var s = '<div class="mejs-button mejs-speed-button"><button type="button">'+t.options.defaultSpeed+'x</button><div class="mejs-speed-selector"><ul>';
-				var i, ss;
+	var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
 
-				if ($.inArray(t.options.defaultSpeed, t.options.speeds) === -1) {
-					t.options.speeds.push(t.options.defaultSpeed);
-				}
 
-				t.options.speeds.sort(function(a, b) {
-					return parseFloat(b) - parseFloat(a);
-				});
+	if (typeof func !== 'function') {
+		throw new Error('First argument must be a function');
+	}
 
-				for (i = 0; i < t.options.speeds.length; i++) {
-					s += '<li><input type="radio" name="speed" value="' + t.options.speeds[i] + '" id="' + t.options.speeds[i] + '" ';
-					if (t.options.speeds[i] == t.options.defaultSpeed) {
-						s += 'checked=true ';
-						s += '/><label for="' + t.options.speeds[i] + '" class="mejs-speed-selected">'+ t.options.speeds[i] + 'x</label></li>';
-					} else {
-						s += '/><label for="' + t.options.speeds[i] + '">'+ t.options.speeds[i] + 'x</label></li>';
-					}
-				}
-				s += '</ul></div></div>';
+	if (typeof wait !== 'number') {
+		throw new Error('Second argument must be a numeric value');
+	}
 
-				player.speedButton = $(s).appendTo(controls);
+	var timeout = void 0;
+	return function () {
+		var context = _this,
+		    args = _arguments;
+		var later = function later() {
+			timeout = null;
+			if (!immediate) {
+				func.apply(context, args);
+			}
+		};
+		var callNow = immediate && !timeout;
+		clearTimeout(timeout);
+		timeout = setTimeout(later, wait);
 
-				player.playbackspeed = t.options.defaultSpeed;
+		if (callNow) {
+			func.apply(context, args);
+		}
+	};
+}
 
-				player.speedButton
-				.on('click', 'input[type=radio]', function() {
-					player.playbackspeed = $(this).attr('value');
-					media.playbackRate = parseFloat(player.playbackspeed);
-					player.speedButton.find('button').text(player.playbackspeed + 'x');
-					player.speedButton.find('.mejs-speed-selected').removeClass('mejs-speed-selected');
-					player.speedButton.find('input[type=radio]:checked').next().addClass('mejs-speed-selected');
-				});
+/**
+ * Determine if an object contains any elements
+ *
+ * @see http://stackoverflow.com/questions/679915/how-do-i-test-for-an-empty-javascript-object
+ * @param {Object} instance
+ * @return {Boolean}
+ */
+function isObjectEmpty(instance) {
+	return Object.getOwnPropertyNames(instance).length <= 0;
+}
 
-				ss = player.speedButton.find('.mejs-speed-selector');
-				ss.height(this.speedButton.find('.mejs-speed-selector ul').outerHeight(true) + player.speedButton.find('.mejs-speed-translations').outerHeight(true));
-				ss.css('top', (-1 * ss.height()) + 'px');
-			}
+/**
+ * Group a string of events into `document` (d) and `window` (w) events
+ *
+ * @param {String} events  List of space separated events
+ * @param {String} id      Namespace appended to events
+ * @return {{d: Array, w: Array}}
+ */
+function splitEvents(events, id) {
+	// Global events
+	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
+	// add player ID as an event namespace so it's easier to unbind them all later
+	var ret = { d: [], w: [] };
+	(events || '').split(' ').forEach(function (v) {
+		var eventName = '' + v + (id ? '.' + id : '');
+
+		if (eventName.startsWith('.')) {
+			ret.d.push(eventName);
+			ret.w.push(eventName);
+		} else {
+			ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
 		}
 	});
 
-})(mejs.$);
-
-(function($) {
+	ret.d = ret.d.join(' ');
+	ret.w = ret.w.join(' ');
+	return ret;
+}
 
-	// add extra default options
-	$.extend(mejs.MepDefaults, {
-		// this will automatically turn on a <track>
-		startLanguage: '',
+/**
+ *
+ * @param {string} eventName
+ * @param {*} target
+ * @return {Event|Object}
+ */
+function createEvent(eventName, target) {
 
-		tracksText: mejs.i18n.t('Captions/Subtitles'),
+	if (typeof eventName !== 'string') {
+		throw new Error('Event name must be a string');
+	}
 
-		// option to remove the [cc] button when no <track kind="subtitles"> are present
-		hideCaptionsButtonWhenEmpty: true,
+	var eventFrags = eventName.match(/[a-z]+\.([a-z]+)/),
+	    detail = {
+		target: target
+	};
 
-		// If true and we only have one track, change captions to popup
-		toggleCaptionsButtonWhenOnlyOne: false,
+	if (eventFrags !== null) {
+		eventName = eventFrags[0];
+		detail.namespace = eventFrags[1];
+	}
 
-		// #id or .class
-		slidesSelector: ''
+	return new window.CustomEvent(eventName, {
+		detail: detail
 	});
+}
 
-	$.extend(MediaElementPlayer.prototype, {
+/**
+ * Returns true if targetNode appears after sourceNode in the dom.
+ * @param {HTMLElement} sourceNode - the source node for comparison
+ * @param {HTMLElement} targetNode - the node to compare against sourceNode
+ */
+function isNodeAfter(sourceNode, targetNode) {
 
-		hasChapters: false,
+	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2 // 2 : Node.DOCUMENT_POSITION_PRECEDING
+	);
+}
 
-		buildtracks: function(player, controls, layers, media) {
-			if (player.tracks.length === 0)
-				return;
+/**
+ * Determines if a value is a string
+ *
+ * @param {*} value to check
+ * @returns {Boolean} True if a value is a string
+ */
+function isString(value) {
+	return typeof value === 'string';
+}
 
-			var t = this,
-				i,
-				options = '';
-
-			if (t.domNode.textTracks) { // if browser will do native captions, prefer mejs captions, loop through tracks and hide
-				for (i = t.domNode.textTracks.length - 1; i >= 0; i--) {
-					t.domNode.textTracks[i].mode = "hidden";
-				}
-			}
-			player.chapters =
-					$('<div class="mejs-chapters mejs-layer"></div>')
-						.prependTo(layers).hide();
-			player.captions =
-					$('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover"><span class="mejs-captions-text"></span></div></div>')
-						.prependTo(layers).hide();
-			player.captionsText = player.captions.find('.mejs-captions-text');
-			player.captionsButton =
-					$('<div class="mejs-button mejs-captions-button">'+
-						'<button type="button" aria-controls="' + t.id + '" title="' + t.options.tracksText + '" aria-label="' + t.options.tracksText + '"></button>'+
-						'<div class="mejs-captions-selector">'+
-							'<ul>'+
-								'<li>'+
-									'<input type="radio" name="' + player.id + '_captions" id="' + player.id + '_captions_none" value="none" checked="checked" />' +
-									'<label for="' + player.id + '_captions_none">' + mejs.i18n.t('None') +'</label>'+
-								'</li>'	+
-							'</ul>'+
-						'</div>'+
-					'</div>')
-						.appendTo(controls);
-
-
-			var subtitleCount = 0;
-			for (i=0; i<player.tracks.length; i++) {
-				if (player.tracks[i].kind == 'subtitles') {
-					subtitleCount++;
-				}
-			}
-
-			// if only one language then just make the button a toggle
-			if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount == 1){
-				// click
-				player.captionsButton.on('click',function() {
-					if (player.selectedTrack === null) {
-						lang = player.tracks[0].srclang;
-					} else {
-						lang = 'none';
-					}
-					player.setTrack(lang);
-				});
-			} else {
-				// hover or keyboard focus
-				player.captionsButton.on( 'mouseenter focusin', function() {
-					$(this).find('.mejs-captions-selector').css('visibility','visible');
-				})
-
-				// handle clicks to the language radio buttons
-				.on('click','input[type=radio]',function() {
-					lang = this.value;
-					player.setTrack(lang);
-				});
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.escapeHTML = escapeHTML;
+_mejs2.default.Utils.debounce = debounce;
+_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
+_mejs2.default.Utils.splitEvents = splitEvents;
+_mejs2.default.Utils.createEvent = createEvent;
+_mejs2.default.Utils.isNodeAfter = isNodeAfter;
+_mejs2.default.Utils.isString = isString;
 
-				player.captionsButton.on( 'mouseleave focusout', function() {
-					$(this).find(".mejs-captions-selector").css("visibility","hidden");
-				});
+},{"6":6}],22:[function(_dereq_,module,exports){
+'use strict';
 
-			}
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.typeChecks = undefined;
+exports.absolutizeUrl = absolutizeUrl;
+exports.formatType = formatType;
+exports.getMimeFromType = getMimeFromType;
+exports.getTypeFromFile = getTypeFromFile;
+exports.getExtension = getExtension;
+exports.normalizeExtension = normalizeExtension;
 
-			if (!player.options.alwaysShowControls) {
-				// move with controls
-				player.container
-					.bind('controlsshown', function () {
-						// push captions above controls
-						player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover');
+var _mejs = _dereq_(6);
 
-					})
-					.bind('controlshidden', function () {
-						if (!media.paused) {
-							// move back to normal place
-							player.container.find('.mejs-captions-position').removeClass('mejs-captions-position-hover');
-						}
-					});
-			} else {
-				player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover');
-			}
+var _mejs2 = _interopRequireDefault(_mejs);
 
-			player.trackToLoad = -1;
-			player.selectedTrack = null;
-			player.isLoadingTrack = false;
+var _general = _dereq_(21);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var typeChecks = exports.typeChecks = [];
+
+/**
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function absolutizeUrl(url) {
+
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-			// add to list
-			for (i=0; i<player.tracks.length; i++) {
-				if (player.tracks[i].kind == 'subtitles') {
-					player.addTrackButton(player.tracks[i].srclang, player.tracks[i].label);
-				}
-			}
+	var el = document.createElement('div');
+	el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
+	return el.firstChild.href;
+}
 
-			// start loading tracks
-			player.loadNextTrack();
+/**
+ * Get the format of a specific media, based on URL and additionally its mime type
+ *
+ * @param {String} url
+ * @param {String} type
+ * @return {String}
+ */
+function formatType(url) {
+	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
 
-			media.addEventListener('timeupdate',function(e) {
-				player.displayCaptions();
-			}, false);
+	return url && !type ? getTypeFromFile(url) : getMimeFromType(type);
+}
 
-			if (player.options.slidesSelector !== '') {
-				player.slidesContainer = $(player.options.slidesSelector);
+/**
+ * Return the mime part of the type in case the attribute contains the codec
+ * (`video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4`)
+ *
+ * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element
+ * @param {String} type
+ * @return {String}
+ */
+function getMimeFromType(type) {
 
-				media.addEventListener('timeupdate',function(e) {
-					player.displaySlides();
-				}, false);
+	if (typeof type !== 'string') {
+		throw new Error('`type` argument must be a string');
+	}
 
-			}
+	return type && ~type.indexOf(';') ? type.substr(0, type.indexOf(';')) : type;
+}
 
-			media.addEventListener('loadedmetadata', function(e) {
-				player.displayChapters();
-			}, false);
+/**
+ * Get the type of media based on URL structure
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function getTypeFromFile(url) {
 
-			player.container.hover(
-				function () {
-					// chapters
-					if (player.hasChapters) {
-						player.chapters.css('visibility','visible');
-						player.chapters.fadeIn(200).height(player.chapters.find('.mejs-chapter').outerHeight());
-					}
-				},
-				function () {
-					if (player.hasChapters && !media.paused) {
-						player.chapters.fadeOut(200, function() {
-							$(this).css('visibility','hidden');
-							$(this).css('display','block');
-						});
-					}
-				});
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-			// check for autoplay
-			if (player.node.getAttribute('autoplay') !== null) {
-				player.chapters.css('visibility','hidden');
-			}
-		},
+	for (var i = 0, total = typeChecks.length; i < total; i++) {
+		var type = typeChecks[i](url);
 
-		setTrack: function(lang){
+		if (type) {
+			return type;
+		}
+	}
 
-			var t = this,
-				i;
+	// the do standard extension check
+	var ext = getExtension(url),
+	    normalizedExt = normalizeExtension(ext);
 
-			if (lang == 'none') {
-				t.selectedTrack = null;
-				t.captionsButton.removeClass('mejs-captions-enabled');
-			} else {
-				for (i=0; i<t.tracks.length; i++) {
-					if (t.tracks[i].srclang == lang) {
-						if (t.selectedTrack === null)
-							t.captionsButton.addClass('mejs-captions-enabled');
-						t.selectedTrack = t.tracks[i];
-						t.captions.attr('lang', t.selectedTrack.srclang);
-						t.displayCaptions();
-						break;
-					}
-				}
-			}
-		},
+	var mime = 'video/mp4';
 
-		loadNextTrack: function() {
-			var t = this;
+	// Obtain correct MIME types
+	if (normalizedExt) {
+		if (['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].includes(normalizedExt)) {
+			mime = 'video/' + normalizedExt;
+		} else if (['mp3', 'oga', 'wav', 'mid', 'midi'].includes(normalizedExt)) {
+			mime = 'audio/' + normalizedExt;
+		}
+	}
 
-			t.trackToLoad++;
-			if (t.trackToLoad < t.tracks.length) {
-				t.isLoadingTrack = true;
-				t.loadTrack(t.trackToLoad);
-			} else {
-				// add done?
-				t.isLoadingTrack = false;
+	return mime;
+}
 
-				t.checkForTracks();
-			}
-		},
+/**
+ * Get media file extension from URL
+ *
+ * @param {String} url
+ * @return {String}
+ */
+function getExtension(url) {
 
-		loadTrack: function(index){
-			var
-				t = this,
-				track = t.tracks[index],
-				after = function() {
+	if (typeof url !== 'string') {
+		throw new Error('`url` argument must be a string');
+	}
 
-					track.isLoaded = true;
+	var baseUrl = url.split('?')[0],
+	    baseName = baseUrl.split('\\').pop().split('/').pop();
 
-					// create button
-					//t.addTrackButton(track.srclang);
-					t.enableTrackButton(track.srclang, track.label);
+	return baseName.indexOf('.') > -1 ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
+}
 
-					t.loadNextTrack();
+/**
+ * Get standard extension of a media file
+ *
+ * @param {String} extension
+ * @return {String}
+ */
+function normalizeExtension(extension) {
 
-				};
+	if (typeof extension !== 'string') {
+		throw new Error('`extension` argument must be a string');
+	}
 
+	switch (extension) {
+		case 'mp4':
+		case 'm4v':
+			return 'mp4';
+		case 'webm':
+		case 'webma':
+		case 'webmv':
+			return 'webm';
+		case 'ogg':
+		case 'oga':
+		case 'ogv':
+			return 'ogg';
+		default:
+			return extension;
+	}
+}
 
-			$.ajax({
-				url: track.src,
-				dataType: "text",
-				success: function(d) {
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.typeChecks = typeChecks;
+_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
+_mejs2.default.Utils.formatType = formatType;
+_mejs2.default.Utils.getMimeFromType = getMimeFromType;
+_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
+_mejs2.default.Utils.getExtension = getExtension;
+_mejs2.default.Utils.normalizeExtension = normalizeExtension;
 
-					// parse the loaded file
-					if (typeof d == "string" && (/<tt\s+xml/ig).exec(d)) {
-						track.entries = mejs.TrackFormatParser.dfxp.parse(d);
-					} else {
-						track.entries = mejs.TrackFormatParser.webvtt.parse(d);
-					}
+},{"21":21,"6":6}],23:[function(_dereq_,module,exports){
+'use strict';
 
-					after();
+var _document = _dereq_(2);
 
-					if (track.kind == 'chapters') {
-						t.media.addEventListener('play', function(e) {
-							if (t.media.duration > 0) {
-								t.displayChapters(track);
-							}
-						}, false);
-					}
+var _document2 = _interopRequireDefault(_document);
 
-					if (track.kind == 'slides') {
-						t.setupSlides(track);
-					}
-				},
-				error: function() {
-					t.loadNextTrack();
-				}
-			});
-		},
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-		enableTrackButton: function(lang, label) {
-			var t = this;
+/**
+ * Polyfill
+ *
+ * Mimics the missing methods like Object.assign, Array.includes, etc., as a way to avoid including the whole list
+ * of polyfills provided by Babel.
+ */
 
-			if (label === '') {
-				label = mejs.language.codes[lang] || lang;
+// ChildNode.remove polyfill
+// from: https://github.com/jserz/js_piece/blob/master/DOM/ChildNode/remove()/remove().md
+(function (arr) {
+	arr.forEach(function (item) {
+		if (item.hasOwnProperty('remove')) {
+			return;
+		}
+		Object.defineProperty(item, 'remove', {
+			configurable: true,
+			enumerable: true,
+			writable: true,
+			value: function remove() {
+				this.parentNode.removeChild(this);
 			}
+		});
+	});
+})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
 
-			t.captionsButton
-				.find('input[value=' + lang + ']')
-					.prop('disabled',false)
-				.siblings('label')
-					.html( label );
+// CustomEvent polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent
+(function () {
 
-			// auto select
-			if (t.options.startLanguage == lang) {
-				$('#' + t.id + '_captions_' + lang).prop('checked', true).trigger('click');
-			}
+	if (typeof window.CustomEvent === "function") return false;
 
-			t.adjustLanguageBox();
-		},
+	function CustomEvent(event, params) {
+		params = params || { bubbles: false, cancelable: false, detail: undefined };
+		var evt = _document2.default.createEvent('CustomEvent');
+		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
+		return evt;
+	}
 
-		addTrackButton: function(lang, label) {
-			var t = this;
-			if (label === '') {
-				label = mejs.language.codes[lang] || lang;
-			}
+	CustomEvent.prototype = window.Event.prototype;
 
-			t.captionsButton.find('ul').append(
-				$('<li>'+
-					'<input type="radio" name="' + t.id + '_captions" id="' + t.id + '_captions_' + lang + '" value="' + lang + '" disabled="disabled" />' +
-					'<label for="' + t.id + '_captions_' + lang + '">' + label + ' (loading)' + '</label>'+
-				'</li>')
-			);
+	window.CustomEvent = CustomEvent;
+})();
 
-			t.adjustLanguageBox();
+// Object.assign polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill
+if (typeof Object.assign !== 'function') {
+	Object.assign = function (target) {
+		// .length of function is 2
 
-			// remove this from the dropdownlist (if it exists)
-			t.container.find('.mejs-captions-translations option[value=' + lang + ']').remove();
-		},
+		if (target === null || target === undefined) {
+			// TypeError if undefined or null
+			throw new TypeError('Cannot convert undefined or null to object');
+		}
 
-		adjustLanguageBox:function() {
-			var t = this;
-			// adjust the size of the outer box
-			t.captionsButton.find('.mejs-captions-selector').height(
-				t.captionsButton.find('.mejs-captions-selector ul').outerHeight(true) +
-				t.captionsButton.find('.mejs-captions-translations').outerHeight(true)
-			);
-		},
+		var to = Object(target);
 
-		checkForTracks: function() {
-			var
-				t = this,
-				hasSubtitles = false;
+		for (var index = 1, total = arguments.length; index < total; index++) {
+			var nextSource = arguments[index];
 
-			// check if any subtitles
-			if (t.options.hideCaptionsButtonWhenEmpty) {
-				for (i=0; i<t.tracks.length; i++) {
-					if (t.tracks[i].kind == 'subtitles') {
-						hasSubtitles = true;
-						break;
+			if (nextSource !== null) {
+				// Skip over if undefined or null
+				for (var nextKey in nextSource) {
+					// Avoid bugs when hasOwnProperty is shadowed
+					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
+						to[nextKey] = nextSource[nextKey];
 					}
 				}
+			}
+		}
+		return to;
+	};
+}
 
-				if (!hasSubtitles) {
-					t.captionsButton.hide();
-					t.setControlsSize();
-				}
+// Array.includes polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes#Polyfill
+if (!Array.prototype.includes) {
+	Object.defineProperty(Array.prototype, 'includes', {
+		value: function value(searchElement, fromIndex) {
+
+			// 1. const O be ? ToObject(this value).
+			if (this === null || this === undefined) {
+				throw new TypeError('"this" is null or not defined');
 			}
-		},
 
-		displayCaptions: function() {
+			var o = Object(this);
 
-			if (typeof this.tracks == 'undefined')
-				return;
+			// 2. const len be ? ToLength(? Get(O, "length")).
+			var len = o.length >>> 0;
 
-			var
-				t = this,
-				i,
-				track = t.selectedTrack;
-
-			if (track !== null && track.isLoaded) {
-				for (i=0; i<track.entries.times.length; i++) {
-					if (t.media.currentTime >= track.entries.times[i].start && t.media.currentTime <= track.entries.times[i].stop) {
-						// Set the line before the timecode as a class so the cue can be targeted if needed
-						t.captionsText.html(track.entries.text[i]).attr('class', 'mejs-captions-text ' + (track.entries.times[i].identifier || ''));
-						t.captions.show().height(0);
-						return; // exit out if one is visible;
-					}
-				}
-				t.captions.hide();
-			} else {
-				t.captions.hide();
+			// 3. If len is 0, return false.
+			if (len === 0) {
+				return false;
 			}
-		},
 
-		setupSlides: function(track) {
-			var t = this;
+			// 4. const n be ? ToInteger(fromIndex).
+			//    (If fromIndex is undefined, this step produces the value 0.)
+			var n = fromIndex | 0;
+
+			// 5. If n ≥ 0, then
+			//  a. const k be n.
+			// 6. Else n < 0,
+			//  a. const k be len + n.
+			//  b. If k < 0, const k be 0.
+			var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
+
+			// 7. Repeat, while k < len
+			while (k < len) {
+				// a. const elementK be the result of ? Get(O, ! ToString(k)).
+				// b. If SameValueZero(searchElement, elementK) is true, return true.
+				// c. Increase k by 1.
+				// NOTE: === provides the correct "SameValueZero" comparison needed here.
+				if (o[k] === searchElement) {
+					return true;
+				}
+				k++;
+			}
 
-			t.slides = track;
-			t.slides.entries.imgs = [t.slides.entries.text.length];
-			t.showSlide(0);
+			// 8. Return false
+			return false;
+		}
+	});
+}
 
-		},
+// String.includes polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes
+if (!String.prototype.includes) {
+	String.prototype.includes = function (search, start) {
+		'use strict';
 
-		showSlide: function(index) {
-			if (typeof this.tracks == 'undefined' || typeof this.slidesContainer == 'undefined') {
-				return;
-			}
+		if (typeof start !== 'number') {
+			start = 0;
+		}
 
-			var t = this,
-				url = t.slides.entries.text[index],
-				img = t.slides.entries.imgs[index];
+		if (start + search.length > this.length) {
+			return false;
+		} else {
+			return this.indexOf(search, start) !== -1;
+		}
+	};
+}
 
-			if (typeof img == 'undefined' || typeof img.fadeIn == 'undefined') {
+// String.startsWith polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#Polyfill
+if (!String.prototype.startsWith) {
+	String.prototype.startsWith = function (searchString, position) {
+		position = position || 0;
+		return this.substr(position, searchString.length) === searchString;
+	};
+}
 
-				t.slides.entries.imgs[index] = img = $('<img src="' + url + '">')
-						.on('load', function() {
-							img.appendTo(t.slidesContainer)
-								.hide()
-								.fadeIn()
-								.siblings(':visible')
-									.fadeOut();
+// Element.matches polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/matches
+if (!Element.prototype.matches) {
+	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
+		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+		    i = matches.length - 1;
+		while (--i >= 0 && matches.item(i) !== this) {}
+		return i > -1;
+	};
+}
 
-						});
+// Element.closest polyfill
+// Reference: https://developer.mozilla.org/en-US/docs/Web/API/Element/closest
+if (window.Element && !Element.prototype.closest) {
+	Element.prototype.closest = function (s) {
+		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
+		    i = void 0,
+		    el = this;
+		do {
+			i = matches.length;
+			while (--i >= 0 && matches.item(i) !== el) {}
+		} while (i < 0 && (el = el.parentElement));
+		return el;
+	};
+}
 
-			} else {
+// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
+// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating
 
-				if (!img.is(':visible') && !img.is(':animated')) {
+// requestAnimationFrame polyfill by Erik Möller. fixes from Paul Irish and Tino Zijdel
 
-					//
+// MIT license
 
-					img.fadeIn()
-						.siblings(':visible')
-							.fadeOut();
-				}
-			}
+(function () {
+	var lastTime = 0;
+	var vendors = ['ms', 'moz', 'webkit', 'o'];
+	for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
+		window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
+		window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
+	}
 
-		},
+	if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
+		var currTime = new Date().getTime();
+		var timeToCall = Math.max(0, 16 - (currTime - lastTime));
+		var id = window.setTimeout(function () {
+			callback(currTime + timeToCall);
+		}, timeToCall);
+		lastTime = currTime + timeToCall;
+		return id;
+	};
 
-		displaySlides: function() {
+	if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
+		clearTimeout(id);
+	};
+})();
 
-			if (typeof this.slides == 'undefined')
-				return;
+},{"2":2}],24:[function(_dereq_,module,exports){
+'use strict';
 
-			var
-				t = this,
-				slides = t.slides,
-				i;
+Object.defineProperty(exports, "__esModule", {
+	value: true
+});
+exports.isDropFrame = isDropFrame;
+exports.secondsToTimeCode = secondsToTimeCode;
+exports.timeCodeToSeconds = timeCodeToSeconds;
+exports.calculateTimeFormat = calculateTimeFormat;
+exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
 
-			for (i=0; i<slides.entries.times.length; i++) {
-				if (t.media.currentTime >= slides.entries.times[i].start && t.media.currentTime <= slides.entries.times[i].stop){
+var _mejs = _dereq_(6);
 
-					t.showSlide(i);
+var _mejs2 = _interopRequireDefault(_mejs);
 
-					return; // exit out if one is visible;
-				}
-			}
-		},
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
 
-		displayChapters: function() {
-			var
-				t = this,
-				i;
+/**
+ * Indicate if FPS is dropFrame (typically non-integer frame rates: 29.976)
+ *
+ * @param {Number} fps - Frames per second
+ * @return {Boolean}
+ */
+function isDropFrame() {
+	var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
 
-			for (i=0; i<t.tracks.length; i++) {
-				if (t.tracks[i].kind == 'chapters' && t.tracks[i].isLoaded) {
-					t.drawChapters(t.tracks[i]);
-					t.hasChapters = true;
-					break;
-				}
-			}
-		},
+	return !(fps % 1 === 0);
+}
+/**
+ * Format a numeric time in format '00:00:00'
+ *
+ * @param {Number} time - Ideally a number, but if not or less than zero, is defaulted to zero
+ * @param {Boolean} forceHours
+ * @param {Boolean} showFrameCount
+ * @param {Number} fps - Frames per second
+ * @param {Number} secondsDecimalLength - Number of decimals to display if any
+ * @return {String}
+ */
+function secondsToTimeCode(time) {
+	var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+	var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+	var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;
+	var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
+
+
+	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
+
+	var dropFrames = Math.round(fps * 0.066666),
+	    // Number of drop frames to drop on the minute marks (6%)
+	timeBase = Math.round(fps),
+	    framesPer24Hours = Math.round(fps * 3600) * 24,
+	    framesPer10Minutes = Math.round(fps * 600),
+	    frameSep = isDropFrame(fps) ? ';' : ':',
+	    hours = void 0,
+	    minutes = void 0,
+	    seconds = void 0,
+	    frames = void 0,
+	    f = Math.round(time * fps);
+
+	if (isDropFrame(fps)) {
+
+		if (f < 0) {
+			f = framesPer24Hours + f;
+		}
 
-		drawChapters: function(chapters) {
-			var
-				t = this,
-				i,
-				dur,
-				//width,
-				//left,
-				percent = 0,
-				usedPercent = 0;
-
-			t.chapters.empty();
-
-			for (i=0; i<chapters.entries.times.length; i++) {
-				dur = chapters.entries.times[i].stop - chapters.entries.times[i].start;
-				percent = Math.floor(dur / t.media.duration * 100);
-				if (percent + usedPercent > 100 || // too large
-					i == chapters.entries.times.length-1 && percent + usedPercent < 100) // not going to fill it in
-					{
-					percent = 100 - usedPercent;
-				}
-				//width = Math.floor(t.width * dur / t.media.duration);
-				//left = Math.floor(t.width * chapters.entries.times[i].start / t.media.duration);
-				//if (left + width > t.width) {
-				//	width = t.width - left;
-				//}
-
-				t.chapters.append( $(
-					'<div class="mejs-chapter" rel="' + chapters.entries.times[i].start + '" style="left: ' + usedPercent.toString() + '%;width: ' + percent.toString() + '%;">' +
-						'<div class="mejs-chapter-block' + ((i==chapters.entries.times.length-1) ? ' mejs-chapter-block-last' : '') + '">' +
-							'<span class="ch-title">' + chapters.entries.text[i] + '</span>' +
-							'<span class="ch-time">' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].start) + '&ndash;' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].stop) + '</span>' +
-						'</div>' +
-					'</div>'));
-				usedPercent += percent;
-			}
-
-			t.chapters.find('div.mejs-chapter').click(function() {
-				t.media.setCurrentTime( parseFloat( $(this).attr('rel') ) );
-				if (t.media.paused) {
-					t.media.play();
-				}
-			});
+		f = f % framesPer24Hours;
 
-			t.chapters.show();
+		var d = Math.floor(f / framesPer10Minutes);
+		var m = f % framesPer10Minutes;
+		f = f + dropFrames * 9 * d;
+		if (m > dropFrames) {
+			f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));
 		}
-	});
 
+		var timeBaseDivision = Math.floor(f / timeBase);
 
+		hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);
+		minutes = Math.floor(timeBaseDivision / 60) % 60;
 
-	mejs.language = {
-		codes:  {
-			af:'Afrikaans',
-			sq:'Albanian',
-			ar:'Arabic',
-			be:'Belarusian',
-			bg:'Bulgarian',
-			ca:'Catalan',
-			zh:'Chinese',
-			'zh-cn':'Chinese Simplified',
-			'zh-tw':'Chinese Traditional',
-			hr:'Croatian',
-			cs:'Czech',
-			da:'Danish',
-			nl:'Dutch',
-			en:'English',
-			et:'Estonian',
-			fl:'Filipino',
-			fi:'Finnish',
-			fr:'French',
-			gl:'Galician',
-			de:'German',
-			el:'Greek',
-			ht:'Haitian Creole',
-			iw:'Hebrew',
-			hi:'Hindi',
-			hu:'Hungarian',
-			is:'Icelandic',
-			id:'Indonesian',
-			ga:'Irish',
-			it:'Italian',
-			ja:'Japanese',
-			ko:'Korean',
-			lv:'Latvian',
-			lt:'Lithuanian',
-			mk:'Macedonian',
-			ms:'Malay',
-			mt:'Maltese',
-			no:'Norwegian',
-			fa:'Persian',
-			pl:'Polish',
-			pt:'Portuguese',
-			// 'pt-pt':'Portuguese (Portugal)',
-			ro:'Romanian',
-			ru:'Russian',
-			sr:'Serbian',
-			sk:'Slovak',
-			sl:'Slovenian',
-			es:'Spanish',
-			sw:'Swahili',
-			sv:'Swedish',
-			tl:'Tagalog',
-			th:'Thai',
-			tr:'Turkish',
-			uk:'Ukrainian',
-			vi:'Vietnamese',
-			cy:'Welsh',
-			yi:'Yiddish'
+		if (showFrameCount) {
+			seconds = timeBaseDivision % 60;
+		} else {
+			seconds = (f / timeBase % 60).toFixed(secondsDecimalLength);
 		}
-	};
+	} else {
+		hours = Math.floor(time / 3600) % 24;
+		minutes = Math.floor(time / 60) % 60;
+		if (showFrameCount) {
+			seconds = Math.floor(time % 60);
+		} else {
+			seconds = (time % 60).toFixed(secondsDecimalLength);
+		}
+	}
+	hours = hours <= 0 ? 0 : hours;
+	minutes = minutes <= 0 ? 0 : minutes;
+	seconds = seconds <= 0 ? 0 : seconds;
+
+	var result = forceHours || hours > 0 ? (hours < 10 ? '0' + hours : hours) + ':' : '';
+	result += (minutes < 10 ? '0' + minutes : minutes) + ':';
+	result += '' + (seconds < 10 ? '0' + seconds : seconds);
+
+	if (showFrameCount) {
+		frames = (f % timeBase).toFixed(0);
+		frames = frames <= 0 ? 0 : frames;
+		result += frames < 10 ? frameSep + '0' + frames : '' + frameSep + frames;
+	}
 
-	/*
-	Parses WebVTT format which should be formatted as
-	================================
-	WEBVTT
-
-	1
-	00:00:01,1 --> 00:00:05,000
-	A line of text
-
-	2
-	00:01:15,1 --> 00:02:05,000
-	A second line of text
-
-	===============================
-
-	Adapted from: http://www.delphiki.com/html5/playr
-	*/
-	mejs.TrackFormatParser = {
-		webvtt: {
-			pattern_timecode: /^((?:[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})?)(.*)$/,
-
-			parse: function(trackText) {
-				var
-					i = 0,
-					lines = mejs.TrackFormatParser.split2(trackText, /\r?\n/),
-					entries = {text:[], times:[]},
-					timecode,
-					text,
-					identifier;
-				for(; i<lines.length; i++) {
-					timecode = this.pattern_timecode.exec(lines[i]);
-
-					if (timecode && i<lines.length) {
-						if ((i - 1) >= 0 && lines[i - 1] !== '') {
-							identifier = lines[i - 1];
-						}
-						i++;
-						// grab all the (possibly multi-line) text that follows
-						text = lines[i];
-						i++;
-						while(lines[i] !== '' && i<lines.length){
-							text = text + '\n' + lines[i];
-							i++;
-						}
-						text = $.trim(text).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
-						// Text is in a different array so I can use .join
-						entries.text.push(text);
-						entries.times.push(
-						{
-							identifier: identifier,
-							start: (mejs.Utility.convertSMPTEtoSeconds(timecode[1]) === 0) ? 0.200 : mejs.Utility.convertSMPTEtoSeconds(timecode[1]),
-							stop: mejs.Utility.convertSMPTEtoSeconds(timecode[3]),
-							settings: timecode[5]
-						});
-					}
-					identifier = '';
-				}
-				return entries;
-			}
-		},
-		// Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420
-		dfxp: {
-			parse: function(trackText) {
-				trackText = $(trackText).filter("tt");
-				var
-					i = 0,
-					container = trackText.children("div").eq(0),
-					lines = container.find("p"),
-					styleNode = trackText.find("#" + container.attr("style")),
-					styles,
-					begin,
-					end,
-					text,
-					entries = {text:[], times:[]};
-
-
-				if (styleNode.length) {
-					var attributes = styleNode.removeAttr("id").get(0).attributes;
-					if (attributes.length) {
-						styles = {};
-						for (i = 0; i < attributes.length; i++) {
-							styles[attributes[i].name.split(":")[1]] = attributes[i].value;
-						}
-					}
-				}
+	return result;
+}
 
-				for(i = 0; i<lines.length; i++) {
-					var style;
-					var _temp_times = {
-						start: null,
-						stop: null,
-						style: null
-					};
-					if (lines.eq(i).attr("begin")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("begin"));
-					if (!_temp_times.start && lines.eq(i-1).attr("end")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i-1).attr("end"));
-					if (lines.eq(i).attr("end")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("end"));
-					if (!_temp_times.stop && lines.eq(i+1).attr("begin")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i+1).attr("begin"));
-					if (styles) {
-						style = "";
-						for (var _style in styles) {
-							style += _style + ":" + styles[_style] + ";";
-						}
-					}
-					if (style) _temp_times.style = style;
-					if (_temp_times.start === 0) _temp_times.start = 0.200;
-					entries.times.push(_temp_times);
-					text = $.trim(lines.eq(i).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
-					entries.text.push(text);
-					if (entries.times.start === 0) entries.times.start = 2;
-				}
-				return entries;
-			}
-		},
-		split2: function (text, regex) {
-			// normal version for compliant browsers
-			// see below for IE fix
-			return text.split(regex);
-		}
-	};
+/**
+ * Convert a '00:00:00' time string into seconds
+ *
+ * @param {String} time
+ * @param {Number} fps - Frames per second
+ * @return {Number}
+ */
+function timeCodeToSeconds(time) {
+	var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
 
-	// test for browsers with bad String.split method.
-	if ('x\n\ny'.split(/\n/gi).length != 3) {
-		// add super slow IE8 and below version
-		mejs.TrackFormatParser.split2 = function(text, regex) {
-			var
-				parts = [],
-				chunk = '',
-				i;
 
-			for (i=0; i<text.length; i++) {
-				chunk += text.substring(i,i+1);
-				if (regex.test(chunk)) {
-					parts.push(chunk.replace(regex, ''));
-					chunk = '';
-				}
-			}
-			parts.push(chunk);
-			return parts;
-		};
+	if (typeof time !== 'string') {
+		throw new TypeError('Time must be a string');
 	}
 
-})(mejs.$);
+	if (time.indexOf(';') > 0) {
+		time = time.replace(';', ':');
+	}
 
-/*
-* ContextMenu Plugin
-* 
-*
-*/
-
-(function($) {
-
-$.extend(mejs.MepDefaults,
-	{ 'contextMenuItems': [
-		// demo of a fullscreen option
-		{ 
-			render: function(player) {
-				
-				// check for fullscreen plugin
-				if (typeof player.enterFullScreen == 'undefined')
-					return null;
-			
-				if (player.isFullScreen) {
-					return mejs.i18n.t('Turn off Fullscreen');
-				} else {
-					return mejs.i18n.t('Go Fullscreen');
-				}
-			},
-			click: function(player) {
-				if (player.isFullScreen) {
-					player.exitFullScreen();
-				} else {
-					player.enterFullScreen();
-				}
-			}
-		}
-		,
-		// demo of a mute/unmute button
-		{ 
-			render: function(player) {
-				if (player.media.muted) {
-					return mejs.i18n.t('Unmute');
-				} else {
-					return mejs.i18n.t('Mute');
-				}
-			},
-			click: function(player) {
-				if (player.media.muted) {
-					player.setMuted(false);
-				} else {
-					player.setMuted(true);
+	if (!time.match(/\d{2}(\:\d{2}){0,3}/)) {
+		throw new TypeError('Time code must have the format `00:00:00`');
+	}
+
+	var parts = time.split(':');
+
+	var output = void 0,
+	    hours = 0,
+	    minutes = 0,
+	    seconds = 0,
+	    frames = 0,
+	    totalMinutes = 0,
+	    dropFrames = Math.round(fps * 0.066666),
+	    // Number of drop frames to drop on the minute marks (6%)
+	timeBase = Math.round(fps),
+	    hFrames = timeBase * 3600,
+	    mFrames = timeBase * 60;
+
+	switch (parts.length) {
+		default:
+		case 1:
+			seconds = parseInt(parts[0], 10);
+			break;
+		case 2:
+			minutes = parseInt(parts[0], 10);
+			seconds = parseInt(parts[1], 10);
+			break;
+		case 3:
+			hours = parseInt(parts[0], 10);
+			minutes = parseInt(parts[1], 10);
+			seconds = parseInt(parts[2], 10);
+			break;
+		case 4:
+			hours = parseInt(parts[0], 10);
+			minutes = parseInt(parts[1], 10);
+			seconds = parseInt(parts[2], 10);
+			frames = parseInt(parts[3], 10);
+			break;
+	}
+
+	if (isDropFrame(fps)) {
+		totalMinutes = 60 * hours + minutes;
+		output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));
+	} else {
+		output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;
+	}
+
+	return parseFloat(output.toFixed(3));
+}
+
+/**
+ * Calculate the time format to use
+ *
+ * There is a default format set in the options but it can be incomplete, so it is adjusted according to the media
+ * duration. Format: 'hh:mm:ss:ff'
+ * @param {*} time - Ideally a number, but if not or less than zero, is defaulted to zero
+ * @param {Object} options
+ * @param {Number} fps - Frames per second
+ */
+function calculateTimeFormat(time, options) {
+	var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
+
+
+	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
+
+	var hours = Math.floor(time / 3600) % 24,
+	    minutes = Math.floor(time / 60) % 60,
+	    seconds = Math.floor(time % 60),
+	    frames = Math.floor((time % 1 * fps).toFixed(3)),
+	    lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];
+
+	var format = options.timeFormat,
+	    firstTwoPlaces = format[1] === format[0],
+	    separatorIndex = firstTwoPlaces ? 2 : 1,
+	    separator = format.length < separatorIndex ? format[separatorIndex] : ':',
+	    firstChar = format[0],
+	    required = false;
+
+	for (var i = 0, len = lis.length; i < len; i++) {
+		if (format.indexOf(lis[i][1]) > -1) {
+			required = true;
+		} else if (required) {
+			var hasNextValue = false;
+			for (var j = i; j < len; j++) {
+				if (lis[j][0] > 0) {
+					hasNextValue = true;
+					break;
 				}
 			}
-		},
-		// separator
-		{
-			isSeparator: true
-		}
-		,
-		// demo of simple download video
-		{ 
-			render: function(player) {
-				return mejs.i18n.t('Download Video');
-			},
-			click: function(player) {
-				window.location.href = player.media.currentSrc;
-			}
-		}	
-	]}
-);
-
-
-	$.extend(MediaElementPlayer.prototype, {
-		buildcontextmenu: function(player, controls, layers, media) {
-			
-			// create context menu
-			player.contextMenu = $('<div class="mejs-contextmenu"></div>')
-								.appendTo($('body'))
-								.hide();
-			
-			// create events for showing context menu
-			player.container.bind('contextmenu', function(e) {
-				if (player.isContextMenuEnabled) {
-					e.preventDefault();
-					player.renderContextMenu(e.clientX-1, e.clientY-1);
-					return false;
-				}
-			});
-			player.container.bind('click', function() {
-				player.contextMenu.hide();
-			});	
-			player.contextMenu.bind('mouseleave', function() {
 
-				//
-				player.startContextMenuTimer();
-				
-			});		
-		},
+			if (!hasNextValue) {
+				break;
+			}
 
-		cleancontextmenu: function(player) {
-			player.contextMenu.remove();
-		},
-		
-		isContextMenuEnabled: true,
-		enableContextMenu: function() {
-			this.isContextMenuEnabled = true;
-		},
-		disableContextMenu: function() {
-			this.isContextMenuEnabled = false;
-		},
-		
-		contextMenuTimeout: null,
-		startContextMenuTimer: function() {
-			//
-			
-			var t = this;
-			
-			t.killContextMenuTimer();
-			
-			t.contextMenuTimer = setTimeout(function() {
-				t.hideContextMenu();
-				t.killContextMenuTimer();
-			}, 750);
-		},
-		killContextMenuTimer: function() {
-			var timer = this.contextMenuTimer;
-			
-			//
-			
-			if (timer != null) {				
-				clearTimeout(timer);
-				delete timer;
-				timer = null;
-			}
-		},		
-		
-		hideContextMenu: function() {
-			this.contextMenu.hide();
-		},
-		
-		renderContextMenu: function(x,y) {
-			
-			// alway re-render the items so that things like "turn fullscreen on" and "turn fullscreen off" are always written correctly
-			var t = this,
-				html = '',
-				items = t.options.contextMenuItems;
-			
-			for (var i=0, il=items.length; i<il; i++) {
-				
-				if (items[i].isSeparator) {
-					html += '<div class="mejs-contextmenu-separator"></div>';
-				} else {
-				
-					var rendered = items[i].render(t);
-				
-					// render can return null if the item doesn't need to be used at the moment
-					if (rendered != null) {
-						html += '<div class="mejs-contextmenu-item" data-itemindex="' + i + '" id="element-' + (Math.random()*1000000) + '">' + rendered + '</div>';
-					}
-				}
+			if (!firstTwoPlaces) {
+				format = firstChar + format;
 			}
-			
-			// position and show the context menu
-			t.contextMenu
-				.empty()
-				.append($(html))
-				.css({top:y, left:x})
-				.show();
-				
-			// bind events
-			t.contextMenu.find('.mejs-contextmenu-item').each(function() {
-							
-				// which one is this?
-				var $dom = $(this),
-					itemIndex = parseInt( $dom.data('itemindex'), 10 ),
-					item = t.options.contextMenuItems[itemIndex];
-				
-				// bind extra functionality?
-				if (typeof item.show != 'undefined')
-					item.show( $dom , t);
-				
-				// bind click action
-				$dom.click(function() {			
-					// perform click action
-					if (typeof item.click != 'undefined')
-						item.click(t);
-					
-					// close
-					t.contextMenu.hide();				
-				});				
-			});	
-			
-			// stop the controls from hiding
-			setTimeout(function() {
-				t.killControlsTimer('rev3');	
-			}, 100);
-						
+			format = lis[i][1] + separator + format;
+			if (firstTwoPlaces) {
+				format = lis[i][1] + format;
+			}
+			firstChar = lis[i][1];
 		}
-	});
-	
-})(mejs.$);
+	}
+
+	options.currentTimeFormat = format;
+}
+
 /**
- * Postroll plugin
+ * Convert Society of Motion Picture and Television Engineers (SMTPE) time code into seconds
+ *
+ * @param {String} SMPTE
+ * @return {Number}
  */
-(function($) {
+function convertSMPTEtoSeconds(SMPTE) {
 
-	$.extend(mejs.MepDefaults, {
-		postrollCloseText: mejs.i18n.t('Close')
-	});
+	if (typeof SMPTE !== 'string') {
+		throw new TypeError('Argument must be a string value');
+	}
 
-	// Postroll
-	$.extend(MediaElementPlayer.prototype, {
-		buildpostroll: function(player, controls, layers, media) {
-			var
-				t = this,
-				postrollLink = t.container.find('link[rel="postroll"]').attr('href');
-
-			if (typeof postrollLink !== 'undefined') {
-				player.postroll =
-					$('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">' + t.options.postrollCloseText + '</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(layers).hide();
-
-				t.media.addEventListener('ended', function (e) {
-					$.ajax({
-						dataType: 'html',
-						url: postrollLink,
-						success: function (data, textStatus) {
-							layers.find('.mejs-postroll-layer-content').html(data);
-						}
-					});
-					player.postroll.show();
-				}, false);
-			}
+	SMPTE = SMPTE.replace(',', '.');
+
+	var decimalLen = SMPTE.indexOf('.') > -1 ? SMPTE.split('.')[1].length : 0;
+
+	var secs = 0,
+	    multiplier = 1;
+
+	SMPTE = SMPTE.split(':').reverse();
+
+	for (var i = 0, total = SMPTE.length; i < total; i++) {
+		multiplier = 1;
+		if (i > 0) {
+			multiplier = Math.pow(60, i);
 		}
-	});
+		secs += Number(SMPTE[i]) * multiplier;
+	}
+	return Number(secs.toFixed(decimalLen));
+}
+
+_mejs2.default.Utils = _mejs2.default.Utils || {};
+_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;
+_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;
+_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;
+_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
 
-})(mejs.$);
+},{"6":6}]},{},[23,5,4,14,18,17,15,16,8,9,10,11,12,13]);
diff --git a/lib/mejs/mediaelementplayer.min.css b/lib/mejs/mediaelementplayer.min.css
index ca859f38..84ca0fb5 100644
--- a/lib/mejs/mediaelementplayer.min.css
+++ b/lib/mejs/mediaelementplayer.min.css
@@ -1 +1 @@
-.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial;text-align:left;vertical-align:top;text-indent:0;}.me-plugin{position:absolute;height:auto;width:auto;}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden;}.mejs-fullscreen{overflow:hidden!important;}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:1000;}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%;height:100%;}.mejs-clear{clear:both;}.mejs-background{position:absolute;top:0;left:0;}.mejs-mediaelement{position:absolute;top:0;left:0;width:100%;height:100%;}.mejs-poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;}:root .mejs-poster img{display:none;}.mejs-poster img{border:0;padding:0;border:0;}.mejs-overlay{position:absolute;top:0;left:0;}.mejs-overlay-play{cursor:pointer;}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:100px;height:100px;margin:-50px 0 0 -50px;background:url(bigplay.svg) no-repeat;}.no-svg .mejs-overlay-button{background-image:url(bigplay.png);}.mejs-overlay:hover .mejs-overlay-button{background-position:0 -100px;}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:#333;background:url(background.png);background:rgba(0,0,0,0.9);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.9)),to(rgba(0,0,0,0.9)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-moz-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-o-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:-ms-linear-gradient(top,rgba(50,50,50,0.9),rgba(0,0,0,0.9));background:linear-gradient(rgba(50,50,50,0.9),rgba(0,0,0,0.9));}.mejs-overlay-loading span{display:block;width:80px;height:80px;background:transparent url(loading.gif) 50% 50% no-repeat;}.mejs-container .mejs-controls{position:absolute;list-style-type:none;margin:0;padding:0;bottom:0;left:0;background:url(background.png);background:rgba(0,0,0,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.7)),to(rgba(0,0,0,0.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-moz-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-o-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-ms-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:linear-gradient(rgba(50,50,50,0.7),rgba(0,0,0,0.7));height:30px;width:100%;}.mejs-container .mejs-controls div{list-style-type:none;background-image:none;display:block;float:left;margin:0;padding:0;width:26px;height:26px;font-size:11px;line-height:11px;font-family:Helvetica,Arial;border:0;}.mejs-controls .mejs-button button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:7px 5px;padding:0;position:absolute;height:16px;width:16px;border:0;background:transparent url(controls.svg) no-repeat;}.no-svg .mejs-controls .mejs-button button{background-image:url(controls.png);}.mejs-controls .mejs-button button:focus{outline:dotted 1px #999;}.mejs-container .mejs-controls .mejs-time{color:#fff;display:block;height:17px;width:auto;padding:8px 3px 0 3px;overflow:hidden;text-align:center;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;}.mejs-container .mejs-controls .mejs-time span{color:#fff;font-size:11px;line-height:12px;display:block;float:left;margin:1px 2px 0 0;width:auto;}.mejs-controls .mejs-play button{background-position:0 0;}.mejs-controls .mejs-pause button{background-position:0 -16px;}.mejs-controls .mejs-stop button{background-position:-112px 0;}.mejs-controls div.mejs-time-rail{direction:ltr;width:200px;padding-top:5px;}.mejs-controls .mejs-time-rail span{display:block;position:absolute;width:180px;height:10px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;cursor:pointer;}.mejs-controls .mejs-time-rail .mejs-time-total{margin:5px;background:#333;background:rgba(50,50,50,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(30,30,30,0.8)),to(rgba(60,60,60,0.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-moz-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-o-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-ms-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:linear-gradient(rgba(30,30,30,0.8),rgba(60,60,60,0.8));}.mejs-controls .mejs-time-rail .mejs-time-buffering{width:100%;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:15px 15px;-moz-background-size:15px 15px;-o-background-size:15px 15px;background-size:15px 15px;-webkit-animation:buffering-stripes 2s linear infinite;-moz-animation:buffering-stripes 2s linear infinite;-ms-animation:buffering-stripes 2s linear infinite;-o-animation:buffering-stripes 2s linear infinite;animation:buffering-stripes 2s linear infinite;}@-webkit-keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}@-moz-keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}@-ms-keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}@-o-keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}@keyframes buffering-stripes{from{background-position:0 0;}to{background-position:30px 0;}}.mejs-controls .mejs-time-rail .mejs-time-loaded{background:#3caac8;background:rgba(60,170,200,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(44,124,145,0.8)),to(rgba(78,183,212,0.8)));background:-webkit-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-moz-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-o-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:-ms-linear-gradient(top,rgba(44,124,145,0.8),rgba(78,183,212,0.8));background:linear-gradient(rgba(44,124,145,0.8),rgba(78,183,212,0.8));width:0;}.mejs-controls .mejs-time-rail .mejs-time-current{background:#fff;background:rgba(255,255,255,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(255,255,255,0.9)),to(rgba(200,200,200,0.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-moz-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-o-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-ms-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:linear-gradient(rgba(255,255,255,0.9),rgba(200,200,200,0.8));width:0;}.mejs-controls .mejs-time-rail .mejs-time-handle{display:none;position:absolute;margin:0;width:10px;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;cursor:pointer;border:solid 2px #333;top:-2px;text-align:center;}.mejs-controls .mejs-time-rail .mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:solid 1px #333;top:-26px;margin-left:-18px;text-align:center;color:#111;}.mejs-controls .mejs-time-rail .mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0;}.mejs-controls .mejs-time-rail .mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:solid 5px #eee;border-color:#eee transparent transparent transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:15px;left:13px;}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float{width:48px;}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-current{width:44px;}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-corner{left:18px;}.mejs-controls .mejs-fullscreen-button button{background-position:-32px 0;}.mejs-controls .mejs-unfullscreen button{background-position:-32px -16px;}.mejs-controls .mejs-mute button{background-position:-16px -16px;}.mejs-controls .mejs-unmute button{background-position:-16px 0;}.mejs-controls .mejs-volume-button{position:relative;}.mejs-controls .mejs-volume-button .mejs-volume-slider{display:none;height:115px;width:25px;background:url(background.png);background:rgba(50,50,50,0.7);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:-115px;left:0;z-index:1;position:absolute;margin:0;}.mejs-controls .mejs-volume-button:hover{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,0.5);margin:0;}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,0.9);margin:0;}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle{position:absolute;left:4px;top:-3px;width:16px;height:6px;background:#ddd;background:rgba(255,255,255,0.9);cursor:N-resize;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;margin:0;}.mejs-controls div.mejs-horizontal-volume-slider{height:26px;width:60px;position:relative;}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#333;background:rgba(50,50,50,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(30,30,30,0.8)),to(rgba(60,60,60,0.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-moz-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-o-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:-ms-linear-gradient(top,rgba(30,30,30,0.8),rgba(60,60,60,0.8));background:linear-gradient(rgba(30,30,30,0.8),rgba(60,60,60,0.8));}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fff;background:rgba(255,255,255,0.8);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(255,255,255,0.9)),to(rgba(200,200,200,0.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-moz-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-o-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:-ms-linear-gradient(top,rgba(255,255,255,0.9),rgba(200,200,200,0.8));background:linear-gradient(rgba(255,255,255,0.9),rgba(200,200,200,0.8));}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle{display:none;}.mejs-controls .mejs-captions-button{position:relative;}.mejs-controls .mejs-captions-button button{background-position:-48px 0;}.mejs-controls .mejs-captions-button .mejs-captions-selector{visibility:hidden;position:absolute;bottom:26px;right:-51px;width:85px;height:100px;background:url(background.png);background:rgba(50,50,50,0.7);border:solid 1px transparent;padding:10px 10px 0 10px;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.mejs-controls .mejs-captions-button .mejs-captions-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden;}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li{margin:0 0 6px 0;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden;}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px;}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{width:55px;float:left;padding:4px 0 0 0;line-height:15px;font-family:helvetica,arial;font-size:10px;}.mejs-controls .mejs-captions-button .mejs-captions-translations{font-size:10px;margin:0 0 5px 0;}.mejs-chapters{position:absolute;top:0;left:0;-xborder-right:solid 1px #fff;width:10000px;z-index:1;}.mejs-chapters .mejs-chapter{position:absolute;float:left;background:#222;background:rgba(0,0,0,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(50,50,50,0.7)),to(rgba(0,0,0,0.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-moz-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-o-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:-ms-linear-gradient(top,rgba(50,50,50,0.7),rgba(0,0,0,0.7));background:linear-gradient(rgba(50,50,50,0.7),rgba(0,0,0,0.7));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,startColorstr=#323232,endColorstr=#000000);overflow:hidden;border:0;}.mejs-chapters .mejs-chapter .mejs-chapter-block{font-size:11px;color:#fff;padding:5px;display:block;border-right:solid 1px #333;border-bottom:solid 1px #333;cursor:pointer;}.mejs-chapters .mejs-chapter .mejs-chapter-block-last{border-right:none;}.mejs-chapters .mejs-chapter .mejs-chapter-block:hover{background:#666;background:rgba(102,102,102,0.7);background:-webkit-gradient(linear,0% 0,0% 100%,from(rgba(102,102,102,0.7)),to(rgba(50,50,50,0.6)));background:-webkit-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-moz-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-o-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:-ms-linear-gradient(top,rgba(102,102,102,0.7),rgba(50,50,50,0.6));background:linear-gradient(rgba(102,102,102,0.7),rgba(50,50,50,0.6));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0,startColorstr=#666666,endColorstr=#323232);}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title{font-size:12px;font-weight:bold;display:block;white-space:nowrap;text-overflow:ellipsis;margin:0 0 3px 0;line-height:12px;}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan{font-size:12px;line-height:12px;margin:3px 0 4px 0;display:block;white-space:nowrap;text-overflow:ellipsis;}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff;}.mejs-captions-layer a{color:#fff;text-decoration:underline;}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:normal;}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0;}.mejs-captions-position-hover{bottom:35px;}.mejs-captions-text{padding:3px 5px;background:url(background.png);background:rgba(20,20,20,0.5);white-space:pre-wrap;}.me-cannotplay a{color:#fff;font-weight:bold;}.me-cannotplay span{padding:15px;display:block;}.mejs-controls .mejs-loop-off button{background-position:-64px -16px;}.mejs-controls .mejs-loop-on button{background-position:-64px 0;}.mejs-controls .mejs-backlight-off button{background-position:-80px -16px;}.mejs-controls .mejs-backlight-on button{background-position:-80px 0;}.mejs-controls .mejs-picturecontrols-button{background-position:-96px 0;}.mejs-contextmenu{position:absolute;width:150px;padding:10px;border-radius:4px;top:0;left:0;background:#fff;border:solid 1px #999;z-index:1001;}.mejs-contextmenu .mejs-contextmenu-separator{height:1px;font-size:0;margin:5px 6px;background:#333;}.mejs-contextmenu .mejs-contextmenu-item{font-family:Helvetica,Arial;font-size:12px;padding:4px 6px;cursor:pointer;color:#333;}.mejs-contextmenu .mejs-contextmenu-item:hover{background:#2C7C91;color:#fff;}.mejs-controls .mejs-sourcechooser-button{position:relative;}.mejs-controls .mejs-sourcechooser-button button{background-position:-128px 0;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{visibility:hidden;position:absolute;bottom:26px;right:-10px;width:130px;height:100px;background:url(background.png);background:rgba(50,50,50,0.7);border:solid 1px transparent;padding:10px;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li{margin:0 0 6px 0;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px;}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{width:100px;float:left;padding:4px 0 0 0;line-height:15px;font-family:helvetica,arial;font-size:10px;}.mejs-postroll-layer{position:absolute;bottom:0;left:0;width:100%;height:100%;background:url(background.png);background:rgba(50,50,50,0.7);z-index:1000;overflow:hidden;}.mejs-postroll-layer-content{width:100%;height:100%;}.mejs-postroll-close{position:absolute;right:0;top:0;background:url(background.png);background:rgba(50,50,50,0.7);color:#fff;padding:4px;z-index:100;cursor:pointer;}div.mejs-speed-button{width:46px!important;position:relative;}.mejs-controls .mejs-button.mejs-speed-button button{background:transparent;width:36px;font-size:11px;line-height:normal;color:#fff;}.mejs-controls .mejs-speed-button .mejs-speed-selector{visibility:hidden;position:absolute;top:-100px;left:-10px;width:60px;height:100px;background:url(background.png);background:rgba(50,50,50,0.7);border:solid 1px transparent;padding:0;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}.mejs-controls .mejs-speed-button:hover>.mejs-speed-selector{visibility:visible;}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label.mejs-speed-selected{color:rgba(33,248,248,1);}.mejs-controls .mejs-speed-button .mejs-speed-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden;}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li{margin:0 0 6px 0;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px;display:none;}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label{width:60px;float:left;padding:4px 0 0 0;line-height:15px;font-family:helvetica,arial;font-size:11.5px;color:white;margin-left:5px;cursor:pointer;}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li:hover{background-color:#c8c8c8!important;background-color:rgba(255,255,255,.4)!important;}
\ No newline at end of file
+.mejs__offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs__container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box;min-width:250px}.mejs__container .mejs__video{min-height:140px}.mejs__container *{box-sizing:border-box}.mejs__container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs__fill-container,.mejs__fill-container .mejs__container{width:100%;height:100%}.mejs__fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs__container:focus{outline:none}.mejs__iframe-overlay{position:absolute;width:100%;height:100%}.mejs__embed,.mejs__embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs__fullscreen{overflow:hidden!important}.mejs__container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:2}.mejs__container-fullscreen .mejs__mediaelement,.mejs__container-fullscreen video{width:100%!important;height:100%!important}.mejs__clear{clear:both}.mejs__background,.mejs__mediaelement{position:absolute;top:0;left:0}.mejs__mediaelement{width:100%;height:100%;z-index:0}.mejs__poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs__poster-img{display:none}.mejs__poster-img{border:0;padding:0}.mejs__overlay{position:absolute;top:0;left:0;z-index:1}.mejs__layer{z-index:1}.mejs__overlay-play{cursor:pointer}.mejs__overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs__overlay:hover>.mejs__overlay-button{background-position:-80px -39px}.mejs__overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs__overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs__controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs__controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs__button,.mejs__time,.mejs__time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs__button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs__button>button:focus{outline:1px dotted #999}.mejs__container-keyboard-inactive [role=slider],.mejs__container-keyboard-inactive [role=slider]:focus,.mejs__container-keyboard-inactive a,.mejs__container-keyboard-inactive a:focus,.mejs__container-keyboard-inactive button,.mejs__container-keyboard-inactive button:focus{outline:0}.mejs__time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs__play>button{background-position:0 0}.mejs__pause>button{background-position:-20px 0}.mejs__replay>button{background-position:-280px 0}.mejs__time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs__time-buffering,.mejs__time-current,.mejs__time-float,.mejs__time-float-corner,.mejs__time-float-current,.mejs__time-handle,.mejs__time-loaded,.mejs__time-marker,.mejs__time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs__time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs__time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs__time-loaded{background:hsla(0,0%,100%,.3);width:0}.mejs__time-current{background:hsla(0,0%,100%,.9);width:0}.mejs__time-handle{margin:0;width:10px;background:#fff;border-radius:5px;cursor:pointer;border:2px solid #333;top:-2px}.mejs__time-float,.mejs__time-handle{display:none;position:absolute;text-align:center}.mejs__time-float{background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;color:#111}.mejs__time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs__time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs__long-video .mejs__time-float{width:64px;margin-left:-23px}.mejs__long-video .mejs__time-float-current{width:60px}.mejs__long-video .mejs__time-float-corner{left:18px}.mejs__broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs__fullscreen-button>button{background-position:-80px 0}.mejs__unfullscreen>button{background-position:-100px 0}.mejs__mute>button{background-position:-60px 0}.mejs__unmute>button{background-position:-40px 0}.mejs__volume-button{position:relative}.mejs__volume-button>.mejs__volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs__volume-button:hover{border-radius:0 0 4px 4px}.mejs__volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs__volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs__volume-current,.mejs__volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs__volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs__horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs__horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs__horizontal-volume-current,.mejs__horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs__horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs__horizontal-volume-handle{display:none}.mejs__captions-button,.mejs__chapters-button{position:relative}.mejs__captions-button>button{background-position:-140px 0}.mejs__chapters-button>button{background-position:-302px 0}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs__chapters-button>.mejs__chapters-selector{width:110px}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:visible}.mejs__captions-selector-list,.mejs__chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs__captions-selector-list-item,.mejs__chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs__captions-selector-list-item:hover,.mejs__chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs__captions-selector-input,.mejs__chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs__captions-selector-label,.mejs__chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs__captions-selected,.mejs__chapters-selected{color:#21f8f8}.mejs__captions-translations{font-size:10px;margin:0 0 5px}.mejs__captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs__captions-layer a{color:#fff;text-decoration:underline}.mejs__captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs__captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs__captions-position-hover{bottom:35px}.mejs__captions-text,.mejs__captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.me_cannotplay a{font-weight:700}.mejs__container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block}
\ No newline at end of file
diff --git a/lib/mejs/mediaelementplayer.min.js b/lib/mejs/mediaelementplayer.min.js
index e96ae83b..9942ccf3 100644
--- a/lib/mejs/mediaelementplayer.min.js
+++ b/lib/mejs/mediaelementplayer.min.js
@@ -1,109 +1,35 @@
 /*!
- * MediaElementPlayer
- * http://mediaelementjs.com/
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
  *
- * Creates a controller bar for HTML5 <video> add <audio> tags
- * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper)
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
  *
- * Copyright 2010-2013, John Dyer (http://j.hn/)
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
  * License: MIT
  *
- */if(typeof jQuery!="undefined")mejs.$=jQuery;else if(typeof ender!="undefined")mejs.$=ender;
-(function(f){mejs.MepDefaults={poster:"",showPosterWhenEnded:false,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:30,defaultSeekBackwardInterval:function(a){return a.duration*0.05},defaultSeekForwardInterval:function(a){return a.duration*0.05},setDimensions:true,audioWidth:-1,audioHeight:-1,startVolume:0.8,loop:false,autoRewind:true,enableAutosize:true,alwaysShowHours:false,showTimecodeFrameCount:false,framesPerSecond:25,autosizeProgress:true,
-alwaysShowControls:false,hideVideoControlsOnLoad:false,clickToPlayPause:true,iPadUseNativeControls:false,iPhoneUseNativeControls:false,AndroidUseNativeControls:false,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:true,enableKeyboard:true,pauseOtherPlayers:true,keyActions:[{keys:[32,179],action:function(a,b){b.paused||b.ended?a.play():a.pause()}},{keys:[38],action:function(a,b){a.container.find(".mejs-volume-slider").css("display","block");if(a.isVideo){a.showControls();
-a.startControlsTimer()}b.setVolume(Math.min(b.volume+0.1,1))}},{keys:[40],action:function(a,b){a.container.find(".mejs-volume-slider").css("display","block");if(a.isVideo){a.showControls();a.startControlsTimer()}b.setVolume(Math.max(b.volume-0.1,0))}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){if(a.isVideo){a.showControls();a.startControlsTimer()}var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,
-b){if(!isNaN(b.duration)&&b.duration>0){if(a.isVideo){a.showControls();a.startControlsTimer()}var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a){if(typeof a.enterFullScreen!="undefined")a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{keys:[77],action:function(a){a.container.find(".mejs-volume-slider").css("display","block");if(a.isVideo){a.showControls();a.startControlsTimer()}a.media.muted?a.setMuted(false):
-a.setMuted(true)}}]};mejs.mepIndex=0;mejs.players={};mejs.MediaElementPlayer=function(a,b){if(!(this instanceof mejs.MediaElementPlayer))return new mejs.MediaElementPlayer(a,b);this.$media=this.$node=f(a);this.node=this.media=this.$media[0];if(typeof this.node.player!="undefined")return this.node.player;else this.node.player=this;if(typeof b=="undefined")b=this.$node.data("mejsoptions");this.options=f.extend({},mejs.MepDefaults,b);this.id="mep_"+mejs.mepIndex++;mejs.players[this.id]=this;this.init();
-return this};mejs.MediaElementPlayer.prototype={hasFocus:false,controlsAreVisible:true,init:function(){var a=this,b=mejs.MediaFeatures,c=f.extend(true,{},a.options,{success:function(d,g){a.meReady(d,g)},error:function(d){a.handleError(d)}}),e=a.media.tagName.toLowerCase();a.isDynamic=e!=="audio"&&e!=="video";a.isVideo=a.isDynamic?a.options.isVideo:e!=="audio"&&a.options.isVideo;if(b.isiPad&&a.options.iPadUseNativeControls||b.isiPhone&&a.options.iPhoneUseNativeControls){a.$media.attr("controls","controls");
-b.isiPad&&a.media.getAttribute("autoplay")!==null&&a.play()}else if(!(b.isAndroid&&a.options.AndroidUseNativeControls)){a.$media.removeAttr("controls");a.container=f('<div id="'+a.id+'" class="mejs-container '+(mejs.MediaFeatures.svg?"svg":"no-svg")+'"><div class="mejs-inner"><div class="mejs-mediaelement"></div><div class="mejs-layers"></div><div class="mejs-controls"></div><div class="mejs-clear"></div></div></div>').addClass(a.$media[0].className).insertBefore(a.$media);a.container.addClass((b.isAndroid?
-"mejs-android ":"")+(b.isiOS?"mejs-ios ":"")+(b.isiPad?"mejs-ipad ":"")+(b.isiPhone?"mejs-iphone ":"")+(a.isVideo?"mejs-video ":"mejs-audio "));if(b.isiOS){b=a.$media.clone();a.container.find(".mejs-mediaelement").append(b);a.$media.remove();a.$node=a.$media=b;a.node=a.media=b[0]}else a.container.find(".mejs-mediaelement").append(a.$media);a.controls=a.container.find(".mejs-controls");a.layers=a.container.find(".mejs-layers");b=a.isVideo?"video":"audio";e=b.substring(0,1).toUpperCase()+b.substring(1);
-a.width=a.options[b+"Width"]>0||a.options[b+"Width"].toString().indexOf("%")>-1?a.options[b+"Width"]:a.media.style.width!==""&&a.media.style.width!==null?a.media.style.width:a.media.getAttribute("width")!==null?a.$media.attr("width"):a.options["default"+e+"Width"];a.height=a.options[b+"Height"]>0||a.options[b+"Height"].toString().indexOf("%")>-1?a.options[b+"Height"]:a.media.style.height!==""&&a.media.style.height!==null?a.media.style.height:a.$media[0].getAttribute("height")!==null?a.$media.attr("height"):
-a.options["default"+e+"Height"];a.setPlayerSize(a.width,a.height);c.pluginWidth=a.width;c.pluginHeight=a.height}mejs.MediaElement(a.$media[0],c);typeof a.container!="undefined"&&a.controlsAreVisible&&a.container.trigger("controlsshown")},showControls:function(a){var b=this;a=typeof a=="undefined"||a;if(!b.controlsAreVisible){if(a){b.controls.css("visibility","visible").stop(true,true).fadeIn(200,function(){b.controlsAreVisible=true;b.container.trigger("controlsshown")});b.container.find(".mejs-control").css("visibility",
-"visible").stop(true,true).fadeIn(200,function(){b.controlsAreVisible=true})}else{b.controls.css("visibility","visible").css("display","block");b.container.find(".mejs-control").css("visibility","visible").css("display","block");b.controlsAreVisible=true;b.container.trigger("controlsshown")}b.setControlsSize()}},hideControls:function(a){var b=this;a=typeof a=="undefined"||a;if(!(!b.controlsAreVisible||b.options.alwaysShowControls))if(a){b.controls.stop(true,true).fadeOut(200,function(){f(this).css("visibility",
-"hidden").css("display","block");b.controlsAreVisible=false;b.container.trigger("controlshidden")});b.container.find(".mejs-control").stop(true,true).fadeOut(200,function(){f(this).css("visibility","hidden").css("display","block")})}else{b.controls.css("visibility","hidden").css("display","block");b.container.find(".mejs-control").css("visibility","hidden").css("display","block");b.controlsAreVisible=false;b.container.trigger("controlshidden")}},controlsTimer:null,startControlsTimer:function(a){var b=
-this;a=typeof a!="undefined"?a:1500;b.killControlsTimer("start");b.controlsTimer=setTimeout(function(){b.hideControls();b.killControlsTimer("hide")},a)},killControlsTimer:function(){if(this.controlsTimer!==null){clearTimeout(this.controlsTimer);delete this.controlsTimer;this.controlsTimer=null}},controlsEnabled:true,disableControls:function(){this.killControlsTimer();this.hideControls(false);this.controlsEnabled=false},enableControls:function(){this.showControls(false);this.controlsEnabled=true},
-meReady:function(a,b){var c=this,e=mejs.MediaFeatures,d=b.getAttribute("autoplay");d=!(typeof d=="undefined"||d===null||d==="false");var g;if(!c.created){c.created=true;c.media=a;c.domNode=b;if(!(e.isAndroid&&c.options.AndroidUseNativeControls)&&!(e.isiPad&&c.options.iPadUseNativeControls)&&!(e.isiPhone&&c.options.iPhoneUseNativeControls)){c.buildposter(c,c.controls,c.layers,c.media);c.buildkeyboard(c,c.controls,c.layers,c.media);c.buildoverlays(c,c.controls,c.layers,c.media);c.findTracks();for(g in c.options.features){e=
-c.options.features[g];if(c["build"+e])try{c["build"+e](c,c.controls,c.layers,c.media)}catch(k){}}c.container.trigger("controlsready");c.setPlayerSize(c.width,c.height);c.setControlsSize();if(c.isVideo){if(mejs.MediaFeatures.hasTouch)c.$media.bind("touchstart",function(){if(c.controlsAreVisible)c.hideControls(false);else c.controlsEnabled&&c.showControls(false)});else{c.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause)c.media.paused?c.play():c.pause()};c.media.addEventListener("click",
-c.clickToPlayPauseCallback,false);c.container.bind("mouseenter mouseover",function(){if(c.controlsEnabled)if(!c.options.alwaysShowControls){c.killControlsTimer("enter");c.showControls();c.startControlsTimer(2500)}}).bind("mousemove",function(){if(c.controlsEnabled){c.controlsAreVisible||c.showControls();c.options.alwaysShowControls||c.startControlsTimer(2500)}}).bind("mouseleave",function(){c.controlsEnabled&&!c.media.paused&&!c.options.alwaysShowControls&&c.startControlsTimer(1E3)})}c.options.hideVideoControlsOnLoad&&
-c.hideControls(false);d&&!c.options.alwaysShowControls&&c.hideControls();c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(j){if(c.options.videoHeight<=0&&c.domNode.getAttribute("height")===null&&!isNaN(j.target.videoHeight)){c.setPlayerSize(j.target.videoWidth,j.target.videoHeight);c.setControlsSize();c.media.setVideoSize(j.target.videoWidth,j.target.videoHeight)}},false)}a.addEventListener("play",function(){for(var j in mejs.players){var m=mejs.players[j];m.id!=c.id&&
-c.options.pauseOtherPlayers&&!m.paused&&!m.ended&&m.pause();m.hasFocus=false}c.hasFocus=true},false);c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0)}catch(j){}c.media.pause();c.setProgressRail&&c.setProgressRail();c.setCurrentRail&&c.setCurrentRail();if(c.options.loop)c.play();else!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()},false);c.media.addEventListener("loadedmetadata",function(){c.updateDuration&&c.updateDuration();c.updateCurrent&&
-c.updateCurrent();if(!c.isFullScreen){c.setPlayerSize(c.width,c.height);c.setControlsSize()}},false);setTimeout(function(){c.setPlayerSize(c.width,c.height);c.setControlsSize()},50);c.globalBind("resize",function(){c.isFullScreen||mejs.MediaFeatures.hasTrueNativeFullScreen&&document.webkitIsFullScreen||c.setPlayerSize(c.width,c.height);c.setControlsSize()});c.media.pluginType=="youtube"&&c.options.autoplay&&c.container.find(".mejs-overlay-play").hide()}d&&a.pluginType=="native"&&c.play();if(c.options.success)typeof c.options.success==
-"string"?window[c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)}},handleError:function(a){this.controls.hide();this.options.error&&this.options.error(a)},setPlayerSize:function(a,b){if(!this.options.setDimensions)return false;if(typeof a!="undefined")this.width=a;if(typeof b!="undefined")this.height=b;if(this.height.toString().indexOf("%")>0||this.$node.css("max-width")==="100%"||this.$node[0].currentStyle&&this.$node[0].currentStyle.maxWidth==="100%"){var c=this.isVideo?
-this.media.videoWidth&&this.media.videoWidth>0?this.media.videoWidth:this.media.getAttribute("width")!==null?this.media.getAttribute("width"):this.options.defaultVideoWidth:this.options.defaultAudioWidth,e=this.isVideo?this.media.videoHeight&&this.media.videoHeight>0?this.media.videoHeight:this.media.getAttribute("height")!==null?this.media.getAttribute("height"):this.options.defaultVideoHeight:this.options.defaultAudioHeight,d=this.container.parent().closest(":visible").width(),g=this.container.parent().closest(":visible").height();
-c=this.isVideo||!this.options.autosizeProgress?parseInt(d*e/c,10):e;if(isNaN(c)||g!=0&&c>g)c=g;if(this.container.parent()[0].tagName.toLowerCase()==="body"){d=f(window).width();c=f(window).height()}if(c!=0&&d!=0){this.container.width(d).height(c);this.$media.add(this.container.find(".mejs-shim")).width("100%").height("100%");this.isVideo&&this.media.setVideoSize&&this.media.setVideoSize(d,c);this.layers.children(".mejs-layer").width("100%").height("100%")}}else{this.container.width(this.width).height(this.height);
-this.layers.children(".mejs-layer").width(this.width).height(this.height)}d=this.layers.find(".mejs-overlay-play");g=d.find(".mejs-overlay-button");d.height(this.container.height()-this.controls.height());g.css("margin-top","-"+(g.height()/2-this.controls.height()/2).toString()+"px")},setControlsSize:function(){var a=0,b=0,c=this.controls.find(".mejs-time-rail"),e=this.controls.find(".mejs-time-total");this.controls.find(".mejs-time-current");this.controls.find(".mejs-time-loaded");var d=c.siblings(),
-g=d.last(),k=null;if(!(!this.container.is(":visible")||!c.length||!c.is(":visible"))){if(this.options&&!this.options.autosizeProgress)b=parseInt(c.css("width"));if(b===0||!b){d.each(function(){var j=f(this);if(j.css("position")!="absolute"&&j.is(":visible"))a+=f(this).outerWidth(true)});b=this.controls.width()-a-(c.outerWidth(true)-c.width())}do{c.width(b);e.width(b-(e.outerWidth(true)-e.width()));if(g.css("position")!="absolute"){k=g.position();b--}}while(k!=null&&k.top>0&&b>0);this.setProgressRail&&
-this.setProgressRail();this.setCurrentRail&&this.setCurrentRail()}},buildposter:function(a,b,c,e){var d=f('<div class="mejs-poster mejs-layer"></div>').appendTo(c);b=a.$media.attr("poster");if(a.options.poster!=="")b=a.options.poster;b!==""&&b!=null?this.setPoster(b):d.hide();e.addEventListener("play",function(){d.hide()},false);a.options.showPosterWhenEnded&&a.options.autoRewind&&e.addEventListener("ended",function(){d.show()},false)},setPoster:function(a){var b=this.container.find(".mejs-poster"),
-c=b.find("img");if(c.length==0)c=f('<img width="100%" height="100%" />').appendTo(b);c.attr("src",a);b.css({"background-image":"url("+a+")"})},buildoverlays:function(a,b,c,e){var d=this;if(a.isVideo){var g=f('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>').hide().appendTo(c),k=f('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error"></div></div>').hide().appendTo(c),j=f('<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button"></div></div>').appendTo(c).bind("click",
-function(){d.options.clickToPlayPause&&e.paused&&e.play()});e.addEventListener("play",function(){j.hide();g.hide();b.find(".mejs-time-buffering").hide();k.hide()},false);e.addEventListener("playing",function(){j.hide();g.hide();b.find(".mejs-time-buffering").hide();k.hide()},false);e.addEventListener("seeking",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("seeked",function(){g.hide();b.find(".mejs-time-buffering").hide()},false);e.addEventListener("pause",function(){mejs.MediaFeatures.isiPhone||
-j.show()},false);e.addEventListener("waiting",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("loadeddata",function(){g.show();b.find(".mejs-time-buffering").show()},false);e.addEventListener("canplay",function(){g.hide();b.find(".mejs-time-buffering").hide()},false);e.addEventListener("error",function(){g.hide();b.find(".mejs-time-buffering").hide();k.show();k.find("mejs-overlay-error").html("Error loading this resource")},false);e.addEventListener("keydown",
-function(m){d.onkeydown(a,e,m)},false)}},buildkeyboard:function(a,b,c,e){var d=this;d.globalBind("keydown",function(g){return d.onkeydown(a,e,g)});d.globalBind("click",function(g){a.hasFocus=f(g.target).closest(".mejs-container").length!=0})},onkeydown:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var e=0,d=a.options.keyActions.length;e<d;e++)for(var g=a.options.keyActions[e],k=0,j=g.keys.length;k<j;k++)if(c.keyCode==g.keys[k]){typeof c.preventDefault=="function"&&c.preventDefault();
-g.action(a,b,c.keyCode);return false}return true},findTracks:function(){var a=this,b=a.$media.find("track");a.tracks=[];b.each(function(c,e){e=f(e);a.tracks.push({srclang:e.attr("srclang")?e.attr("srclang").toLowerCase():"",src:e.attr("src"),kind:e.attr("kind"),label:e.attr("label")||"",entries:[],isLoaded:false})})},changeSkin:function(a){this.container[0].className="mejs-container "+a;this.setPlayerSize(this.width,this.height);this.setControlsSize()},play:function(){this.load();this.media.play()},
-pause:function(){try{this.media.pause()}catch(a){}},load:function(){this.isLoaded||this.media.load();this.isLoaded=true},setMuted:function(a){this.media.setMuted(a)},setCurrentTime:function(a){this.media.setCurrentTime(a)},getCurrentTime:function(){return this.media.currentTime},setVolume:function(a){this.media.setVolume(a)},getVolume:function(){return this.media.volume},setSrc:function(a){this.media.setSrc(a)},remove:function(){var a,b;for(a in this.options.features){b=this.options.features[a];if(this["clean"+
-b])try{this["clean"+b](this)}catch(c){}}if(this.isDynamic)this.$node.insertBefore(this.container);else{this.$media.prop("controls",true);this.$node.clone().insertBefore(this.container).show();this.$node.remove()}this.media.pluginType!=="native"&&this.media.remove();delete mejs.players[this.id];typeof this.container=="object"&&this.container.remove();this.globalUnbind();delete this.node.player}};(function(){function a(c,e){var d={d:[],w:[]};f.each((c||"").split(" "),function(g,k){var j=k+"."+e;if(j.indexOf(".")===
-0){d.d.push(j);d.w.push(j)}else d[b.test(k)?"w":"d"].push(j)});d.d=d.d.join(" ");d.w=d.w.join(" ");return d}var b=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;mejs.MediaElementPlayer.prototype.globalBind=function(c,e,d){c=a(c,this.id);c.d&&f(document).bind(c.d,e,d);c.w&&f(window).bind(c.w,e,d)};mejs.MediaElementPlayer.prototype.globalUnbind=function(c,e){c=a(c,this.id);c.d&&f(document).unbind(c.d,e);c.w&&f(window).unbind(c.w,e)}})();
-if(typeof f!="undefined"){f.fn.mediaelementplayer=function(a){a===false?this.each(function(){var b=f(this).data("mediaelementplayer");b&&b.remove();f(this).removeData("mediaelementplayer")}):this.each(function(){f(this).data("mediaelementplayer",new mejs.MediaElementPlayer(this,a))});return this};f(document).ready(function(){f(".mejs-player").mediaelementplayer()})}window.MediaElementPlayer=mejs.MediaElementPlayer})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{playpauseText:mejs.i18n.t("Play/Pause")});f.extend(MediaElementPlayer.prototype,{buildplaypause:function(a,b,c,e){var d=f('<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="'+this.id+'" title="'+this.options.playpauseText+'" aria-label="'+this.options.playpauseText+'"></button></div>').appendTo(b).click(function(g){g.preventDefault();e.paused?e.play():e.pause();return false});e.addEventListener("play",function(){d.removeClass("mejs-play").addClass("mejs-pause")},
-false);e.addEventListener("playing",function(){d.removeClass("mejs-play").addClass("mejs-pause")},false);e.addEventListener("pause",function(){d.removeClass("mejs-pause").addClass("mejs-play")},false);e.addEventListener("paused",function(){d.removeClass("mejs-pause").addClass("mejs-play")},false)}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{stopText:"Stop"});f.extend(MediaElementPlayer.prototype,{buildstop:function(a,b,c,e){f('<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="'+this.id+'" title="'+this.options.stopText+'" aria-label="'+this.options.stopText+'"></button></div>').appendTo(b).click(function(){e.paused||e.pause();if(e.currentTime>0){e.setCurrentTime(0);e.pause();b.find(".mejs-time-current").width("0px");b.find(".mejs-time-handle").css("left",
-"0px");b.find(".mejs-time-float-current").html(mejs.Utility.secondsToTimeCode(0));b.find(".mejs-currenttime").html(mejs.Utility.secondsToTimeCode(0));c.find(".mejs-poster").show()}})}})})(mejs.$);
-(function(f){f.extend(MediaElementPlayer.prototype,{buildprogress:function(a,b,c,e){f('<div class="mejs-time-rail"><span class="mejs-time-total"><span class="mejs-time-buffering"></span><span class="mejs-time-loaded"></span><span class="mejs-time-current"></span><span class="mejs-time-handle"></span><span class="mejs-time-float"><span class="mejs-time-float-current">00:00</span><span class="mejs-time-float-corner"></span></span></span></div>').appendTo(b);b.find(".mejs-time-buffering").hide();var d=
-this,g=b.find(".mejs-time-total");c=b.find(".mejs-time-loaded");var k=b.find(".mejs-time-current"),j=b.find(".mejs-time-handle"),m=b.find(".mejs-time-float"),q=b.find(".mejs-time-float-current"),p=function(h){h=h.originalEvent.changedTouches?h.originalEvent.changedTouches[0].pageX:h.pageX;var l=g.offset(),r=g.outerWidth(true),n=0,o=n=0;if(e.duration){if(h<l.left)h=l.left;else if(h>r+l.left)h=r+l.left;o=h-l.left;n=o/r;n=n<=0.02?0:n*e.duration;t&&n!==e.currentTime&&e.setCurrentTime(n);if(!mejs.MediaFeatures.hasTouch){m.css("left",
-o);q.html(mejs.Utility.secondsToTimeCode(n));m.show()}}},t=false;g.bind("mousedown touchstart",function(h){if(h.which===1||h.which===0){t=true;p(h);d.globalBind("mousemove.dur touchmove.dur",function(l){p(l)});d.globalBind("mouseup.dur touchend.dur",function(){t=false;m.hide();d.globalUnbind(".dur")});return false}}).bind("mouseenter",function(){d.globalBind("mousemove.dur",function(h){p(h)});mejs.MediaFeatures.hasTouch||m.show()}).bind("mouseleave",function(){if(!t){d.globalUnbind(".dur");m.hide()}});
-e.addEventListener("progress",function(h){a.setProgressRail(h);a.setCurrentRail(h)},false);e.addEventListener("timeupdate",function(h){a.setProgressRail(h);a.setCurrentRail(h)},false);d.loaded=c;d.total=g;d.current=k;d.handle=j},setProgressRail:function(a){var b=a!=undefined?a.target:this.media,c=null;if(b&&b.buffered&&b.buffered.length>0&&b.buffered.end&&b.duration)c=b.buffered.end(0)/b.duration;else if(b&&b.bytesTotal!=undefined&&b.bytesTotal>0&&b.bufferedBytes!=undefined)c=b.bufferedBytes/b.bytesTotal;
-else if(a&&a.lengthComputable&&a.total!=0)c=a.loaded/a.total;if(c!==null){c=Math.min(1,Math.max(0,c));this.loaded&&this.total&&this.loaded.width(this.total.width()*c)}},setCurrentRail:function(){if(this.media.currentTime!=undefined&&this.media.duration)if(this.total&&this.handle){var a=Math.round(this.total.width()*this.media.currentTime/this.media.duration),b=a-Math.round(this.handle.outerWidth(true)/2);this.current.width(a);this.handle.css("left",b)}}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{duration:-1,timeAndDurationSeparator:"<span> | </span>"});f.extend(MediaElementPlayer.prototype,{buildcurrent:function(a,b,c,e){f('<div class="mejs-time"><span class="mejs-currenttime">'+(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00")+"</span></div>").appendTo(b);this.currenttime=this.controls.find(".mejs-currenttime");e.addEventListener("timeupdate",function(){a.updateCurrent()},false)},buildduration:function(a,b,
-c,e){if(b.children().last().find(".mejs-currenttime").length>0)f(this.options.timeAndDurationSeparator+'<span class="mejs-duration">'+(this.options.duration>0?mejs.Utility.secondsToTimeCode(this.options.duration,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25):(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span>").appendTo(b.find(".mejs-time"));else{b.find(".mejs-currenttime").parent().addClass("mejs-currenttime-container");
-f('<div class="mejs-time mejs-duration-container"><span class="mejs-duration">'+(this.options.duration>0?mejs.Utility.secondsToTimeCode(this.options.duration,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25):(a.options.alwaysShowHours?"00:":"")+(a.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span></div>").appendTo(b)}this.durationD=this.controls.find(".mejs-duration");e.addEventListener("timeupdate",function(){a.updateDuration()},
-false)},updateCurrent:function(){if(this.currenttime)this.currenttime.html(mejs.Utility.secondsToTimeCode(this.media.currentTime,this.options.alwaysShowHours||this.media.duration>3600,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25))},updateDuration:function(){this.container.toggleClass("mejs-long-video",this.media.duration>3600);if(this.durationD&&(this.options.duration>0||this.media.duration))this.durationD.html(mejs.Utility.secondsToTimeCode(this.options.duration>0?this.options.duration:
-this.media.duration,this.options.alwaysShowHours,this.options.showTimecodeFrameCount,this.options.framesPerSecond||25))}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{muteText:mejs.i18n.t("Mute Toggle"),hideVolumeOnTouchDevices:true,audioVolume:"horizontal",videoVolume:"vertical"});f.extend(MediaElementPlayer.prototype,{buildvolume:function(a,b,c,e){if(!((mejs.MediaFeatures.isAndroid||mejs.MediaFeatures.isiOS)&&this.options.hideVolumeOnTouchDevices)){var d=this,g=d.isVideo?d.options.videoVolume:d.options.audioVolume,k=g=="horizontal"?f('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+
-d.id+'" title="'+d.options.muteText+'" aria-label="'+d.options.muteText+'"></button></div><div class="mejs-horizontal-volume-slider"><div class="mejs-horizontal-volume-total"></div><div class="mejs-horizontal-volume-current"></div><div class="mejs-horizontal-volume-handle"></div></div>').appendTo(b):f('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+d.id+'" title="'+d.options.muteText+'" aria-label="'+d.options.muteText+'"></button><div class="mejs-volume-slider"><div class="mejs-volume-total"></div><div class="mejs-volume-current"></div><div class="mejs-volume-handle"></div></div></div>').appendTo(b),
-j=d.container.find(".mejs-volume-slider, .mejs-horizontal-volume-slider"),m=d.container.find(".mejs-volume-total, .mejs-horizontal-volume-total"),q=d.container.find(".mejs-volume-current, .mejs-horizontal-volume-current"),p=d.container.find(".mejs-volume-handle, .mejs-horizontal-volume-handle"),t=function(n,o){if(!j.is(":visible")&&typeof o=="undefined"){j.show();t(n,true);j.hide()}else{n=Math.max(0,n);n=Math.min(n,1);n==0?k.removeClass("mejs-mute").addClass("mejs-unmute"):k.removeClass("mejs-unmute").addClass("mejs-mute");
-if(g=="vertical"){var s=m.height(),u=m.position(),v=s-s*n;p.css("top",Math.round(u.top+v-p.height()/2));q.height(s-v);q.css("top",u.top+v)}else{s=m.width();u=m.position();s=s*n;p.css("left",Math.round(u.left+s-p.width()/2));q.width(Math.round(s))}}},h=function(n){var o=null,s=m.offset();if(g=="vertical"){o=m.height();parseInt(m.css("top").replace(/px/,""),10);o=(o-(n.pageY-s.top))/o;if(s.top==0||s.left==0)return}else{o=m.width();o=(n.pageX-s.left)/o}o=Math.max(0,o);o=Math.min(o,1);t(o);o==0?e.setMuted(true):
-e.setMuted(false);e.setVolume(o)},l=false,r=false;k.hover(function(){j.show();r=true},function(){r=false;!l&&g=="vertical"&&j.hide()});j.bind("mouseover",function(){r=true}).bind("mousedown",function(n){h(n);d.globalBind("mousemove.vol",function(o){h(o)});d.globalBind("mouseup.vol",function(){l=false;d.globalUnbind(".vol");!r&&g=="vertical"&&j.hide()});l=true;return false});k.find("button").click(function(){e.setMuted(!e.muted)});e.addEventListener("volumechange",function(){if(!l)if(e.muted){t(0);
-k.removeClass("mejs-mute").addClass("mejs-unmute")}else{t(e.volume);k.removeClass("mejs-unmute").addClass("mejs-mute")}},false);if(d.container.is(":visible")){t(a.options.startVolume);a.options.startVolume===0&&e.setMuted(true);e.pluginType==="native"&&e.setVolume(a.options.startVolume)}}}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{usePluginFullScreen:true,newWindowCallback:function(){return""},fullscreenText:mejs.i18n.t("Fullscreen")});f.extend(MediaElementPlayer.prototype,{isFullScreen:false,isNativeFullScreen:false,isInIframe:false,buildfullscreen:function(a,b,c,e){if(a.isVideo){a.isInIframe=window.location!=window.parent.location;mejs.MediaFeatures.hasTrueNativeFullScreen&&a.globalBind(mejs.MediaFeatures.fullScreenEventName,function(){if(a.isFullScreen)if(mejs.MediaFeatures.isFullScreen()){a.isNativeFullScreen=
-true;a.setControlsSize()}else{a.isNativeFullScreen=false;a.exitFullScreen()}});var d=this,g=f('<div class="mejs-button mejs-fullscreen-button"><button type="button" aria-controls="'+d.id+'" title="'+d.options.fullscreenText+'" aria-label="'+d.options.fullscreenText+'"></button></div>').appendTo(b);if(d.media.pluginType==="native"||!d.options.usePluginFullScreen&&!mejs.MediaFeatures.isFirefox)g.click(function(){mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||a.isFullScreen?
-a.exitFullScreen():a.enterFullScreen()});else{var k=null;if(function(){var h=document.createElement("x"),l=document.documentElement,r=window.getComputedStyle;if(!("pointerEvents"in h.style))return false;h.style.pointerEvents="auto";h.style.pointerEvents="x";l.appendChild(h);r=r&&r(h,"").pointerEvents==="auto";l.removeChild(h);return!!r}()&&!mejs.MediaFeatures.isOpera){var j=false,m=function(){if(j){for(var h in q)q[h].hide();g.css("pointer-events","");d.controls.css("pointer-events","");d.media.removeEventListener("click",
-d.clickToPlayPauseCallback);j=false}},q={};b=["top","left","right","bottom"];var p,t=function(){var h=g.offset().left-d.container.offset().left,l=g.offset().top-d.container.offset().top,r=g.outerWidth(true),n=g.outerHeight(true),o=d.container.width(),s=d.container.height();for(p in q)q[p].css({position:"absolute",top:0,left:0});q.top.width(o).height(l);q.left.width(h).height(n).css({top:l});q.right.width(o-h-r).height(n).css({top:l,left:h+r});q.bottom.width(o).height(s-n-l).css({top:l+n})};d.globalBind("resize",
-function(){t()});p=0;for(c=b.length;p<c;p++)q[b[p]]=f('<div class="mejs-fullscreen-hover" />').appendTo(d.container).mouseover(m).hide();g.on("mouseover",function(){if(!d.isFullScreen){var h=g.offset(),l=a.container.offset();e.positionFullscreenButton(h.left-l.left,h.top-l.top,false);g.css("pointer-events","none");d.controls.css("pointer-events","none");d.media.addEventListener("click",d.clickToPlayPauseCallback);for(p in q)q[p].show();t();j=true}});e.addEventListener("fullscreenchange",function(){d.isFullScreen=
-!d.isFullScreen;d.isFullScreen?d.media.removeEventListener("click",d.clickToPlayPauseCallback):d.media.addEventListener("click",d.clickToPlayPauseCallback);m()});d.globalBind("mousemove",function(h){if(j){var l=g.offset();if(h.pageY<l.top||h.pageY>l.top+g.outerHeight(true)||h.pageX<l.left||h.pageX>l.left+g.outerWidth(true)){g.css("pointer-events","");d.controls.css("pointer-events","");j=false}}})}else g.on("mouseover",function(){if(k!==null){clearTimeout(k);delete k}var h=g.offset(),l=a.container.offset();
-e.positionFullscreenButton(h.left-l.left,h.top-l.top,true)}).on("mouseout",function(){if(k!==null){clearTimeout(k);delete k}k=setTimeout(function(){e.hideFullscreenButton()},1500)})}a.fullscreenBtn=g;d.globalBind("keydown",function(h){if((mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||d.isFullScreen)&&h.keyCode==27)a.exitFullScreen()})}},cleanfullscreen:function(a){a.exitFullScreen()},containerSizeTimeout:null,enterFullScreen:function(){var a=this;if(!(a.media.pluginType!==
-"native"&&(mejs.MediaFeatures.isFirefox||a.options.usePluginFullScreen))){f(document.documentElement).addClass("mejs-fullscreen");normalHeight=a.container.height();normalWidth=a.container.width();if(a.media.pluginType==="native")if(mejs.MediaFeatures.hasTrueNativeFullScreen){mejs.MediaFeatures.requestFullScreen(a.container[0]);a.isInIframe&&setTimeout(function c(){if(a.isNativeFullScreen){var e=(window.devicePixelRatio||1)*f(window).width(),d=screen.width;Math.abs(d-e)>d*0.0020?a.exitFullScreen():
-setTimeout(c,500)}},500)}else if(mejs.MediaFeatures.hasSemiNativeFullScreen){a.media.webkitEnterFullscreen();return}if(a.isInIframe){var b=a.options.newWindowCallback(this);if(b!=="")if(mejs.MediaFeatures.hasTrueNativeFullScreen)setTimeout(function(){if(!a.isNativeFullScreen){a.pause();window.open(b,a.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no")}},250);else{a.pause();window.open(b,a.id,"top=0,left=0,width="+screen.availWidth+
-",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no");return}}a.container.addClass("mejs-container-fullscreen").width("100%").height("100%");a.containerSizeTimeout=setTimeout(function(){a.container.css({width:"100%",height:"100%"});a.setControlsSize()},500);if(a.media.pluginType==="native")a.$media.width("100%").height("100%");else{a.container.find(".mejs-shim").width("100%").height("100%");a.media.setVideoSize(f(window).width(),f(window).height())}a.layers.children("div").width("100%").height("100%");
-a.fullscreenBtn&&a.fullscreenBtn.removeClass("mejs-fullscreen").addClass("mejs-unfullscreen");a.setControlsSize();a.isFullScreen=true;a.container.find(".mejs-captions-text").css("font-size",screen.width/a.width*1*100+"%");a.container.find(".mejs-captions-position").css("bottom","45px")}},exitFullScreen:function(){clearTimeout(this.containerSizeTimeout);if(this.media.pluginType!=="native"&&mejs.MediaFeatures.isFirefox)this.media.setFullscreen(false);else{if(mejs.MediaFeatures.hasTrueNativeFullScreen&&
-(mejs.MediaFeatures.isFullScreen()||this.isFullScreen))mejs.MediaFeatures.cancelFullScreen();f(document.documentElement).removeClass("mejs-fullscreen");this.container.removeClass("mejs-container-fullscreen").width(normalWidth).height(normalHeight);if(this.media.pluginType==="native")this.$media.width(normalWidth).height(normalHeight);else{this.container.find(".mejs-shim").width(normalWidth).height(normalHeight);this.media.setVideoSize(normalWidth,normalHeight)}this.layers.children("div").width(normalWidth).height(normalHeight);
-this.fullscreenBtn.removeClass("mejs-unfullscreen").addClass("mejs-fullscreen");this.setControlsSize();this.isFullScreen=false;this.container.find(".mejs-captions-text").css("font-size","");this.container.find(".mejs-captions-position").css("bottom","")}}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{speeds:["1.50","1.25","1.00","0.75"],defaultSpeed:"1.00"});f.extend(MediaElementPlayer.prototype,{buildspeed:function(a,b,c,e){if(this.media.pluginType=="native"){c='<div class="mejs-button mejs-speed-button"><button type="button">'+this.options.defaultSpeed+'x</button><div class="mejs-speed-selector"><ul>';var d;f.inArray(this.options.defaultSpeed,this.options.speeds)===-1&&this.options.speeds.push(this.options.defaultSpeed);this.options.speeds.sort(function(g,
-k){return parseFloat(k)-parseFloat(g)});for(d=0;d<this.options.speeds.length;d++){c+='<li><input type="radio" name="speed" value="'+this.options.speeds[d]+'" id="'+this.options.speeds[d]+'" ';if(this.options.speeds[d]==this.options.defaultSpeed){c+="checked=true ";c+='/><label for="'+this.options.speeds[d]+'" class="mejs-speed-selected">'+this.options.speeds[d]+"x</label></li>"}else c+='/><label for="'+this.options.speeds[d]+'">'+this.options.speeds[d]+"x</label></li>"}c+="</ul></div></div>";a.speedButton=
-f(c).appendTo(b);a.playbackspeed=this.options.defaultSpeed;a.speedButton.on("click","input[type=radio]",function(){a.playbackspeed=f(this).attr("value");e.playbackRate=parseFloat(a.playbackspeed);a.speedButton.find("button").text(a.playbackspeed+"x");a.speedButton.find(".mejs-speed-selected").removeClass("mejs-speed-selected");a.speedButton.find("input[type=radio]:checked").next().addClass("mejs-speed-selected")});b=a.speedButton.find(".mejs-speed-selector");b.height(this.speedButton.find(".mejs-speed-selector ul").outerHeight(true)+
-a.speedButton.find(".mejs-speed-translations").outerHeight(true));b.css("top",-1*b.height()+"px")}}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{startLanguage:"",tracksText:mejs.i18n.t("Captions/Subtitles"),hideCaptionsButtonWhenEmpty:true,toggleCaptionsButtonWhenOnlyOne:false,slidesSelector:""});f.extend(MediaElementPlayer.prototype,{hasChapters:false,buildtracks:function(a,b,c,e){if(a.tracks.length!==0){var d;if(this.domNode.textTracks)for(d=this.domNode.textTracks.length-1;d>=0;d--)this.domNode.textTracks[d].mode="hidden";a.chapters=f('<div class="mejs-chapters mejs-layer"></div>').prependTo(c).hide();
-a.captions=f('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover"><span class="mejs-captions-text"></span></div></div>').prependTo(c).hide();a.captionsText=a.captions.find(".mejs-captions-text");a.captionsButton=f('<div class="mejs-button mejs-captions-button"><button type="button" aria-controls="'+this.id+'" title="'+this.options.tracksText+'" aria-label="'+this.options.tracksText+'"></button><div class="mejs-captions-selector"><ul><li><input type="radio" name="'+
-a.id+'_captions" id="'+a.id+'_captions_none" value="none" checked="checked" /><label for="'+a.id+'_captions_none">'+mejs.i18n.t("None")+"</label></li></ul></div></div>").appendTo(b);for(d=b=0;d<a.tracks.length;d++)a.tracks[d].kind=="subtitles"&&b++;if(this.options.toggleCaptionsButtonWhenOnlyOne&&b==1)a.captionsButton.on("click",function(){lang=a.selectedTrack===null?a.tracks[0].srclang:"none";a.setTrack(lang)});else{a.captionsButton.on("mouseenter focusin",function(){f(this).find(".mejs-captions-selector").css("visibility",
-"visible")}).on("click","input[type=radio]",function(){lang=this.value;a.setTrack(lang)});a.captionsButton.on("mouseleave focusout",function(){f(this).find(".mejs-captions-selector").css("visibility","hidden")})}a.options.alwaysShowControls?a.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover"):a.container.bind("controlsshown",function(){a.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}).bind("controlshidden",function(){e.paused||a.container.find(".mejs-captions-position").removeClass("mejs-captions-position-hover")});
-a.trackToLoad=-1;a.selectedTrack=null;a.isLoadingTrack=false;for(d=0;d<a.tracks.length;d++)a.tracks[d].kind=="subtitles"&&a.addTrackButton(a.tracks[d].srclang,a.tracks[d].label);a.loadNextTrack();e.addEventListener("timeupdate",function(){a.displayCaptions()},false);if(a.options.slidesSelector!==""){a.slidesContainer=f(a.options.slidesSelector);e.addEventListener("timeupdate",function(){a.displaySlides()},false)}e.addEventListener("loadedmetadata",function(){a.displayChapters()},false);a.container.hover(function(){if(a.hasChapters){a.chapters.css("visibility",
-"visible");a.chapters.fadeIn(200).height(a.chapters.find(".mejs-chapter").outerHeight())}},function(){a.hasChapters&&!e.paused&&a.chapters.fadeOut(200,function(){f(this).css("visibility","hidden");f(this).css("display","block")})});a.node.getAttribute("autoplay")!==null&&a.chapters.css("visibility","hidden")}},setTrack:function(a){var b;if(a=="none"){this.selectedTrack=null;this.captionsButton.removeClass("mejs-captions-enabled")}else for(b=0;b<this.tracks.length;b++)if(this.tracks[b].srclang==a){this.selectedTrack===
-null&&this.captionsButton.addClass("mejs-captions-enabled");this.selectedTrack=this.tracks[b];this.captions.attr("lang",this.selectedTrack.srclang);this.displayCaptions();break}},loadNextTrack:function(){this.trackToLoad++;if(this.trackToLoad<this.tracks.length){this.isLoadingTrack=true;this.loadTrack(this.trackToLoad)}else{this.isLoadingTrack=false;this.checkForTracks()}},loadTrack:function(a){var b=this,c=b.tracks[a];f.ajax({url:c.src,dataType:"text",success:function(e){c.entries=typeof e=="string"&&
-/<tt\s+xml/ig.exec(e)?mejs.TrackFormatParser.dfxp.parse(e):mejs.TrackFormatParser.webvtt.parse(e);c.isLoaded=true;b.enableTrackButton(c.srclang,c.label);b.loadNextTrack();c.kind=="chapters"&&b.media.addEventListener("play",function(){b.media.duration>0&&b.displayChapters(c)},false);c.kind=="slides"&&b.setupSlides(c)},error:function(){b.loadNextTrack()}})},enableTrackButton:function(a,b){if(b==="")b=mejs.language.codes[a]||a;this.captionsButton.find("input[value="+a+"]").prop("disabled",false).siblings("label").html(b);
-this.options.startLanguage==a&&f("#"+this.id+"_captions_"+a).prop("checked",true).trigger("click");this.adjustLanguageBox()},addTrackButton:function(a,b){if(b==="")b=mejs.language.codes[a]||a;this.captionsButton.find("ul").append(f('<li><input type="radio" name="'+this.id+'_captions" id="'+this.id+"_captions_"+a+'" value="'+a+'" disabled="disabled" /><label for="'+this.id+"_captions_"+a+'">'+b+" (loading)</label></li>"));this.adjustLanguageBox();this.container.find(".mejs-captions-translations option[value="+
-a+"]").remove()},adjustLanguageBox:function(){this.captionsButton.find(".mejs-captions-selector").height(this.captionsButton.find(".mejs-captions-selector ul").outerHeight(true)+this.captionsButton.find(".mejs-captions-translations").outerHeight(true))},checkForTracks:function(){var a=false;if(this.options.hideCaptionsButtonWhenEmpty){for(i=0;i<this.tracks.length;i++)if(this.tracks[i].kind=="subtitles"){a=true;break}if(!a){this.captionsButton.hide();this.setControlsSize()}}},displayCaptions:function(){if(typeof this.tracks!=
-"undefined"){var a,b=this.selectedTrack;if(b!==null&&b.isLoaded)for(a=0;a<b.entries.times.length;a++)if(this.media.currentTime>=b.entries.times[a].start&&this.media.currentTime<=b.entries.times[a].stop){this.captionsText.html(b.entries.text[a]).attr("class","mejs-captions-text "+(b.entries.times[a].identifier||""));this.captions.show().height(0);return}this.captions.hide()}},setupSlides:function(a){this.slides=a;this.slides.entries.imgs=[this.slides.entries.text.length];this.showSlide(0)},showSlide:function(a){if(!(typeof this.tracks==
-"undefined"||typeof this.slidesContainer=="undefined")){var b=this,c=b.slides.entries.text[a],e=b.slides.entries.imgs[a];if(typeof e=="undefined"||typeof e.fadeIn=="undefined")b.slides.entries.imgs[a]=e=f('<img src="'+c+'">').on("load",function(){e.appendTo(b.slidesContainer).hide().fadeIn().siblings(":visible").fadeOut()});else!e.is(":visible")&&!e.is(":animated")&&e.fadeIn().siblings(":visible").fadeOut()}},displaySlides:function(){if(typeof this.slides!="undefined"){var a=this.slides,b;for(b=0;b<
-a.entries.times.length;b++)if(this.media.currentTime>=a.entries.times[b].start&&this.media.currentTime<=a.entries.times[b].stop){this.showSlide(b);break}}},displayChapters:function(){var a;for(a=0;a<this.tracks.length;a++)if(this.tracks[a].kind=="chapters"&&this.tracks[a].isLoaded){this.drawChapters(this.tracks[a]);this.hasChapters=true;break}},drawChapters:function(a){var b=this,c,e,d=e=0;b.chapters.empty();for(c=0;c<a.entries.times.length;c++){e=a.entries.times[c].stop-a.entries.times[c].start;
-e=Math.floor(e/b.media.duration*100);if(e+d>100||c==a.entries.times.length-1&&e+d<100)e=100-d;b.chapters.append(f('<div class="mejs-chapter" rel="'+a.entries.times[c].start+'" style="left: '+d.toString()+"%;width: "+e.toString()+'%;"><div class="mejs-chapter-block'+(c==a.entries.times.length-1?" mejs-chapter-block-last":"")+'"><span class="ch-title">'+a.entries.text[c]+'</span><span class="ch-time">'+mejs.Utility.secondsToTimeCode(a.entries.times[c].start)+"&ndash;"+mejs.Utility.secondsToTimeCode(a.entries.times[c].stop)+
-"</span></div></div>"));d+=e}b.chapters.find("div.mejs-chapter").click(function(){b.media.setCurrentTime(parseFloat(f(this).attr("rel")));b.media.paused&&b.media.play()});b.chapters.show()}});mejs.language={codes:{af:"Afrikaans",sq:"Albanian",ar:"Arabic",be:"Belarusian",bg:"Bulgarian",ca:"Catalan",zh:"Chinese","zh-cn":"Chinese Simplified","zh-tw":"Chinese Traditional",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",et:"Estonian",fl:"Filipino",fi:"Finnish",fr:"French",gl:"Galician",de:"German",
-el:"Greek",ht:"Haitian Creole",iw:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",ko:"Korean",lv:"Latvian",lt:"Lithuanian",mk:"Macedonian",ms:"Malay",mt:"Maltese",no:"Norwegian",fa:"Persian",pl:"Polish",pt:"Portuguese",ro:"Romanian",ru:"Russian",sr:"Serbian",sk:"Slovak",sl:"Slovenian",es:"Spanish",sw:"Swahili",sv:"Swedish",tl:"Tagalog",th:"Thai",tr:"Turkish",uk:"Ukrainian",vi:"Vietnamese",cy:"Welsh",yi:"Yiddish"}};mejs.TrackFormatParser={webvtt:{pattern_timecode:/^((?:[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})?)(.*)$/,
-parse:function(a){var b=0;a=mejs.TrackFormatParser.split2(a,/\r?\n/);for(var c={text:[],times:[]},e,d,g;b<a.length;b++){if((e=this.pattern_timecode.exec(a[b]))&&b<a.length){if(b-1>=0&&a[b-1]!=="")g=a[b-1];b++;d=a[b];for(b++;a[b]!==""&&b<a.length;){d=d+"\n"+a[b];b++}d=f.trim(d).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>");c.text.push(d);c.times.push({identifier:g,start:mejs.Utility.convertSMPTEtoSeconds(e[1])===0?0.2:mejs.Utility.convertSMPTEtoSeconds(e[1]),
-stop:mejs.Utility.convertSMPTEtoSeconds(e[3]),settings:e[5]})}g=""}return c}},dfxp:{parse:function(a){a=f(a).filter("tt");var b=0;b=a.children("div").eq(0);var c=b.find("p");b=a.find("#"+b.attr("style"));var e,d;a={text:[],times:[]};if(b.length){d=b.removeAttr("id").get(0).attributes;if(d.length){e={};for(b=0;b<d.length;b++)e[d[b].name.split(":")[1]]=d[b].value}}for(b=0;b<c.length;b++){var g;d={start:null,stop:null,style:null};if(c.eq(b).attr("begin"))d.start=mejs.Utility.convertSMPTEtoSeconds(c.eq(b).attr("begin"));
-if(!d.start&&c.eq(b-1).attr("end"))d.start=mejs.Utility.convertSMPTEtoSeconds(c.eq(b-1).attr("end"));if(c.eq(b).attr("end"))d.stop=mejs.Utility.convertSMPTEtoSeconds(c.eq(b).attr("end"));if(!d.stop&&c.eq(b+1).attr("begin"))d.stop=mejs.Utility.convertSMPTEtoSeconds(c.eq(b+1).attr("begin"));if(e){g="";for(var k in e)g+=k+":"+e[k]+";"}if(g)d.style=g;if(d.start===0)d.start=0.2;a.times.push(d);d=f.trim(c.eq(b).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,
-"<a href='$1' target='_blank'>$1</a>");a.text.push(d);if(a.times.start===0)a.times.start=2}return a}},split2:function(a,b){return a.split(b)}};if("x\n\ny".split(/\n/gi).length!=3)mejs.TrackFormatParser.split2=function(a,b){var c=[],e="",d;for(d=0;d<a.length;d++){e+=a.substring(d,d+1);if(b.test(e)){c.push(e.replace(b,""));e=""}}c.push(e);return c}})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{contextMenuItems:[{render:function(a){if(typeof a.enterFullScreen=="undefined")return null;return a.isFullScreen?mejs.i18n.t("Turn off Fullscreen"):mejs.i18n.t("Go Fullscreen")},click:function(a){a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{render:function(a){return a.media.muted?mejs.i18n.t("Unmute"):mejs.i18n.t("Mute")},click:function(a){a.media.muted?a.setMuted(false):a.setMuted(true)}},{isSeparator:true},{render:function(){return mejs.i18n.t("Download Video")},
-click:function(a){window.location.href=a.media.currentSrc}}]});f.extend(MediaElementPlayer.prototype,{buildcontextmenu:function(a){a.contextMenu=f('<div class="mejs-contextmenu"></div>').appendTo(f("body")).hide();a.container.bind("contextmenu",function(b){if(a.isContextMenuEnabled){b.preventDefault();a.renderContextMenu(b.clientX-1,b.clientY-1);return false}});a.container.bind("click",function(){a.contextMenu.hide()});a.contextMenu.bind("mouseleave",function(){a.startContextMenuTimer()})},cleancontextmenu:function(a){a.contextMenu.remove()},
-isContextMenuEnabled:true,enableContextMenu:function(){this.isContextMenuEnabled=true},disableContextMenu:function(){this.isContextMenuEnabled=false},contextMenuTimeout:null,startContextMenuTimer:function(){var a=this;a.killContextMenuTimer();a.contextMenuTimer=setTimeout(function(){a.hideContextMenu();a.killContextMenuTimer()},750)},killContextMenuTimer:function(){var a=this.contextMenuTimer;if(a!=null){clearTimeout(a);delete a}},hideContextMenu:function(){this.contextMenu.hide()},renderContextMenu:function(a,
-b){for(var c=this,e="",d=c.options.contextMenuItems,g=0,k=d.length;g<k;g++)if(d[g].isSeparator)e+='<div class="mejs-contextmenu-separator"></div>';else{var j=d[g].render(c);if(j!=null)e+='<div class="mejs-contextmenu-item" data-itemindex="'+g+'" id="element-'+Math.random()*1E6+'">'+j+"</div>"}c.contextMenu.empty().append(f(e)).css({top:b,left:a}).show();c.contextMenu.find(".mejs-contextmenu-item").each(function(){var m=f(this),q=parseInt(m.data("itemindex"),10),p=c.options.contextMenuItems[q];typeof p.show!=
-"undefined"&&p.show(m,c);m.click(function(){typeof p.click!="undefined"&&p.click(c);c.contextMenu.hide()})});setTimeout(function(){c.killControlsTimer("rev3")},100)}})})(mejs.$);
-(function(f){f.extend(mejs.MepDefaults,{postrollCloseText:mejs.i18n.t("Close")});f.extend(MediaElementPlayer.prototype,{buildpostroll:function(a,b,c){var e=this.container.find('link[rel="postroll"]').attr("href");if(typeof e!=="undefined"){a.postroll=f('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">'+this.options.postrollCloseText+'</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(c).hide();this.media.addEventListener("ended",
-function(){f.ajax({dataType:"html",url:e,success:function(d){c.find(".mejs-postroll-layer-content").html(d)}});a.postroll.show()},false)}}})})(mejs.$);
+ *//*!
+ * MediaElement.js
+ * http://www.mediaelementjs.com/
+ *
+ * Wrapper that mimics native HTML5 MediaElement (audio and video)
+ * using a variety of technologies (pure JavaScript, Flash, iframe)
+ *
+ * Copyright 2010-2017, John Dyer (http://j.hn/)
+ * License: MIT
+ *
+ */
+!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){},{}],2:[function(a,b,c){(function(c){var d="undefined"!=typeof c?c:"undefined"!=typeof window?window:{},e=a(1);if("undefined"!=typeof document)b.exports=document;else{var f=d["__GLOBAL_DOCUMENT_CACHE@4"];f||(f=d["__GLOBAL_DOCUMENT_CACHE@4"]=e),b.exports=f}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(a,b,c){(function(a){"undefined"!=typeof window?b.exports=window:"undefined"!=typeof a?b.exports=a:"undefined"!=typeof self?b.exports=self:b.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(6),g=d(f),h=a(14),i=a(21),j={lang:"en",en:h.EN};j.language=function(){for(var a=arguments.length,b=Array(a),c=0;a>c;c++)b[c]=arguments[c];if(null!==b&&void 0!==b&&b.length){if("string"!=typeof b[0])throw new TypeError("Language code must be a string value");if(!b[0].match(/^[a-z]{2}(\-[a-z]{2})?$/i))throw new TypeError("Language code must have format `xx` or `xx-xx`");j.lang=b[0],void 0===j[b[0]]?(b[1]=null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])?b[1]:{},j[b[0]]=i.isObjectEmpty(b[1])?h.EN:b[1]):null!==b[1]&&void 0!==b[1]&&"object"===e(b[1])&&(j[b[0]]=b[1])}return j.lang},j.t=function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof a&&a.length){var c=void 0,d=void 0,f=j.language(),g=function(a,b,c){if("object"!==("undefined"==typeof a?"undefined":e(a))||"number"!=typeof b||"number"!=typeof c)return a;var d=function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1&&(arguments.length<=0?void 0:arguments[0])%100!==11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100===1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100===2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100===3||(arguments.length<=0?void 0:arguments[0])%100===4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10===2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10===1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}();return d[c].apply(null,[b].concat(a))};return void 0!==j[f]&&(c=j[f][a],null!==b&&"number"==typeof b&&(d=j[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&j.en&&(c=j.en[a],null!==b&&"number"==typeof b&&(d=j.en["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,null!==b&&"number"==typeof b&&(c=c.replace("%1",b)),i.escapeHTML(c)}return a},g["default"].i18n=j,"undefined"!=typeof mejsL10n&&g["default"].i18n.language(mejsL10n.language,mejsL10n.strings),c["default"]=j},{14:14,21:21,6:6}],5:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0});var f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(21),m=a(22),n=a(7),o=function p(a,b){var c=this;e(this,p);var d=this;d.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},b=Object.assign(d.defaults,b),d.mediaElement=i["default"].createElement(b.fakeNodeName),d.mediaElement.options=b;var f=a,g=!1;if("string"==typeof a?d.mediaElement.originalNode=i["default"].getElementById(a):(d.mediaElement.originalNode=a,f=a.id),f=f||"mejs_"+Math.random().toString().slice(2),void 0!==d.mediaElement.originalNode&&null!==d.mediaElement.originalNode&&d.mediaElement.appendChild){d.mediaElement.originalNode.setAttribute("id",f+"_from_mejs");var h=d.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].includes(h)&&!d.mediaElement.originalNode.getAttribute("preload")&&d.mediaElement.originalNode.setAttribute("preload","none"),d.mediaElement.originalNode.parentNode.insertBefore(d.mediaElement,d.mediaElement.originalNode),d.mediaElement.appendChild(d.mediaElement.originalNode)}d.mediaElement.id=f,d.mediaElement.renderers={},d.mediaElement.renderer=null,d.mediaElement.rendererName=null,d.mediaElement.changeRenderer=function(a,b){var d=c;if(void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer.name===a)return d.mediaElement.renderer.pause(),d.mediaElement.renderer.stop&&d.mediaElement.renderer.stop(),d.mediaElement.renderer.show(),d.mediaElement.renderer.setSrc(b[0].src),!0;void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&(d.mediaElement.renderer.pause(),d.mediaElement.renderer.stop&&d.mediaElement.renderer.stop(),d.mediaElement.renderer.hide());var e=d.mediaElement.renderers[a],f=null;if(void 0!==e&&null!==e)return e.show(),e.setSrc(b[0].src),d.mediaElement.renderer=e,d.mediaElement.rendererName=a,!0;for(var g=d.mediaElement.options.renderers.length?d.mediaElement.options.renderers:n.renderer.order,h=0,i=g.length;i>h;h++){var j=g[h];if(j===a){var k=n.renderer.renderers;f=k[j];var l=Object.assign(f.options,d.mediaElement.options);return e=f.create(d.mediaElement,l,b),e.name=a,d.mediaElement.renderers[f.name]=e,d.mediaElement.renderer=e,d.mediaElement.rendererName=a,e.show(),!0}}return!1},d.mediaElement.setSize=function(a,b){void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer.setSize(a,b)},d.mediaElement.createErrorMessage=function(a){a=Array.isArray(a)?a:[];var b=i["default"].createElement("div");b.className="me_cannotplay",b.style.width="100%",b.style.height="100%";var c=d.mediaElement.options.customError;if(!c){var e=d.mediaElement.originalNode.getAttribute("poster");e&&(c+='<img src="'+e+'" width="100%" height="100%" alt="'+k["default"].i18n.t("mejs.download-file")+'">');for(var f=0,h=a.length;h>f;f++){var j=a[f];c+='<a href="'+j.src+'" data-type="'+j.type+'"><span>'+k["default"].i18n.t("mejs.download-file")+": "+j.src+"</span></a>"}}b.innerHTML=c,d.mediaElement.originalNode.parentNode.insertBefore(b,d.mediaElement.originalNode),d.mediaElement.originalNode.style.display="none",g=!0};var j=k["default"].html5media.properties,o=k["default"].html5media.methods,q=function(a,b,c,d){var e=a[b],f=function(){return c.apply(a,[e])},g=function(b){return e=d.apply(a,[b])};Object.defineProperty(a,b,{get:f,set:g})},r=function(a){"src"!==a&&!function(){var b=""+a.substring(0,1).toUpperCase()+a.substring(1),c=function(){return void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer?d.mediaElement.renderer["get"+b]():null},e=function(a){void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&d.mediaElement.renderer["set"+b](a)};q(d.mediaElement,a,c,e),d.mediaElement["get"+b]=c,d.mediaElement["set"+b]=e}()},s=function(){return void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer?d.mediaElement.renderer.getSrc():null},t=function(a){var b=[];if("string"==typeof a)b.push({src:a,type:a?m.getTypeFromFile(a):""});else for(var c=0,e=a.length;e>c;c++){var f=m.absolutizeUrl(a[c].src),g=a[c].type;b.push({src:f,type:""!==g&&null!==g&&void 0!==g||!f?g:m.getTypeFromFile(f)})}var h=n.renderer.select(b,d.mediaElement.options.renderers.length?d.mediaElement.options.renderers:[]),i=void 0;return d.mediaElement.paused||(d.mediaElement.pause(),i=l.createEvent("pause",d.mediaElement),d.mediaElement.dispatchEvent(i)),d.mediaElement.originalNode.setAttribute("src",b[0].src||""),d.mediaElement.querySelector(".me_cannotplay")&&d.mediaElement.querySelector(".me_cannotplay").remove(),null===h?(d.mediaElement.createErrorMessage(b),i=l.createEvent("error",d.mediaElement),i.message="No renderer found",void d.mediaElement.dispatchEvent(i)):(d.mediaElement.changeRenderer(h.rendererName,b),void 0===d.mediaElement.renderer||null===d.mediaElement.renderer?(i=l.createEvent("error",d.mediaElement),i.message="Error creating renderer",d.mediaElement.dispatchEvent(i),void d.mediaElement.createErrorMessage(b)):void 0)},u=function(a){d.mediaElement[a]=function(){for(var b=arguments.length,c=Array(b),e=0;b>e;e++)c[e]=arguments[e];if(void 0!==d.mediaElement.renderer&&null!==d.mediaElement.renderer&&"function"==typeof d.mediaElement.renderer[a])try{d.mediaElement.renderer[a](c)}catch(f){d.mediaElement.createErrorMessage()}return null}};q(d.mediaElement,"src",s,t),d.mediaElement.getSrc=s,d.mediaElement.setSrc=t;for(var v=0,w=j.length;w>v;v++)r(j[v]);for(var x=0,y=o.length;y>x;x++)u(o[x]);if(d.mediaElement.events={},d.mediaElement.addEventListener=function(a,b){d.mediaElement.events[a]=d.mediaElement.events[a]||[],d.mediaElement.events[a].push(b)},d.mediaElement.removeEventListener=function(a,b){if(!a)return d.mediaElement.events={},!0;var c=d.mediaElement.events[a];if(!c)return!0;if(!b)return d.mediaElement.events[a]=[],!0;for(var e=0;e<c.length;e++)if(c[e]===b)return d.mediaElement.events[a].splice(e,1),!0;return!1},d.mediaElement.dispatchEvent=function(a){var b=d.mediaElement.events[a.type];if(b)for(var c=0;c<b.length;c++)b[c].apply(null,[a])},null!==d.mediaElement.originalNode){var z=[];switch(d.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":z.push({type:"",src:d.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var A=void 0,B=void 0,C=void 0,D=d.mediaElement.originalNode.childNodes.length,E=d.mediaElement.originalNode.getAttribute("src");if(E){var F=d.mediaElement.originalNode;z.push({type:m.formatType(E,F.getAttribute("type")),src:E})}for(var G=0;D>G;G++)A=d.mediaElement.originalNode.childNodes[G],A.nodeType===Node.ELEMENT_NODE&&"source"===A.tagName.toLowerCase()&&(B=A.getAttribute("src"),C=m.formatType(B,A.getAttribute("type")),z.push({type:C,src:B}))}z.length>0&&(d.mediaElement.src=z)}return d.mediaElement.options.success&&d.mediaElement.options.success(d.mediaElement,d.mediaElement.originalNode),g&&d.mediaElement.options.error&&d.mediaElement.options.error(d.mediaElement,d.mediaElement.originalNode),d.mediaElement};g["default"].MediaElement=o,c["default"]=o},{2:2,21:21,22:22,3:3,6:6,7:7}],6:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0});var e=a(3),f=d(e),g={};g.version="4.0.2",g.html5media={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"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],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"]},f["default"].mejs=g,c["default"]=g},{3:3}],7:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.renderer=void 0;var f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},g=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),h=a(6),i=d(h),j=function(){function a(){e(this,a),this.renderers={},this.order=[]}return g(a,[{key:"add",value:function(a){if(void 0===a.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[a.name]=a,this.order.push(a.name)}},{key:"select",value:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],c=b.length;b=b.length?b:this.order,c||!function(){var a=[/^(html5|native)/,/^flash/,/iframe$/],c=function(b){for(var c=0,d=a.length;d>c;c++)if(null!==b.match(a[c]))return c;return a.length};b.sort(function(a,b){return c(a)-c(b)})}();for(var d=0,e=b.length;e>d;d++){var f=b[d],g=this.renderers[f];if(null!==g&&void 0!==g)for(var h=0,i=a.length;i>h;h++)if("function"==typeof g.canPlayType&&"string"==typeof a[h].type&&g.canPlayType(a[h].type))return{rendererName:g.name,src:a[h].src}}return null}},{key:"order",set:function(a){if(!Array.isArray(a))throw new TypeError("order must be an array of strings.");this._order=a},get:function(){return this._order}},{key:"renderers",set:function(a){if(null!==a&&"object"!==("undefined"==typeof a?"undefined":f(a)))throw new TypeError("renderers must be an array of objects.");this._renderers=a},get:function(){return this._renderers}}]),a}(),k=c.renderer=new j;i["default"].Renderers=k},{6:6}],8:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}var f=a(3),g=e(f),h=a(2),i=e(h),j=a(4),k=e(j),l=a(16),m=e(l),n=a(19),o=d(n),p=a(21),q=a(20);Object.assign(l.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(m["default"].prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(a,b,c,d){if(a.isVideo){a.isInIframe=g["default"].location!==g["default"].parent.location,d.addEventListener("loadstart",function(){a.detectFullscreenMode()});var e=this,f=p.isString(e.options.fullscreenText)?e.options.fullscreenText:k["default"].t("mejs.fullscreen"),h=i["default"].createElement("div");if(h.className=e.options.classPrefix+"button "+e.options.classPrefix+"fullscreen-button",h.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+f+'" aria-label="'+f+'" tabindex="0"></button>',e.addControlElement(h,"fullscreen"),h.addEventListener("click",function(){var b=o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||a.isFullScreen;b?a.exitFullScreen():a.enterFullScreen()}),a.fullscreenBtn=h,e.globalBind("keydown",function(b){var c=b.which||b.keyCode||0;27===c&&(o.HAS_TRUE_NATIVE_FULLSCREEN&&o.IS_FULLSCREEN||e.isFullScreen)&&a.exitFullScreen()}),e.normalHeight=0,e.normalWidth=0,o.HAS_TRUE_NATIVE_FULLSCREEN){var j=function(){a.isFullScreen&&(o.isFullScreen()?(a.isNativeFullScreen=!0,a.setControlsSize()):(a.isNativeFullScreen=!1,a.exitFullScreen()))};a.globalBind(o.FULLSCREEN_EVENT_NAME,j)}}},detectFullscreenMode:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/),c="";return c=o.HAS_TRUE_NATIVE_FULLSCREEN&&b?"native-native":o.HAS_TRUE_NATIVE_FULLSCREEN&&!b?"plugin-native":a.usePluginFullScreen&&o.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",a.fullscreenMode=c,c},cleanfullscreen:function(a){a.exitFullScreen()},enterFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(html5|native)/),c=getComputedStyle(a.container);if(o.IS_IOS&&o.HAS_IOS_FULLSCREEN&&"function"==typeof a.media.webkitEnterFullscreen)return void a.media.webkitEnterFullscreen();if(q.addClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.addClass(a.container,a.options.classPrefix+"container-fullscreen"),a.normalHeight=parseFloat(c.height),a.normalWidth=parseFloat(c.width),"native-native"===a.fullscreenMode||"plugin-native"===a.fullscreenMode?(o.requestFullScreen(a.container),a.isInIframe&&setTimeout(function r(){if(a.isNativeFullScreen){var b=.002,c=g["default"].innerWidth||i["default"].documentElement.clientWidth||i["default"].body.clientWidth,d=screen.width,e=Math.abs(d-c),f=d*b;e>f?a.exitFullScreen():setTimeout(r,500)}},1e3)):"fullwindow"===a.fullscreeMode,a.container.style.width="100%",a.container.style.height="100%",a.containerSizeTimeout=setTimeout(function(){a.container.style.width="100%",a.container.style.height="100%",a.setControlsSize()},500),b)a.node.style.width="100%",a.node.style.height="100%";else for(var d=a.container.querySelectorAll("iframe, embed, object, video"),e=d.length,f=0;e>f;f++)d[f].style.width="100%",d[f].style.height="100%";a.options.setDimensions&&"function"==typeof a.media.setSize&&a.media.setSize(screen.width,screen.height);for(var h=a.layers.childNodes,j=h.length,k=0;j>k;k++)h[k].style.width="100%",h[k].style.height="100%";a.fullscreenBtn&&(q.removeClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen")),a.setControlsSize(),a.isFullScreen=!0;var l=Math.min(screen.width/a.width,screen.height/a.height),m=a.container.querySelector("."+a.options.classPrefix+"captions-text");m&&(m.style.fontSize=100*l+"%",m.style.lineHeight="normal",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="45px");var n=p.createEvent("enteredfullscreen",a.container);a.container.dispatchEvent(n)},exitFullScreen:function(){var a=this,b=null!==a.media.rendererName&&null!==a.media.rendererName.match(/(native|html5)/);if(clearTimeout(a.containerSizeTimeout),o.HAS_TRUE_NATIVE_FULLSCREEN&&(o.IS_FULLSCREEN||a.isFullScreen)&&o.cancelFullScreen(),q.removeClass(i["default"].documentElement,a.options.classPrefix+"fullscreen"),q.removeClass(a.container,a.options.classPrefix+"container-fullscreen"),a.options.setDimensions){if(a.container.style.width=a.normalWidth+"px",a.container.style.height=a.normalHeight+"px",b)a.node.style.width=a.normalWidth+"px",a.node.style.height=a.normalHeight+"px";else for(var c=a.container.querySelectorAll("iframe, embed, object, video"),d=c.length,e=0;d>e;e++)c[e].style.width=a.normalWidth+"px",c[e].style.height=a.normalHeight+"px";"function"==typeof a.media.setSize&&a.media.setSize(a.normalWidth,a.normalHeight);for(var f=a.layers.childNodes,g=f.length,h=0;g>h;h++)f[h].style.width=a.normalWidth+"px",f[h].style.height=a.normalHeight+"px"}q.removeClass(a.fullscreenBtn,a.options.classPrefix+"unfullscreen"),q.addClass(a.fullscreenBtn,a.options.classPrefix+"fullscreen"),a.setControlsSize(),a.isFullScreen=!1;var j=a.container.querySelector("."+a.options.classPrefix+"captions-text");j&&(j.style.fontSize="",j.style.lineHeight="",a.container.querySelector("."+a.options.classPrefix+"captions-position").style.bottom="");var k=p.createEvent("exitedfullscreen",a.container);a.container.dispatchEvent(k)}})},{16:16,19:19,2:2,20:20,21:21,3:3,4:4}],9:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(21),l=a(20);Object.assign(g.config,{playText:null,pauseText:null}),Object.assign(h["default"].prototype,{buildplaypause:function(a,b,c,d){function e(a){"play"===a?(l.removeClass(n,g.options.classPrefix+"play"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"pause"),o.setAttribute("title",m),o.setAttribute("aria-label",m)):(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"replay"),l.addClass(n,g.options.classPrefix+"play"),o.setAttribute("title",i),o.setAttribute("aria-label",i))}var g=this,h=g.options,i=k.isString(h.playText)?h.playText:j["default"].t("mejs.play"),m=k.isString(h.pauseText)?h.pauseText:j["default"].t("mejs.pause"),n=f["default"].createElement("div");n.className=g.options.classPrefix+"button "+g.options.classPrefix+"playpause-button "+g.options.classPrefix+"play",n.innerHTML='<button type="button" aria-controls="'+g.id+'" title="'+i+'" aria-label="'+m+'" tabindex="0"></button>',n.addEventListener("click",function(){d.paused?d.play():d.pause()});var o=n.querySelector("button");g.addControlElement(n,"playpause"),e("pse"),d.addEventListener("loadedmetadata",function(){e("pse")}),d.addEventListener("play",function(){e("play")}),d.addEventListener("playing",function(){e("play")}),d.addEventListener("pause",function(){e("pse")}),d.addEventListener("paused",function(){e("pse")}),d.addEventListener("ended",function(){a.options.loop||(l.removeClass(n,g.options.classPrefix+"pause"),l.removeClass(n,g.options.classPrefix+"play"),l.addClass(n,g.options.classPrefix+"replay"),o.setAttribute("title",i),o.setAttribute("aria-label",i))})}})},{16:16,2:2,20:20,21:21,4:4}],10:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(19),l=a(24),m=a(20);Object.assign(g.config,{enableProgressTooltip:!0}),Object.assign(h["default"].prototype,{buildprogress:function(a,b,c,d){var e=0,g=!1,h=!1,i=this,n=a.options.autoRewind,o=a.options.enableProgressTooltip?'<span class="'+i.options.classPrefix+'time-float">'+('<span class="'+i.options.classPrefix+'time-float-current">00:00</span>')+('<span class="'+i.options.classPrefix+'time-float-corner"></span>')+"</span>":"",p=f["default"].createElement("div");p.className=i.options.classPrefix+"time-rail",p.innerHTML='<span class="'+i.options.classPrefix+"time-total "+i.options.classPrefix+'time-slider">'+('<span class="'+i.options.classPrefix+'time-buffering"></span>')+('<span class="'+i.options.classPrefix+'time-loaded"></span>')+('<span class="'+i.options.classPrefix+'time-current"></span>')+('<span class="'+i.options.classPrefix+'time-handle"></span>')+(""+o)+"</span>",i.addControlElement(p,"progress"),b.querySelector("."+i.options.classPrefix+"time-buffering").style.display="none",i.rail=b.querySelector("."+i.options.classPrefix+"time-rail"),i.total=b.querySelector("."+i.options.classPrefix+"time-total"),i.loaded=b.querySelector("."+i.options.classPrefix+"time-loaded"),i.current=b.querySelector("."+i.options.classPrefix+"time-current"),i.handle=b.querySelector("."+i.options.classPrefix+"time-handle"),i.timefloat=b.querySelector("."+i.options.classPrefix+"time-float"),i.timefloatcurrent=b.querySelector("."+i.options.classPrefix+"time-float-current"),i.slider=b.querySelector("."+i.options.classPrefix+"time-slider"),i.newTime=0,i.forcedHandlePause=!1;var q=function(b){var c=getComputedStyle(i.total),e=m.offset(i.total),f=parseFloat(c.width),h=0,j=0,n=void 0;n=b.originalEvent&&b.originalEvent.changedTouches?b.originalEvent.changedTouches[0].pageX:b.changedTouches?b.changedTouches[0].pageX:b.pageX,d.duration&&(n<e.left?n=e.left:n>f+e.left&&(n=f+e.left),j=n-e.left,h=j/f,i.newTime=.02>=h?0:h*d.duration,g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(i.setCurrentRailHandle(i.newTime),i.updateCurrent(i.newTime)),k.IS_IOS||k.IS_ANDROID||!i.timefloat||(i.timefloat.style.left=j+"px",i.timefloatcurrent.innerHTML=l.secondsToTimeCode(i.newTime,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),i.timefloat.style.display="block"))},r=function(){var b=d.currentTime,c=j["default"].t("mejs.time-slider"),e=l.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength),f=d.duration;i.slider.setAttribute("role","slider"),i.slider.tabIndex=0,d.paused?(i.slider.setAttribute("aria-label",c),i.slider.setAttribute("aria-valuemin",0),i.slider.setAttribute("aria-valuemax",f),i.slider.setAttribute("aria-valuenow",b),i.slider.setAttribute("aria-valuetext",e)):(i.slider.removeAttribute("aria-label"),i.slider.removeAttribute("aria-valuemin"),i.slider.removeAttribute("aria-valuemax"),i.slider.removeAttribute("aria-valuenow"),i.slider.removeAttribute("aria-valuetext"))},s=function(){var a=new Date;a-e>=1e3&&d.play()},t=function(){g&&null!==d.currentTime&&i.newTime.toFixed(4)!==d.currentTime.toFixed(4)&&(d.setCurrentTime(i.newTime),a.setCurrentRail(),i.updateCurrent(i.newTime)),i.forcedHandlePause&&i.media.play(),i.forcedHandlePause=!1};i.slider.addEventListener("focus",function(){a.options.autoRewind=!1}),i.slider.addEventListener("blur",function(){a.options.autoRewind=n}),i.slider.addEventListener("keydown",function(b){if(new Date-e>=1e3&&(h=d.paused),i.options.keyActions.length){var c=b.which||b.keyCode||0,f=d.duration,g=a.options.defaultSeekForwardInterval(d),j=a.options.defaultSeekBackwardInterval(d),l=d.currentTime;switch(c){case 37:case 40:d.duration!==1/0&&(l-=j);break;case 39:case 38:d.duration!==1/0&&(l+=g);break;case 36:l=0;break;case 35:l=f;break;case 32:return void(k.IS_FIREFOX||(d.paused?d.play():d.pause()));case 13:return void(d.paused?d.play():d.pause());default:return}l=0>l?0:l>=f?f:Math.floor(l),e=new Date,h||d.pause(),l<d.duration&&!h&&setTimeout(s,1100),d.setCurrentTime(l),b.preventDefault(),b.stopPropagation()}});var u=["mousedown","touchstart"];i.slider.addEventListener("dragstart",function(){return!1});for(var v=0,w=u.length;w>v;v++)i.slider.addEventListener(u[v],function(a){i.forcedHandlePause=!1,d.duration!==1/0&&(1===a.which||0===a.which)&&(d.paused||(i.media.pause(),i.forcedHandlePause=!0),g=!0,q(a),i.globalBind("mousemove.dur touchmove.dur",function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a);
+}),i.globalBind("mouseup.dur touchend.dur",function(){t(),g=!1,i.timefloat&&(i.timefloat.style.display="none"),i.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")}))});i.slider.addEventListener("mouseenter",function(a){a.target===i.slider&&d.duration!==1/0&&(i.globalBind("mousemove.dur",function(a){var b=a.target;(b===i.slider||b.closest("."+i.options.classPrefix+"time-slider"))&&q(a)}),!i.timefloat||k.IS_IOS||k.IS_ANDROID||(i.timefloat.style.display="block"))}),i.slider.addEventListener("mouseleave",function(){d.duration!==1/0&&(g||(i.globalUnbind("mousemove.dur"),i.timefloat&&(i.timefloat.style.display="none")))}),d.addEventListener("progress",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),i.slider.style.display="none"}}),d.addEventListener("timeupdate",function(c){var e=b.querySelector("."+i.options.classPrefix+"broadcast");if(d.duration!==1/0)e&&(i.slider.style.display="",e.remove()),a.setProgressRail(c),i.forcedHandlePause||a.setCurrentRail(c),r(c);else if(!e){var g=f["default"].createElement("span");g.className=i.options.classPrefix+"broadcast",g.innerText=j["default"].t("mejs.live-broadcast"),b.querySelector("."+i.options.classPrefix+"time-rail").appendChild(g),i.slider.style.display="none"}}),i.container.addEventListener("controlsresize",function(b){d.duration!==1/0&&(a.setProgressRail(b),i.forcedHandlePause||a.setCurrentRail(b))})},setProgressRail:function(a){var b=null,c=this,d=void 0!==a?a.target:c.media;d&&d.buffered&&d.buffered.length>0&&d.buffered.end&&d.duration?b=d.buffered.end(d.buffered.length-1)/d.duration:d&&void 0!==d.bytesTotal&&d.bytesTotal>0&&void 0!==d.bufferedBytes?b=d.bufferedBytes/d.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(b=a.loaded/a.total),null!==b&&(b=Math.min(1,Math.max(0,b)),c.loaded&&c.total&&(c.loaded.style.width=100*b+"%"))},setCurrentRailHandle:function(a){var b=this;b.setCurrentRailMain(b,a)},setCurrentRail:function(){var a=this;a.setCurrentRailMain(a)},setCurrentRailMain:function(a,b){if(void 0!==a.media.currentTime&&a.media.duration){var c="undefined"==typeof b?a.media.currentTime:b;if(a.total&&a.handle){var d=Math.round(parseFloat(getComputedStyle(a.total).width)*c/a.media.duration),e=d-Math.round(a.handle.offsetWidth/2);d=c/a.media.duration*100,a.current.style.width=d+"%",a.handle.style.left=e+"px"}}}})},{16:16,19:19,2:2,20:20,24:24,4:4}],11:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(24),j=a(20);Object.assign(g.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(h["default"].prototype,{buildcurrent:function(a,b,c,d){var e=this,g=f["default"].createElement("div");g.className=e.options.classPrefix+"time",g.setAttribute("role","timer"),g.setAttribute("aria-live","off"),g.innerHTML='<span class="'+e.options.classPrefix+'currenttime">'+i.secondsToTimeCode(0,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",e.addControlElement(g,"current"),d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateCurrent()})},buildduration:function(a,b,c,d){var e=this,g=b.lastChild.querySelector("."+e.options.classPrefix+"currenttime");if(g)b.querySelector("."+e.options.classPrefix+"time").innerHTML+=e.options.timeAndDurationSeparator+'<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>");else{b.querySelector("."+e.options.classPrefix+"currenttime")&&j.addClass(b.querySelector("."+e.options.classPrefix+"currenttime").parentNode,e.options.classPrefix+"currenttime-container");var h=f["default"].createElement("div");h.className=e.options.classPrefix+"time "+e.options.classPrefix+"duration-container",h.innerHTML='<span class="'+e.options.classPrefix+'duration">'+(i.secondsToTimeCode(e.options.duration,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>"),e.addControlElement(h,"duration")}d.addEventListener("timeupdate",function(){e.controlsAreVisible&&a.updateDuration()})},updateCurrent:function(){var a=this,b=a.media.currentTime;isNaN(b)&&(b=0),a.controls.querySelector("."+a.options.classPrefix+"currenttime")&&(a.controls.querySelector("."+a.options.classPrefix+"currenttime").innerText=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength))},updateDuration:function(){var a=this,b=a.media.duration;(isNaN(b)||b===1/0||0>b)&&(a.media.duration=a.options.duration=b=0),a.options.duration>0&&(b=a.options.duration);var c=i.secondsToTimeCode(b,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength);c.length>5&&j.toggleClass(a.container,a.options.classPrefix+"long-video"),a.controls.querySelector("."+a.options.classPrefix+"duration")&&b>0&&(a.controls.querySelector("."+a.options.classPrefix+"duration").innerHTML=c)}})},{16:16,2:2,20:20,24:24}],12:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(6),h=d(g),i=a(4),j=d(i),k=a(16),l=d(k),m=a(24),n=a(21),o=a(20);Object.assign(k.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l["default"].prototype,{hasChapters:!1,buildtracks:function(a,b,c,d){if(0!==a.tracks.length){var e=this,g=e.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",h=n.isString(e.options.tracksText)?e.options.tracksText:j["default"].t("mejs.captions-subtitles"),i=n.isString(e.options.chaptersText)?e.options.chaptersText:j["default"].t("mejs.captions-chapters"),k=a.tracks.length;if(e.domNode.textTracks)for(var l=e.domNode.textTracks.length-1;l>=0;l--)e.domNode.textTracks[l].mode="hidden";e.cleartracks(a),a.captions=f["default"].createElement("div"),a.captions.className=e.options.classPrefix+"captions-layer "+e.options.classPrefix+"layer",a.captions.innerHTML='<div class="'+e.options.classPrefix+"captions-position "+e.options.classPrefix+'captions-position-hover"'+g+">"+('<span class="'+e.options.classPrefix+'captions-text"></span>')+"</div>",a.captions.style.display="none",c.insertBefore(a.captions,c.firstChild),a.captionsText=a.captions.querySelector("."+e.options.classPrefix+"captions-text"),a.captionsButton=f["default"].createElement("div"),a.captionsButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"captions-button",a.captionsButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"captions-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'captions-selector-list">')+('<li class="'+e.options.classPrefix+'captions-selector-list-item">')+('<input type="radio" class="'+e.options.classPrefix+'captions-selector-input" ')+('name="'+a.id+'_captions" id="'+a.id+'_captions_none" ')+'value="none" checked disabled>'+('<label class="'+e.options.classPrefix+"captions-selector-label ")+(e.options.classPrefix+'captions-selected" ')+('for="'+a.id+'_captions_none">'+j["default"].t("mejs.none")+"</label>")+"</li></ul></div>",e.addControlElement(a.captionsButton,"tracks"),a.captionsButton.querySelector("."+e.options.classPrefix+"captions-selector-list-item").disabled=!1,a.chaptersButton=f["default"].createElement("div"),a.chaptersButton.className=e.options.classPrefix+"button "+e.options.classPrefix+"chapters-button",a.chaptersButton.innerHTML='<button type="button" aria-controls="'+e.id+'" title="'+i+'" aria-label="'+i+'" tabindex="0"></button>'+('<div class="'+e.options.classPrefix+"chapters-selector "+e.options.classPrefix+'offscreen">')+('<ul class="'+e.options.classPrefix+'chapters-selector-list"></ul>')+"</div>";for(var m=0,p=0;k>p;p++){var q=a.tracks[p].kind;"subtitles"===q||"captions"===q?m++:"chapters"!==q||b.querySelector("."+e.options.classPrefix+"chapter-selector")||a.captionsButton.parentNode.insertBefore(a.chaptersButton,a.captionsButton)}a.trackToLoad=-1,a.selectedTrack=null,a.isLoadingTrack=!1;for(var r=0;k>r;r++){var s=a.tracks[r].kind;("subtitles"===s||"captions"===s)&&a.addTrackButton(a.tracks[r].trackId,a.tracks[r].srclang,a.tracks[r].label)}a.loadNextTrack();var t=["mouseenter","focusin"],u=["mouseleave","focusout"];if(e.options.toggleCaptionsButtonWhenOnlyOne&&1===m)a.captionsButton.addEventListener("click",function(){var b="none";null===a.selectedTrack&&(b=a.tracks[0].trackId),a.setTrack(b)});else{for(var v=a.captionsButton.querySelectorAll("."+e.options.classPrefix+"captions-selector-label"),w=a.captionsButton.querySelectorAll("input[type=radio]"),x=0,y=t.length;y>x;x++)a.captionsButton.addEventListener(t[x],function(){o.removeClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var z=0,A=u.length;A>z;z++)a.captionsButton.addEventListener(u[z],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"captions-selector"),e.options.classPrefix+"offscreen")});for(var B=0,C=w.length;C>B;B++)w[B].addEventListener("click",function(){a.setTrack(this.value)});for(var D=0,E=v.length;E>D;D++)v[D].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)});a.captionsButton.addEventListener("keydown",function(a){a.stopPropagation()})}for(var F=0,G=t.length;G>F;F++)a.chaptersButton.addEventListener(t[F],function(){this.querySelector("."+e.options.classPrefix+"chapters-selector-list").childNodes.length&&o.removeClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});for(var H=0,I=u.length;I>H;H++)a.chaptersButton.addEventListener(u[H],function(){o.addClass(this.querySelector("."+e.options.classPrefix+"chapters-selector"),e.options.classPrefix+"offscreen")});a.chaptersButton.addEventListener("keydown",function(a){a.stopPropagation()}),a.options.alwaysShowControls?o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover"):(a.container.addEventListener("controlsshown",function(){o.addClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")}),a.container.addEventListener("controlshidden",function(){d.paused||o.removeClass(a.container.querySelector("."+e.options.classPrefix+"captions-position"),e.options.classPrefix+"captions-position-hover")})),d.addEventListener("timeupdate",function(){a.displayCaptions()}),""!==a.options.slidesSelector&&(a.slidesContainer=f["default"].querySelectorAll(a.options.slidesSelector),d.addEventListener("timeupdate",function(){a.displaySlides()}))}},cleartracks:function(a){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove(),a.chaptersButton&&a.chaptersButton.remove())},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},findTracks:function(){var a=this,b=a.node.querySelectorAll("track"),c=b.length;a.tracks=[];for(var d=0;c>d;d++){var e=b[d],f=e.getAttribute("srclang").toLowerCase()||"",g=a.id+"_track_"+d+"_"+e.getAttribute("kind")+"_"+f;a.tracks.push({trackId:g,srclang:f,src:e.getAttribute("src"),kind:e.getAttribute("kind"),label:e.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(a){for(var b=this,c=b.captionsButton.querySelectorAll('input[type="radio"]'),d=b.captionsButton.querySelectorAll("."+b.options.classPrefix+"captions-selected"),e=b.captionsButton.querySelector('input[value="'+a+'"]'),f=0,g=c.length;g>f;f++)c[f].checked=!1;for(var h=0,i=d.length;i>h;h++)o.removeClass(d[h],b.options.classPrefix+"captions-selected");e.checked=!0;for(var j=o.siblings(e,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),k=0,l=j.length;l>k;k++)o.addClass(j[k],b.options.classPrefix+"captions-selected");if("none"===a)b.selectedTrack=null,o.removeClass(b.captionsButton,b.options.classPrefix+"captions-enabled");else for(var m=0,p=b.tracks.length;p>m;m++){var q=b.tracks[m];if(q.trackId===a){null===b.selectedTrack&&o.addClass(b.captionsButton,b.options.classPrefix+"captions-enabled"),b.selectedTrack=q,b.captions.setAttribute("lang",b.selectedTrack.srclang),b.displayCaptions();break}}var r=n.createEvent("captionschange",b.media);r.detail.caption=b.selectedTrack,b.media.dispatchEvent(r)},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(a){var b=this,c=b.tracks[a];void 0===c||void 0===c.src&&""===c.src||o.ajax(c.src,"text",function(a){c.entries="string"==typeof a&&/<tt\s+xml/gi.exec(a)?h["default"].TrackFormatParser.dfxp.parse(a):h["default"].TrackFormatParser.webvtt.parse(a),c.isLoaded=!0,b.enableTrackButton(c),b.loadNextTrack(),"slides"===c.kind?b.setupSlides(c):"chapters"!==c.kind||b.hasChapters||(b.drawChapters(c),b.hasChapters=!0)},function(){b.removeTrackButton(c.trackId),b.loadNextTrack()})},enableTrackButton:function(a){var b=this,c=a.srclang,d=f["default"].getElementById(""+a.trackId);if(d){var e=a.label;""===e&&(e=j["default"].t(h["default"].language.codes[c])||c),d.disabled=!1;for(var g=o.siblings(d,function(a){return o.hasClass(a,b.options.classPrefix+"captions-selector-label")}),i=0,k=g.length;k>i;i++)g[i].innerHTML=e;if(b.options.startLanguage===c){d.checked=!0;var l=n.createEvent("click",d);d.dispatchEvent(l)}}},removeTrackButton:function(a){var b=f["default"].getElementById(""+a);if(b){var c=b.closest("li");c&&c.remove()}},addTrackButton:function(a,b,c){var d=this;""===c&&(c=j["default"].t(h["default"].language.codes[b])||b),d.captionsButton.querySelector("ul").innerHTML+='<li class="'+d.options.classPrefix+'captions-selector-list-item">'+('<input type="radio" class="'+d.options.classPrefix+'captions-selector-input" ')+('name="'+d.id+'_captions" id="'+a+'" value="'+a+'" disabled>')+('<label class="'+d.options.classPrefix+'captions-selector-label">'+c+" (loading)</label>")+"</li>"},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(var c=0,d=a.tracks.length;d>c;c++){var e=a.tracks[c].kind;if(("subtitles"===e||"captions"===e)&&a.tracks[c].isLoaded){b=!0;break}}a.captionsButton.style.display=b?"":"none",a.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var a=this,b=a.selectedTrack,c=function(a){var b=f["default"].createElement("div");b.innerHTML=a;for(var c=b.getElementsByTagName("script"),d=c.length;d--;)c[d].remove();for(var e=b.getElementsByTagName("*"),g=0,h=e.length;h>g;g++)for(var i=e[g].attributes,j=Array.prototype.slice.call(i),k=0,l=j.length;l>k;k++)j[k].name.startsWith("on")||j[k].value.startsWith("javascript")?e[g].remove():"style"===j[k].name&&e[g].removeAttribute(j[k].name);return b.innerHTML};if(null!==b&&b.isLoaded){var d=a.searchTrackPosition(b.entries,a.media.currentTime);if(d>-1)return a.captionsText.innerHTML=c(b.entries[d].text),a.captionsText.className=a.options.classPrefix+"captions-text "+(b.entries[d].identifier||""),a.captions.style.display="",void(a.captions.style.height="0px");a.captions.style.display="none"}else a.captions.style.display="none"}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.length],b.showSlide(0)},showSlide:function(a){var b=this,c=this;if(void 0!==c.tracks&&void 0!==c.slidesContainer){var d=c.slides.entries[a].text,e=c.slides.entries[a].imgs;void 0===e||void 0===e.fadeIn?!function(){var g=f["default"].createElement("img");g.src=d,g.addEventListener("load",function(){var a=b,d=o.siblings(a,function(a){return d(a)});a.style.display="none",c.slidesContainer.innerHTML+=a.innerHTML,o.fadeIn(c.slidesContainer.querySelector(g));for(var e=0,f=d.length;f>e;e++)o.fadeOut(d[e],400)}),c.slides.entries[a].imgs=e=g}():o.visible(e)||!function(){var a=o.siblings(self,function(b){return a(b)});o.fadeIn(c.slidesContainer.querySelector(e));for(var b=0,d=a.length;d>b;b++)o.fadeOut(a[b])}()}},displaySlides:function(){var a=this;if(void 0!==this.slides){var b=a.slides,c=a.searchTrackPosition(b.entries,a.media.currentTime);return c>-1?void a.showSlide(c):void 0}},drawChapters:function(a){var b=this,c=a.entries.length;if(c){b.chaptersButton.querySelector("ul").innerHTML="";for(var d=0;c>d;d++)b.chaptersButton.querySelector("ul").innerHTML+='<li class="'+b.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">'+('<input type="radio" class="'+b.options.classPrefix+'captions-selector-input" ')+('name="'+b.id+'_chapters" value="'+a.entries[d].start+'" disabled>')+('<label class="'+b.options.classPrefix+'chapters-selector-label">'+a.entries[d].text+"</label>")+"</li>";for(var e=b.chaptersButton.querySelectorAll('input[type="radio"]'),f=b.chaptersButton.querySelectorAll("."+b.options.classPrefix+"chapters-selector-label"),g=0,h=e.length;h>g;g++)e[g].disabled=!1,e[g].checked=!1,e[g].addEventListener("click",function(){var a=this,c=b.chaptersButton.querySelectorAll("li"),d=o.siblings(a,function(a){return o.hasClass(a,b.options.classPrefix+"chapters-selector-label")})[0];a.checked=!0,a.parentNode.setAttribute("aria-checked",!0),o.addClass(d,b.options.classPrefix+"chapters-selected"),o.removeClass(b.chaptersButton.querySelector("."+b.options.classPrefix+"chapters-selected"),b.options.classPrefix+"chapters-selected");for(var e=0,f=c.length;f>e;e++)c[e].setAttribute("aria-checked",!1);b.media.setCurrentTime(parseFloat(a.value)),b.media.paused&&b.media.play()});for(var i=0,j=f.length;j>i;i++)f[i].addEventListener("click",function(){var a=o.siblings(this,function(a){return"INPUT"===a.tagName})[0],b=n.createEvent("click",a);a.dispatchEvent(b)})}},searchTrackPosition:function(a,b){for(var c=0,d=a.length-1,e=void 0,f=void 0,g=void 0;d>=c;){if(e=c+d>>1,f=a[e].start,g=a[e].stop,b>=f&&g>b)return e;b>f?c=e+1:f>b&&(d=e-1)}return-1}}),h["default"].language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},h["default"].TrackFormatParser={webvtt:{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})?)(.*)$/,parse:function(a){for(var b=a.split(/\r?\n/),c=[],d=void 0,e=void 0,f=void 0,g=0,h=b.length;h>g;g++){if(d=this.pattern.exec(b[g]),d&&g<b.length){for(g-1>=0&&""!==b[g-1]&&(f=b[g-1]),g++,e=b[g],g++;""!==b[g]&&g<b.length;)e=e+"\n"+b[g],g++;e=e.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),c.push({identifier:f,start:0===m.convertSMPTEtoSeconds(d[1])?.2:m.convertSMPTEtoSeconds(d[1]),stop:m.convertSMPTEtoSeconds(d[3]),text:e,settings:d[5]})}f=""}return c}},dfxp:{parse:function(a){a=$(a).filter("tt");var b=a.firstChild,c=b.querySelectorAll("p"),d=a.getElementById(""+b.attr("style")),e=[],f=void 0;if(d.length){d.removeAttribute("id");var g=d.attributes;if(g.length){f={};for(var h=0,i=g.length;i>h;h++)f[g[h].name.split(":")[1]]=g[h].value}}for(var j=0,k=c.length;k>j;j++){var l=void 0,n={start:null,stop:null,style:null,text:null};if(c.eq(j).attr("begin")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j).attr("begin"))),!n.start&&c.eq(j-1).attr("end")&&(n.start=m.convertSMPTEtoSeconds(c.eq(j-1).attr("end"))),c.eq(j).attr("end")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j).attr("end"))),!n.stop&&c.eq(j+1).attr("begin")&&(n.stop=m.convertSMPTEtoSeconds(c.eq(j+1).attr("begin"))),f){l="";for(var o in f)l+=o+":"+f[o]+";"}l&&(n.style=l),0===n.start&&(n.start=.2),n.text=c.eq(j).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),e.push(n)}return e}}}},{16:16,2:2,20:20,21:21,24:24,4:4,6:6}],13:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e),g=a(16),h=d(g),i=a(4),j=d(i),k=a(19),l=a(21),m=a(20);Object.assign(g.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),Object.assign(h["default"].prototype,{buildvolume:function(a,b,c,d){if(!k.IS_ANDROID&&!k.IS_IOS||!this.options.hideVolumeOnTouchDevices){var e=this,g=e.isVideo?e.options.videoVolume:e.options.audioVolume,h=l.isString(e.options.muteText)?e.options.muteText:j["default"].t("mejs.mute"),i=l.isString(e.options.unmuteText)?e.options.unmuteText:j["default"].t("mejs.unmute"),n=l.isString(e.options.allyVolumeControlText)?e.options.allyVolumeControlText:j["default"].t("mejs.volume-help-text"),o=f["default"].createElement("div");if(o.className=e.options.classPrefix+"button "+e.options.classPrefix+"volume-button "+e.options.classPrefix+"mute",o.innerHTML="horizontal"===g?'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>':'<button type="button" aria-controls="'+e.id+'" title="'+h+'" aria-label="'+h+'" tabindex="0"></button>'+('<a href="javascript:void(0);" class="'+e.options.classPrefix+'volume-slider">')+('<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>")+('<div class="'+e.options.classPrefix+'volume-total">')+('<div class="'+e.options.classPrefix+'volume-current"></div>')+('<div class="'+e.options.classPrefix+'volume-handle"></div>')+"</div></a>",e.addControlElement(o,"volume"),"horizontal"===g){var p=f["default"].createElement("a");p.className=e.options.classPrefix+"horizontal-volume-slider",p.href="javascript:void(0);",p.innerHTML+='<span class="'+e.options.classPrefix+'offscreen">'+n+"</span>"+('<div class="'+e.options.classPrefix+'horizontal-volume-total">')+('<div class="'+e.options.classPrefix+'horizontal-volume-current"></div>')+('<div class="'+e.options.classPrefix+'horizontal-volume-handle"></div>')+"</div>",o.parentNode.insertBefore(p,o.nextSibling)}var q="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-slider"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-slider"),r="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-total"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-total"),s="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-current"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-current"),t="vertical"===g?e.container.querySelector("."+e.options.classPrefix+"volume-handle"):e.container.querySelector("."+e.options.classPrefix+"horizontal-volume-handle"),u=o.firstElementChild,v=function(a){if(a=Math.max(0,a),a=Math.min(a,1),0===a){m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute");var b=o.firstElementChild;b.setAttribute("title",i),b.setAttribute("aria-label",i)}else{m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute");var c=o.firstElementChild;c.setAttribute("title",h),c.setAttribute("aria-label",h)}var d=100*a+"%",f=getComputedStyle(t);"vertical"===g?(s.style.bottom=0,s.style.height=d,t.style.bottom=d,t.style.marginBottom=-parseFloat(f.height)/2+"px"):(s.style.left=0,s.style.width=d,t.style.left=d,t.style.marginLeft=-parseFloat(f.width)/2+"px")},w=function(a){var b=m.offset(r),c=getComputedStyle(r),e=null;if("vertical"===g){var f=parseFloat(c.height),h=a.pageY-b.top;if(e=(f-h)/f,0===b.top||0===b.left)return}else{var i=parseFloat(c.width),j=a.pageX-b.left;e=j/i}e=Math.max(0,e),e=Math.min(e,1),v(e),0===e?d.setMuted(!0):d.setMuted(!1),d.setVolume(e),a.preventDefault(),a.stopPropagation()};o.addEventListener("mouseenter",function(a){a.target===o&&(q.style.display="block",y=!0,a.preventDefault(),a.stopPropagation())}),o.addEventListener("focusin",function(){q.style.display="block",y=!0}),o.addEventListener("mouseleave",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("focusout",function(){y=!1,x||"vertical"!==g||(q.style.display="none")}),o.addEventListener("keydown",function(a){if(e.options.keyActions.length){var b=a.which||a.keyCode||0,c=d.volume;switch(b){case 38:c=Math.min(c+.1,1);break;case 40:c=Math.max(0,c-.1);break;default:return!0}x=!1,v(c),d.setVolume(c),a.preventDefault(),a.stopPropagation()}});var x=!1,y=!1,z=function(){var a=Math.floor(100*d.volume);q.setAttribute("aria-label",j["default"].t("mejs.volume-slider")),q.setAttribute("aria-valuemin",0),q.setAttribute("aria-valuemax",100),q.setAttribute("aria-valuenow",a),q.setAttribute("aria-valuetext",a+"%"),q.setAttribute("role","slider"),q.tabIndex=-1};q.addEventListener("dragstart",function(){return!1}),q.addEventListener("mouseover",function(){y=!0}),q.addEventListener("mousedown",function(a){w(a),e.globalBind("mousemove.vol",function(a){var b=a.target;x&&(b===q||b.closest("vertical"===g?"."+e.options.classPrefix+"volume-slider":"."+e.options.classPrefix+"horizontal-volume-slider"))&&w(a)}),e.globalBind("mouseup.vol",function(){x=!1,e.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==g||(q.style.display="none")}),x=!0,a.preventDefault(),a.stopPropagation()}),u.addEventListener("click",function(){d.setMuted(!d.muted);var a=l.createEvent("volumechange",d);d.dispatchEvent(a)}),u.addEventListener("focus",function(){"vertical"===g&&(q.style.display="block")}),u.addEventListener("blur",function(){"vertical"===g&&(q.style.display="none")}),d.addEventListener("volumechange",function(a){x||(d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))),z(a)}),0===a.options.startVolume&&d.setMuted(!0);var A=null!==e.media.rendererName&&null!==e.media.rendererName.match(/(native|html5)/);A&&d.setVolume(a.options.startVolume),e.container.addEventListener("controlsresize",function(){d.muted?(v(0),m.removeClass(o,e.options.classPrefix+"mute"),m.addClass(o,e.options.classPrefix+"unmute")):(v(d.volume),m.removeClass(o,e.options.classPrefix+"unmute"),m.addClass(o,e.options.classPrefix+"mute"))})}}})},{16:16,19:19,2:2,20:20,21:21,4:4}],14:[function(a,b,c){"use strict";/*!
+ * This is a `i18n` language object.
+ *
+ * English; This can serve as a template for other languages to translate
+ *
+ * @author
+ *   TBD
+ *   Sascha Greuel (Twitter: @SoftCreatR)
+ *
+ * @see core/i18n.js
+ */
+Object.defineProperty(c,"__esModule",{value:!0});c.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","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/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(6),h=d(g);"undefined"!=typeof jQuery?h["default"].$=f["default"].jQuery=f["default"].$=jQuery:"undefined"!=typeof Zepto?h["default"].$=f["default"].Zepto=f["default"].$=Zepto:"undefined"!=typeof ender&&(h["default"].$=f["default"].ender=f["default"].$=ender)},{3:3,6:6}],16:[function(a,b,c){"use strict";function d(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b}function e(a){return a&&a.__esModule?a:{"default":a}}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(c,"__esModule",{value:!0}),c.config=void 0;var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},h=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}(),i=a(3),j=e(i),k=a(2),l=e(k),m=a(6),n=e(m),o=a(5),p=e(o),q=a(4),r=e(q),s=a(19),t=a(21),u=a(24),v=a(22),w=a(20),x=d(w);n["default"].mepIndex=0,n["default"].players={};var y=c.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(a,b){s.IS_FIREFOX||(b.paused||b.ended?b.play():b.pause())}},{keys:[38],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.volume+.1,1);b.setVolume(c),c>0&&b.setMuted(!1)}},{keys:[40],action:function(a,b){(a.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||a.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(a.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.volume-.1,0);b.setVolume(c),.1>=c&&b.setMuted(!0)}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a,b,c,d){d.ctrlKey||"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a){a.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",a.isVideo&&(a.showControls(),a.startControlsTimer()),a.media.muted?a.setMuted(!1):a.setMuted(!0)}}]};n["default"].MepDefaults=y;var z=function(){function a(b,c){f(this,a);var d=this,e="string"==typeof b?l["default"].getElementById(b):b;if(d.hasFocus=!1,d.controlsAreVisible=!0,d.controlsEnabled=!0,d.controlsTimer=null,!(d instanceof a))return new a(e,c);if(d.node=d.media=e,d.node){if(void 0!==d.media.player)return d.media.player;void 0===c&&(c=d.node.getAttribute("data-mejsoptions")),d.options=Object.assign({},y,c),d.options.timeFormat||(d.options.timeFormat="mm:ss",d.options.alwaysShowHours&&(d.options.timeFormat="hh:mm:ss"),d.options.showTimecodeFrameCount&&(d.options.timeFormat+=":ff")),u.calculateTimeFormat(0,d.options,d.options.framesPerSecond||25),d.id="mep_"+n["default"].mepIndex++,n["default"].players[d.id]=d;var g=Object.assign({},d.options,{success:function(a,b){d._meReady(a,b)},error:function(a){d._handleError(a)}}),h=d.node.tagName.toLowerCase();if(d.isDynamic="audio"!==h&&"video"!==h,d.isVideo=d.isDynamic?d.options.isVideo:"audio"!==h&&d.options.isVideo,s.IS_IPAD&&d.options.iPadUseNativeControls||s.IS_IPHONE&&d.options.iPhoneUseNativeControls)d.node.setAttribute("controls",!0),s.IS_IPAD&&d.node.getAttribute("autoplay")&&d.play();else if(!(d.isVideo||!d.isVideo&&d.options.features.length)||s.IS_ANDROID&&d.options.AndroidUseNativeControls)d.isVideo||d.options.features.length||(d.node.style.display="none");else{d.node.removeAttribute("controls");var i=d.isVideo?r["default"].t("mejs.video-player"):r["default"].t("mejs.audio-player"),j=l["default"].createElement("span");if(j.className=d.options.classPrefix+"offscreen",j.innerText=i,d.media.parentNode.insertBefore(j,d.media),d.container=l["default"].createElement("div"),d.container.id=d.id,d.container.className=d.options.classPrefix+"container "+d.options.classPrefix+"container-keyboard-inactive "+d.media.className,d.container.tabIndex=0,d.container.setAttribute("role","application"),d.container.setAttribute("aria-label",i),d.container.innerHTML='<div class="'+d.options.classPrefix+'inner">'+('<div class="'+d.options.classPrefix+'layers"></div>')+('<div class="'+d.options.classPrefix+'controls"></div>')+('<div class="'+d.options.classPrefix+'mediaelement"></div>')+('<div class="'+d.options.classPrefix+'clear"></div>')+"</div>",d.container.addEventListener("focus",function(a){if(!d.controlsAreVisible&&!d.hasFocus&&d.controlsEnabled&&(d.showControls(!0),!s.HAS_MS_NATIVE_FULLSCREEN)){var b=t.isNodeAfter(a.relatedTarget,d.container)?"."+d.options.classPrefix+"controls ."+d.options.classPrefix+"button:last-child > button":"."+d.options.classPrefix+"playpause-button > button",c=d.container.querySelector(b);c.focus()}}),d.node.parentNode.insertBefore(d.container,d.node),d.options.features.length||(d.container.style.background="transparent",d.container.querySelector("."+d.options.classPrefix+"controls").style.display="none"),d.isVideo&&"fill"===d.options.stretching&&!x.hasClass(d.container.parentNode,d.options.classPrefix+"fill-container")){d.outerContainer=d.media.parentNode;var k=l["default"].createElement("div");k.className=d.options.classPrefix+"fill-container",d.container.parentNode.insertBefore(k,d.container),k.appendChild(d.container)}s.IS_ANDROID&&x.addClass(d.container,d.options.classPrefix+"android"),s.IS_IOS&&x.addClass(d.container,d.options.classPrefix+"ios"),s.IS_IPAD&&x.addClass(d.container,d.options.classPrefix+"ipad"),s.IS_IPHONE&&x.addClass(d.container,d.options.classPrefix+"iphone"),x.addClass(d.container,d.isVideo?d.options.classPrefix+"video":d.options.classPrefix+"audio"),d.container.querySelector("."+d.options.classPrefix+"mediaelement").appendChild(d.node),d.media.player=d,d.controls=d.container.querySelector("."+d.options.classPrefix+"controls"),d.layers=d.container.querySelector("."+d.options.classPrefix+"layers");var m=d.isVideo?"video":"audio",o=m.substring(0,1).toUpperCase()+m.substring(1);d.options[m+"Width"]>0||d.options[m+"Width"].toString().indexOf("%")>-1?d.width=d.options[m+"Width"]:""!==d.node.style.width&&null!==d.node.style.width?d.width=d.node.style.width:d.node.getAttribute("width")?d.width=d.node.getAttribute("width"):d.width=d.options["default"+o+"Width"],d.options[m+"Height"]>0||d.options[m+"Height"].toString().indexOf("%")>-1?d.height=d.options[m+"Height"]:""!==d.node.style.height&&null!==d.node.style.height?d.height=d.node.style.height:d.node.getAttribute("height")?d.height=d.node.getAttribute("height"):d.height=d.options["default"+o+"Height"],d.initialAspectRatio=d.height>=d.width?d.width/d.height:d.height/d.width,d.setPlayerSize(d.width,d.height),g.pluginWidth=d.width,g.pluginHeight=d.height}if(new p["default"](d.media,g),void 0!==d.container&&d.options.features.length&&d.controlsAreVisible&&!d.options.hideVideoControlsOnLoad){var q=t.createEvent("controlsshown",d.container);d.container.dispatchEvent(q)}return d}}return h(a,[{key:"showControls",value:function(a){var b=this;if(a=void 0===a||a,!b.controlsAreVisible){if(a)!function(){x.removeClass(b.controls,b.options.classPrefix+"offscreen"),x.fadeIn(b.controls,200,function(){var a=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(a)});for(var a=b.container.querySelectorAll("."+b.options.classPrefix+"control"),c=function(c,d){x.fadeIn(a[c],200,function(){x.removeClass(a[c],b.options.classPrefix+"offscreen")})},d=0,e=a.length;e>d;d++)c(d,e)}();else{x.removeClass(b.controls,b.options.classPrefix+"offscreen"),b.controls.style.display="";for(var c=b.container.querySelectorAll("."+b.options.classPrefix+"control"),d=0,e=c.length;e>d;d++)x.removeClass(c[d],b.options.classPrefix+"offscreen"),c[d].style.display="";var f=t.createEvent("controlsshown",b.container);b.container.dispatchEvent(f)}b.controlsAreVisible=!0,b.setControlsSize()}}},{key:"hideControls",value:function(a,b){var c=this;if(a=void 0===a||a,b===!0||!(!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||c.media.paused&&4===c.media.readyState&&(!c.options.hideVideoControlsOnLoad&&c.media.currentTime<=0||!c.options.hideVideoControlsOnPause&&c.media.currentTime>0)||c.isVideo&&!c.options.hideVideoControlsOnLoad&&!c.media.readyState||c.media.ended)){if(a)!function(){x.fadeOut(c.controls,200,function(){x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";var a=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(a)});for(var a=c.container.querySelectorAll("."+c.options.classPrefix+"control"),b=function(b,d){x.fadeOut(a[b],200,function(){x.addClass(a[b],c.options.classPrefix+"offscreen"),a[b].style.display=""})},d=0,e=a.length;e>d;d++)b(d,e)}();else{x.addClass(c.controls,c.options.classPrefix+"offscreen"),c.controls.style.display="";for(var d=c.container.querySelectorAll("."+c.options.classPrefix+"control"),e=0,f=d.length;f>e;e++)x.addClass(d[e],c.options.classPrefix+"offscreen"),d[e].style.display="";var g=t.createEvent("controlshidden",c.container);c.container.dispatchEvent(g)}c.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(a){var b=this;a="undefined"!=typeof a?a:b.options.controlsTimeoutDefault,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)}},{key:"killControlsTimer",value:function(){var a=this;null!==a.controlsTimer&&(clearTimeout(a.controlsTimer),delete a.controlsTimer,a.controlsTimer=null)}},{key:"disableControls",value:function(){var a=this;a.killControlsTimer(),a.controlsEnabled=!0,a.hideControls(!1,!0)}},{key:"enableControls",value:function(){var a=this;a.controlsEnabled=!0,a.showControls(!1)}},{key:"_meReady",value:function(a,b){var c=this,d=b.getAttribute("autoplay"),e=!(void 0===d||null===d||"false"===d),f=null!==a.rendererName&&null!==a.rendererName.match(/(native|html5)/);if(c.controls&&c.enableControls(),c.container.querySelector("."+c.options.classPrefix+"overlay-play")&&(c.container.querySelector("."+c.options.classPrefix+"overlay-play").style.display=""),!c.created){if(c.created=!0,c.media=a,c.domNode=b,!(s.IS_ANDROID&&c.options.AndroidUseNativeControls||s.IS_IPAD&&c.options.iPadUseNativeControls||s.IS_IPHONE&&c.options.iPhoneUseNativeControls)){var h=function(){if(!c.isVideo&&!c.options.features.length)return e&&f&&c.play(),c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c)),{v:void 0};c.buildposter(c,c.controls,c.layers,c.media),c.buildkeyboard(c,c.controls,c.layers,c.media),c.buildoverlays(c,c.controls,c.layers,c.media),c.findTracks(),c.featurePosition={};for(var a=0,b=c.options.features.length;b>a;a++){var d=c.options.features[a];if(c["build"+d])try{c["build"+d](c,c.controls,c.layers,c.media)}catch(g){console.error("error building "+d,g)}}var h=t.createEvent("controlsready",c.container);c.container.dispatchEvent(h),c.setPlayerSize(c.width,c.height),c.setControlsSize(),c.isVideo&&(c.clickToPlayPauseCallback=function(){if(c.options.clickToPlayPause){var a=c.container.querySelector("."+c.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");c.media.paused&&b?c.pause():c.media.paused?c.play():c.pause(),a.setAttribute("aria-pressed",!b)}},c.createIframeLayer(),c.media.addEventListener("click",c.clickToPlayPauseCallback),!s.IS_ANDROID&&!s.IS_IOS||c.options.alwaysShowControls?(c.container.addEventListener("mouseenter",function(){c.controlsEnabled&&(c.options.alwaysShowControls||(c.killControlsTimer("enter"),c.showControls(),c.startControlsTimer(c.options.controlsTimeoutMouseEnter)))}),c.container.addEventListener("mousemove",function(){c.controlsEnabled&&(c.controlsAreVisible||c.showControls(),c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseEnter))}),c.container.addEventListener("mouseleave",function(){c.controlsEnabled&&(c.media.paused||c.options.alwaysShowControls||c.startControlsTimer(c.options.controlsTimeoutMouseLeave))})):c.node.addEventListener("touchstart",function(){c.controlsAreVisible?c.hideControls(!1):c.controlsEnabled&&c.showControls(!1)}),c.options.hideVideoControlsOnLoad&&c.hideControls(!1),e&&!c.options.alwaysShowControls&&c.hideControls(),c.options.enableAutosize&&c.media.addEventListener("loadedmetadata",function(a){c.options.videoHeight<=0&&!c.domNode.getAttribute("height")&&null!==a.target&&!isNaN(a.target.videoHeight)&&(c.setPlayerSize(a.target.videoWidth,a.target.videoHeight),c.setControlsSize(),c.media.setSize(a.target.videoWidth,a.target.videoHeight))})),c.media.addEventListener("play",function(){c.hasFocus=!0;for(var a in n["default"].players)if(n["default"].players.hasOwnProperty(a)){var b=n["default"].players[a];b.id===c.id||!c.options.pauseOtherPlayers||b.paused||b.ended||(b.pause(),b.hasFocus=!1)}}),c.media.addEventListener("ended",function(){if(c.options.autoRewind)try{c.media.setCurrentTime(0),setTimeout(function(){c.container.querySelector("."+c.options.classPrefix+"overlay-loading").parentNode.style.display="none"},20)}catch(a){}"function"==typeof c.media.stop?c.media.stop():c.media.pause(),c.setProgressRail&&c.setProgressRail(),c.setCurrentRail&&c.setCurrentRail(),c.options.loop?c.play():!c.options.alwaysShowControls&&c.controlsEnabled&&c.showControls()}),c.media.addEventListener("loadedmetadata",function(){u.calculateTimeFormat(c.duration,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.isFullScreen||(c.setPlayerSize(c.width,c.height),c.setControlsSize())});var i=null;c.media.addEventListener("timeupdate",function(){i!==c.media.duration&&(i=c.media.duration,u.calculateTimeFormat(i,c.options,c.options.framesPerSecond||25),c.updateDuration&&c.updateDuration(),c.updateCurrent&&c.updateCurrent(),c.setControlsSize())}),c.container.addEventListener("focusout",function(a){setTimeout(function(){a.relatedTarget&&c.keyboardAction&&!a.relatedTarget.closest(".mejs-container")&&(c.keyboardAction=!1,c.isVideo&&!c.options.alwaysShowControls&&c.hideControls(!0))},0)}),setTimeout(function(){c.setPlayerSize(c.width,c.height),c.setControlsSize()},0),c.globalBind("resize",function(){c.isFullScreen||s.HAS_TRUE_NATIVE_FULLSCREEN&&l["default"].webkitIsFullScreen||c.setPlayerSize(c.width,c.height),c.setControlsSize()}),c.globalBind("click",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.addClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.addClass(a.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")}),c.globalBind("keydown",function(a){a.target.matches("."+c.options.classPrefix+"container")?x.removeClass(a.target,c.options.classPrefix+"container-keyboard-inactive"):a.target.closest("."+c.options.classPrefix+"container")&&x.removeClass(h.target.closest("."+c.options.classPrefix+"container"),c.options.classPrefix+"container-keyboard-inactive")})}();if("object"===("undefined"==typeof h?"undefined":g(h)))return h.v}e&&f&&c.play(),c.options.success&&("string"==typeof c.options.success?j["default"][c.options.success](c.media,c.domNode,c):c.options.success(c.media,c.domNode,c))}}},{key:"_handleError",value:function(a){var b=this;b.controls&&b.disableControls();var c=b.layers.querySelector("."+b.options.classPrefix+"overlay-play");c&&(c.style.display="none"),b.options.error&&b.options.error(a)}},{key:"setPlayerSize",value:function(a,b){var c=this;if(!c.options.setDimensions)return!1;if("undefined"!=typeof a&&(c.width=a),"undefined"!=typeof b&&(c.height=b),"undefined"!=typeof FB&&c.isVideo){FB.Event.subscribe("xfbml.ready",function(){var a=c.media.firstChild;return c.width=parseFloat(a.offsetWidth),c.height=parseFloat(a.offsetHeight),c.setDimensions(c.width,c.height),!1});var d=c.media.firstChild;d.length&&(c.width=d.offsetWidth,c.height=d.offsetHeight)}switch(c.options.stretching){case"fill":c.isVideo?c.setFillMode():c.setDimensions(c.width,c.height);break;case"responsive":c.setResponsiveMode();break;case"none":c.setDimensions(c.width,c.height);break;default:c.hasFluidMode()===!0?c.setResponsiveMode():c.setDimensions(c.width,c.height)}}},{key:"hasFluidMode",value:function(){var a=this;return a.height.toString().includes("%")||a.node.style.maxWidth&&"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width||a.node.currentStyle&&"100%"===a.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var a=this,b=function(){for(var b=void 0,c=a.container;c;){if(b=c.parentElement,b&&x.visible(b))return b;c=b}return null}(),c=getComputedStyle(b,null),d=function(){return a.isVideo?a.media.videoWidth&&a.media.videoWidth>0?a.media.videoWidth:a.node.getAttribute("width")?a.node.getAttribute("width"):a.options.defaultVideoWidth:a.options.defaultAudioWidth}(),e=function(){return a.isVideo?a.media.videoHeight&&a.media.videoHeight>0?a.media.videoHeight:a.node.getAttribute("height")?a.node.getAttribute("height"):a.options.defaultVideoHeight:a.options.defaultAudioHeight}(),f=function(){var b=1;return a.isVideo?(b=a.media.videoWidth&&a.media.videoWidth>0&&a.media.videoHeight&&a.media.videoHeight>0?a.height>=a.width?a.media.videoWidth/a.media.videoHeight:a.media.videoHeight/a.media.videoWidth:a.initialAspectRatio,(isNaN(b)||.01>b||b>100)&&(b=1),b):b}(),g=parseFloat(c.height),h=void 0,i=parseFloat(c.width);if(h=a.isVideo?"100%"===a.height?parseInt(i*e/d,10):a.height>=a.width?parseInt(i/f,10):parseInt(i*f,10):e,isNaN(h)&&(h=g),a.container.parentNode.length>0&&"body"===a.container.parentNode.tagName.toLowerCase()&&(i=j["default"].innerWidth||l["default"].documentElement.clientWidth||l["default"].body.clientWidth,h=j["default"].innerHeight||l["default"].documentElement.clientHeight||l["default"].body.clientHeight),h&&i){a.container.style.width=i+"px",a.container.style.height=h+"px",a.node.style.width="100%",a.node.style.height="100%",a.isVideo&&a.media.setSize&&a.media.setSize(i,h);for(var k=a.layers.childNodes,m=0,n=k.length;n>m;m++)k[m].style.width="100%",k[m].style.height="100%"}}},{key:"setFillMode",value:function(){var a=this,b=a.outerContainer,c=getComputedStyle(b);"none"!==a.node.style.height&&a.node.style.height!==a.height&&(a.node.style.height=""),"none"!==a.node.style.maxWidth&&a.node.style.maxWidth!==a.width&&(a.node.style.maxWidth=""),"none"!==a.node.style.maxHeight&&a.node.style.maxHeight!==a.height&&(a.node.style.maxHeight=""),a.node.currentStyle&&("100%"===a.node.currentStyle.height&&(a.node.currentStyle.height=""),"100%"===a.node.currentStyle.maxWidth&&(a.node.currentStyle.maxWidth=""),"100%"===a.node.currentStyle.maxHeight&&(a.node.currentStyle.maxHeight="")),parseFloat(c.width)||(b.style.width=a.media.offsetWidth+"px"),parseFloat(c.height)||(b.style.height=a.media.offsetHeight+"px"),c=getComputedStyle(b);var d=parseFloat(c.width),e=parseFloat(c.height);a.setDimensions("100%","100%");var f=a.container.querySelector(a.options.classPrefix+"poster img");f&&(f.style.display="");for(var g=a.container.querySelectorAll("object, embed, iframe, video"),h=a.height,i=a.width,j=d,k=h*d/i,l=i*e/h,m=e,n=l>d==!1,o=n?Math.floor(j):Math.floor(l),p=n?Math.floor(k):Math.floor(m),q=n?d+"px":o+"px",r=n?p+"px":e+"px",s=0,t=g.length;t>s;s++)g[s].style.height=r,g[s].style.width=q,a.media.setSize&&a.media.setSize(q,r),g[s].style.marginLeft=Math.floor((d-o)/2)+"px",g[s].style.marginTop=0}},{key:"setDimensions",value:function(a,b){var c=this;a=t.isString(a)&&a.includes("%")?a:parseFloat(a)+"px",b=t.isString(b)&&b.includes("%")?b:parseFloat(b)+"px",c.container.style.width=a,c.container.style.height=b;for(var d=c.layers.childNodes,e=0,f=d.length;f>e;e++)d[e].style.width=a,d[e].style.height=b}},{key:"setControlsSize",value:function(){var a=this;if(x.visible(a.container)&&a.rail&&x.visible(a.rail)){for(var b=getComputedStyle(a.rail),c=getComputedStyle(a.total),d=parseFloat(b.marginLeft)+parseFloat(b.marginRight),e=parseFloat(c.marginLeft)+parseFloat(c.marginRight)||0,f=0,g=x.siblings(a.rail,function(b){return b!==a.rail}),h=g.length,i=0;h>i;i++)f+=g[i].offsetWidth;f+=e+(0===e?2*d:d)+1;var j=parseFloat(a.controls.offsetWidth);a.rail.style.width=(f>j?0:j-f)+"px";var k=t.createEvent("controlsresize",a.container);a.container.dispatchEvent(k)}}},{key:"addControlElement",value:function(a,b){var c=this;if(void 0!==c.featurePosition[b]){var d=c.controls.childNodes[c.featurePosition[b]-1];d.parentNode.insertBefore(a,d.nextSibling)}else{c.controls.appendChild(a);for(var e=c.controls.childNodes,f=0,g=e.length;g>f;f++)if(a==e[f]){c.featurePosition[b]=f;break}}}},{key:"createIframeLayer",value:function(){var a=this;if(a.isVideo&&null!==a.media.rendererName&&null!==a.media.rendererName.match(/iframe/i)&&!l["default"].getElementById(a.media.id+"-iframe-overlay")){var b=l["default"].createElement("div"),c=l["default"].getElementById(a.media.id+"_"+a.media.rendererName);b.id=a.media.id+"-iframe-overlay",b.className=a.options.classPrefix+"iframe-overlay",b.addEventListener("click",function(b){a.options.clickToPlayPause&&(a.media.paused?a.media.play():a.media.pause(),b.preventDefault(),b.stopPropagation())}),c.parentNode.insertBefore(b,c)}}},{key:"resetSize",value:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},{key:"setPoster",value:function(a){var b=this,c=b.container.querySelector("."+b.options.classPrefix+"poster"),d=c.querySelector("img");d||(d=l["default"].createElement("img"),d.className=b.options.classPrefix+"poster-img",d.width="100%",d.height="100%",c.appendChild(d)),d.setAttribute("src",a),c.style.backgroundImage='url("'+a+'")'}},{key:"changeSkin",value:function(a){var b=this;b.container.className=b.options.classPrefix+"container "+a,b.setPlayerSize(b.width,b.height),b.setControlsSize()}},{key:"globalBind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.addEventListener(c,b,!1),c},"");if(a.w)for(var h=a.w.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].addEventListener(c,b,!1),c},"")}},{key:"globalUnbind",value:function(a,b){var c=this,d=c.node?c.node.ownerDocument:l["default"];if(a=t.splitEvents(a,c.id),a.d)for(var e=a.d.split(" "),f=0,g=e.length;g>f;f++)e[f].split(".").reduce(function(a,c){return d.removeEventListener(c,b,!1),c},"");if(a.w)for(var h=a.d.split(" "),i=0,k=h.length;k>i;i++)h[i].split(".").reduce(function(a,c){return j["default"].removeEventListener(c,b,!1),c},"")}},{key:"buildposter",value:function(a,b,c,d){var e=this,f=l["default"].createElement("div");f.className=e.options.classPrefix+"poster "+e.options.classPrefix+"layer",c.appendChild(f);var g=a.media.getAttribute("poster");""!==a.options.poster&&(g=a.options.poster),g?e.setPoster(g):f.style.display="none",d.addEventListener("play",function(){f.style.display="none"}),d.addEventListener("playing",function(){f.style.display="none"}),a.options.showPosterWhenEnded&&a.options.autoRewind&&d.addEventListener("ended",function(){f.style.display=""}),d.addEventListener("error",function(){f.style.display="none"}),a.options.showPosterWhenPaused&&d.addEventListener("pause",function(){d.ended||(f.style.display="")})}},{key:"buildoverlays",value:function(a,b,c,d){if(a.isVideo){var e=this,f=l["default"].createElement("div"),g=l["default"].createElement("div"),h=l["default"].createElement("div"),i=b.querySelector("."+e.options.classPrefix+"time-buffering");f.style.display="none",f.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",f.innerHTML='<div class="'+e.options.classPrefix+'overlay-loading">'+('<span class="'+e.options.classPrefix+'overlay-loading-bg-img"></span>')+"</div>",c.appendChild(f),g.style.display="none",g.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer",g.innerHTML='<div class="'+e.options.classPrefix+'overlay-error"></div>',c.appendChild(g),h.className=e.options.classPrefix+"overlay "+e.options.classPrefix+"layer "+e.options.classPrefix+"overlay-play",h.innerHTML='<div class="'+e.options.classPrefix+'overlay-button" role="button" tabindex="0"'+('aria-label="'+r["default"].t("mejs.play")+'" aria-pressed="false"></div>'),h.addEventListener("click",function(){if(e.options.clickToPlayPause){var a=e.container.querySelector("."+e.options.classPrefix+"overlay-button"),b=a.getAttribute("aria-pressed");d.paused?d.play():d.pause(),a.setAttribute("aria-pressed",!!b)}}),c.appendChild(h),null!==e.media.rendererName&&(e.media.rendererName.match(/(youtube|facebook)/)&&!a.media.originalNode.getAttribute("poster")&&!a.options.poster||s.IS_STOCK_ANDROID)&&(h.style.display="none"),d.addEventListener("play",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("playing",function(){h.style.display="none",f.style.display="none",i&&(i.style.display="none"),g.style.display="none"}),d.addEventListener("seeking",function(){h.style.display="none",f.style.display="",i&&(i.style.display="")}),d.addEventListener("seeked",function(){h.style.display="",f.style.display="none",i&&(i.style.display="")}),d.addEventListener("pause",function(){f.style.display="none",s.IS_STOCK_ANDROID||(h.style.display=""),i&&(i.style.display="none")}),d.addEventListener("waiting",function(){f.style.display="",i&&(i.style.display="")}),d.addEventListener("loadeddata",function(){f.style.display="",i&&(i.style.display=""),s.IS_ANDROID&&(d.canplayTimeout=setTimeout(function(){if(l["default"].createEvent){var a=l["default"].createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),d.dispatchEvent(a)}},300))}),d.addEventListener("canplay",function(){f.style.display="none",i&&(i.style.display="none"),clearTimeout(d.canplayTimeout)}),d.addEventListener("error",function(a){e._handleError(a),f.style.display="none",h.style.display="none",i&&(i.style.display="none"),g.style.display="block",g.querySelector("."+e.options.classPrefix+"overlay-error").innerHTML=a.message}),d.addEventListener("keydown",function(b){e.onkeydown(a,d,b)})}}},{key:"buildkeyboard",value:function(a,b,c,d){var e=this;e.container.addEventListener("keydown",function(){e.keyboardAction=!0}),e.globalBind("keydown",function(b){var c=l["default"].activeElement.closest("."+e.options.classPrefix+"container"),f=e.media.closest("."+e.options.classPrefix+"container");return e.hasFocus=!(!c||!f||c.id!==f.id),e.onkeydown(a,d,b)}),e.globalBind("click",function(a){e.hasFocus=!!a.target.closest("."+e.options.classPrefix+"container")})}},{key:"onkeydown",value:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)c.keyCode===f.keys[g]&&(f.action(a,b,c.keyCode,c),c.preventDefault(),c.stopPropagation());return!0}},{key:"play",value:function(){var a=this;a.media.getCurrentTime()<=0&&a.load(),a.media.play()}},{key:"pause",value:function(){try{this.media.pause()}catch(a){}}},{key:"load",value:function(){var a=this;a.isLoaded||a.media.load(),a.isLoaded=!0}},{key:"setMuted",value:function(a){this.media.setMuted(a)}},{key:"setCurrentTime",value:function(a){this.media.setCurrentTime(a)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"setVolume",value:function(a){this.media.setVolume(a)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(a){var b=this,c=l["default"].getElementById(b.media.id+"-iframe-overlay");c&&c.remove(),b.media.setSrc(a),b.createIframeLayer()}},{key:"remove",value:function(){var a=this,b=a.media.rendererName;a.media.paused||a.media.pause();
+var c=a.media.originalNode.getAttribute("src");a.media.setSrc("");for(var d in a.options.features){var e=a.options.features[d];if(a["clean"+e])try{a["clean"+e](a)}catch(f){console.error("error cleaning "+e,f)}}var h=a.node.getAttribute("width"),i=a.node.getAttribute("height");if(h?null===h.match("%")&&(h+="px"):h="auto",i?null===i.match("%")&&(i+="px"):i="auto",a.node.style.width=h,a.node.style.height=i,a.isDynamic)a.container.parentNode.insertBefore(a.node,a.container);else{if(a.node.setAttribute("controls",!0),a.node.setAttribute("id",a.node.getAttribute("id").replace("_"+b,"").replace("_from_mejs","")),delete a.node.autoplay,a.media.canPlayType(v.getTypeFromFile(c))&&a.node.setAttribute("src",c),null!==b.match(/iframe/i)){var j=l["default"].getElementById(a.media.id+"-iframe-overlay");j.remove()}var k=a.node.cloneNode(!0);a.container.parentNode.insertBefore(k,a.container),a.node.remove(),delete a.node}if("function"==typeof a.media.destroy&&a.media.destroy(),delete n["default"].players[a.id],"object"===g(a.container)){var m=a.container.parentNode.querySelector("."+a.options.classPrefix+"offscreen");m.remove(),a.container.remove()}a.globalUnbind(),delete a.media.player}}]),a}();j["default"].MediaElementPlayer=z,c["default"]=z,function(a){"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return b===!1?this.each(function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}):this.each(function(){a(this).data("mediaelementplayer",new z(this,b))}),this},a(l["default"]).ready(function(){a("."+y.classPrefix+"player").mediaelementplayer()}))}(n["default"].$)},{19:19,2:2,20:20,21:21,22:22,24:24,3:3,4:4,5:5,6:6}],17:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.PluginDetector=void 0;var e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},f=a(3),g=d(f),h=a(2),i=d(h),j=a(6),k=d(j),l=a(4),m=d(l),n=a(7),o=a(21),p=a(19),q=a(22),r=c.PluginDetector={plugins:[],hasPluginVersion:function(a,b){var c=r.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]===b[0]&&c[1]>b[1]||c[0]===b[0]&&c[1]===b[1]&&c[2]>=b[2]},addPlugin:function(a,b,c,d,e){r.plugins[a]=r.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var f=[0,0,0],h=void 0,i=void 0;if(null!==p.NAV.plugins&&void 0!==p.NAV.plugins&&"object"===e(p.NAV.plugins[a])){if(h=p.NAV.plugins[a].description,h&&("undefined"==typeof p.NAV.mimeTypes||!p.NAV.mimeTypes[b]||p.NAV.mimeTypes[b].enabledPlugin)){f=h.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".");for(var j=0,k=f.length;k>j;j++)f[j]=parseInt(f[j].match(/\d+/),10)}}else if(void 0!==g["default"].ActiveXObject)try{i=new ActiveXObject(c),i&&(f=d(i))}catch(l){}return f}};r.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b});var s={create:function(a,b,c){var d={};d.options=b,d.id=a.id+"_"+d.options.prefix,d.mediaElement=a,d.flashState={},d.flashApi=null,d.flashApiStack=[];for(var f=k["default"].html5media.properties,h=function(a){d.flashState[a]=null;var b=""+a.substring(0,1).toUpperCase()+a.substring(1);d["get"+b]=function(){if(null===d.flashApi)return null;if(void 0===d.flashApi["get_"+a])return null;var b=function(){var b=d.flashApi["get_"+a]();return"buffered"===a?{v:{start:function(){return 0},end:function(){return b},length:1}}:{v:b}}();return"object"===("undefined"==typeof b?"undefined":e(b))?b.v:void 0},d["set"+b]=function(b){"src"===a&&(b=q.absolutizeUrl(b)),null!==d.flashApi&&void 0!==d.flashApi["set_"+a]?d.flashApi["set_"+a](b):d.flashApiStack.push({type:"set",propName:a,value:b})}},j=0,l=f.length;l>j;j++)h(f[j]);var r=k["default"].html5media.methods,s=function(a){d[a]=function(){if(null!==d.flashApi){if(d.flashApi["fire_"+a])try{d.flashApi["fire_"+a]()}catch(b){}}else d.flashApiStack.push({type:"call",methodName:a})}};r.push("stop");for(var t=0,u=r.length;u>t;t++)s(r[t]);for(var v=["rendererready","loadeddata","loadedmetadata","canplay","error"],w=0,x=v.length;x>w;w++){var y=o.createEvent(v[w],d);a.dispatchEvent(y)}g["default"]["__ready__"+d.id]=function(){if(d.flashReady=!0,d.flashApi=i["default"].getElementById("__"+d.id),d.flashApiStack.length)for(var a=0,b=d.flashApiStack.length;b>a;a++){var c=d.flashApiStack[a];if("set"===c.type){var e=c.propName,f=""+e.substring(0,1).toUpperCase()+e.substring(1);d["set"+f](c.value)}else"call"===c.type&&d[c.methodName]()}},g["default"]["__event__"+d.id]=function(a,b){var c=o.createEvent(a,d);c.message=b||"",d.mediaElement.dispatchEvent(c)},d.flashWrapper=i["default"].createElement("div"),["always","sameDomain"].includes(d.options.shimScriptAccess)||(d.options.shimScriptAccess="sameDomain");var z=a.originalNode.autoplay,A=["uid="+d.id,"autoplay="+z,"allowScriptAccess="+d.options.shimScriptAccess],B=null!==a.originalNode&&"video"===a.originalNode.tagName.toLowerCase(),C=B?a.originalNode.height:1,D=B?a.originalNode.width:1;a.originalNode.getAttribute("src")&&A.push("src="+a.originalNode.getAttribute("src")),d.options.enablePseudoStreaming===!0&&(A.push("pseudostreamstart="+d.options.pseudoStreamingStartQueryParam),A.push("pseudostreamtype="+d.options.pseudoStreamingType)),a.appendChild(d.flashWrapper),null!==a.originalNode&&(a.originalNode.style.display="none");var E=[];if(p.IS_IE){var F=i["default"].createElement("div");d.flashWrapper.appendChild(F),E=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+d.id+'"','width="'+D+'"','height="'+C+'"'],B||E.push('style="clip: rect(0 0 0 0); position: absolute;"'),F.outerHTML="<object "+E.join(" ")+">"+('<param name="movie" value="'+d.options.pluginPath+d.options.filename+"?x="+new Date+'" />')+('<param name="flashvars" value="'+A.join("&amp;")+'" />')+'<param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" />'+('<param name="allowScriptAccess" value="'+d.options.shimScriptAccess+'" />')+'<param name="allowFullScreen" value="true" />'+("<div>"+m["default"].t("mejs.install-flash")+"</div>")+"</object>"}else E=['id="__'+d.id+'"','name="__'+d.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+d.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+d.options.pluginPath+d.options.filename+'"','flashvars="'+A.join("&")+'"','width="'+D+'"','height="'+C+'"'],B||E.push('style="clip: rect(0 0 0 0); position: absolute;"'),d.flashWrapper.innerHTML="<embed "+E.join(" ")+">";if(d.flashNode=d.flashWrapper.lastChild,d.hide=function(){if(B){d.flashNode.style.position="absolute",d.flashNode.style.width="1px",d.flashNode.style.height="1px";try{d.flashNode.style.clip="rect(0 0 0 0);"}catch(a){}}},d.show=function(){if(B){d.flashNode.style.position="",d.flashNode.style.width="",d.flashNode.style.height="";try{d.flashNode.style.clip=""}catch(a){}}},d.setSize=function(a,b){d.flashNode.style.width=a+"px",d.flashNode.style.height=b+"px",null!==d.flashApi&&"function"==typeof d.flashApi.fire_setSize&&d.flashApi.fire_setSize(a,b)},d.destroy=function(){d.flashNode.remove()},c&&c.length>0)for(var G=0,H=c.length;H>G;G++)if(n.renderer.renderers[b.prefix].canPlayType(c[G].type)){d.setSrc(c[G].src);break}return d}},t=r.hasPluginVersion("flash",[10,0,0]);if(t){q.typeChecks.push(function(a){return a=a.toLowerCase(),a.startsWith("rtmp")?a.includes(".mp3")?"audio/rtmp":"video/rtmp":a.includes(".oga")||a.includes(".ogg")?"audio/ogg":a.includes(".m3u8")?"application/x-mpegURL":a.includes(".mpd")?"application/dash+xml":a.includes(".flv")?"video/flv":null});var u={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(a){return["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(u);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(a){return["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())},create:s.create};n.renderer.add(v);var w={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(a){return["application/dash+xml"].includes(a.toLowerCase())},create:s.create};n.renderer.add(w);var x={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(a){return["audio/mp3"].includes(a.toLowerCase())},create:s.create};n.renderer.add(x);var y={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(a){return["audio/ogg","audio/oga","audio/ogv"].includes(a.toLowerCase())},create:s.create};n.renderer.add(y)}},{19:19,2:2,21:21,22:22,3:3,4:4,6:6,7:7}],18:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=a(7),l=a(21),m=a(19),n={name:"html5",options:{prefix:"html5"},canPlayType:function(a){var b=h["default"].createElement("video");return m.IS_ANDROID&&null!==a.match(/\/mp(3|4)$/gi)||["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].includes(a.toLowerCase())&&m.SUPPORTS_NATIVE_HLS?"yes":b.canPlayType?b.canPlayType(a).replace(/no/,""):""},create:function(a,b,c){var d=a.id+"_"+b.prefix,e=null;void 0===a.originalNode||null===a.originalNode?(e=h["default"].createElement("audio"),a.appendChild(e)):e=a.originalNode,e.setAttribute("id",d);for(var f=j["default"].html5media.properties,g=function(a){var b=""+a.substring(0,1).toUpperCase()+a.substring(1);e["get"+b]=function(){return e[a]},e["set"+b]=function(b){j["default"].html5media.readOnlyProperties.includes(a)||(e[a]=b)}},i=0,m=f.length;m>i;i++)g(f[i]);for(var n=j["default"].html5media.events.concat(["click","mouseover","mouseout"]),o=function(b){e.addEventListener(b,function(b){var c=h["default"].createEvent("HTMLEvents");c.initEvent(b.type,b.bubbles,b.cancelable),a.dispatchEvent(c)})},p=0,q=n.length;q>p;p++)o(n[p]);if(e.setSize=function(a,b){return e.style.width=a+"px",e.style.height=b+"px",e},e.hide=function(){return e.style.display="none",e},e.show=function(){return e.style.display="",e},c&&c.length>0)for(var r=0,s=c.length;s>r;r++)if(k.renderer.renderers[b.prefix].canPlayType(c[r].type)){e.setAttribute("src",c[r].src);break}var t=l.createEvent("rendererready",e);return a.dispatchEvent(t),e}};f["default"].HtmlMediaElement=j["default"].HtmlMediaElement=n,k.renderer.add(n)},{19:19,2:2,21:21,3:3,6:6,7:7}],19:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(c,"__esModule",{value:!0}),c.cancelFullScreen=c.requestFullScreen=c.isFullScreen=c.FULLSCREEN_EVENT_NAME=c.HAS_NATIVE_FULLSCREEN_ENABLED=c.HAS_TRUE_NATIVE_FULLSCREEN=c.HAS_IOS_FULLSCREEN=c.HAS_MS_NATIVE_FULLSCREEN=c.HAS_MOZ_NATIVE_FULLSCREEN=c.HAS_WEBKIT_NATIVE_FULLSCREEN=c.HAS_NATIVE_FULLSCREEN=c.SUPPORTS_NATIVE_HLS=c.SUPPORT_POINTER_EVENTS=c.HAS_MSE=c.IS_STOCK_ANDROID=c.IS_SAFARI=c.IS_FIREFOX=c.IS_CHROME=c.IS_EDGE=c.IS_IE=c.IS_ANDROID=c.IS_IOS=c.IS_IPHONE=c.IS_IPAD=c.UA=c.NAV=void 0;for(var e=a(3),f=d(e),g=a(2),h=d(g),i=a(6),j=d(i),k=c.NAV=f["default"].navigator,l=c.UA=k.userAgent.toLowerCase(),m=c.IS_IPAD=null!==l.match(/ipad/i),n=c.IS_IPHONE=null!==l.match(/iphone/i),o=(c.IS_IOS=n||m,c.IS_ANDROID=null!==l.match(/android/i)),p=c.IS_IE=k.appName.toLowerCase().includes("microsoft")||null!==k.appName.toLowerCase().match(/trident/gi),q=(c.IS_EDGE="msLaunchUri"in k&&!("documentMode"in h["default"])),r=c.IS_CHROME=null!==l.match(/chrome/gi),s=c.IS_FIREFOX=null!==l.match(/firefox/gi),t=c.IS_SAFARI=null!==l.match(/safari/gi)&&!r,u=c.IS_STOCK_ANDROID=null!==l.match(/^mozilla\/\d+\.\d+\s\(linux;\su;/gi),v=(c.HAS_MSE="MediaSource"in f["default"]),w=(c.SUPPORT_POINTER_EVENTS=function(){var a=h["default"].createElement("x"),b=h["default"].documentElement,c=f["default"].getComputedStyle;if(!("pointerEvents"in a.style))return!1;a.style.pointerEvents="auto",a.style.pointerEvents="x",b.appendChild(a);var d=c&&"auto"===c(a,"").pointerEvents;return a.remove(),!!d}()),x=["source","track","audio","video"],y=void 0,z=0,A=x.length;A>z;z++)y=h["default"].createElement(x[z]);var B=c.SUPPORTS_NATIVE_HLS=t||o&&(r||u)||p&&null!==l.match(/edge/gi),C=void 0!==y.webkitEnterFullscreen,D=void 0!==y.requestFullscreen;C&&l.match(/mac os x 10_5/i)&&(D=!1,C=!1);var E=void 0!==y.webkitRequestFullScreen,F=void 0!==y.mozRequestFullScreen,G=void 0!==y.msRequestFullscreen,H=E||F||G,I=H,J="",K=void 0,L=void 0,M=void 0;F?I=h["default"].mozFullScreenEnabled:G&&(I=h["default"].msFullscreenEnabled),r&&(C=!1),H&&(E?J="webkitfullscreenchange":F?J="mozfullscreenchange":G&&(J="MSFullscreenChange"),c.isFullScreen=K=function(){return F?h["default"].mozFullScreen:E?h["default"].webkitIsFullScreen:G?null!==h["default"].msFullscreenElement:void 0},c.requestFullScreen=L=function(a){E?a.webkitRequestFullScreen():F?a.mozRequestFullScreen():G&&a.msRequestFullscreen()},c.cancelFullScreen=M=function(){E?h["default"].webkitCancelFullScreen():F?h["default"].mozCancelFullScreen():G&&h["default"].msExitFullscreen()});var N=c.HAS_NATIVE_FULLSCREEN=D,O=c.HAS_WEBKIT_NATIVE_FULLSCREEN=E,P=c.HAS_MOZ_NATIVE_FULLSCREEN=F,Q=c.HAS_MS_NATIVE_FULLSCREEN=G,R=c.HAS_IOS_FULLSCREEN=C,S=c.HAS_TRUE_NATIVE_FULLSCREEN=H,T=c.HAS_NATIVE_FULLSCREEN_ENABLED=I,U=c.FULLSCREEN_EVENT_NAME=J;c.isFullScreen=K,c.requestFullScreen=L,c.cancelFullScreen=M,j["default"].Features=j["default"].Features||{},j["default"].Features.isiPad=m,j["default"].Features.isiPhone=n,j["default"].Features.isiOS=j["default"].Features.isiPhone||j["default"].Features.isiPad,j["default"].Features.isAndroid=o,j["default"].Features.isIE=p,j["default"].Features.isEdge=q,j["default"].Features.isChrome=r,j["default"].Features.isFirefox=s,j["default"].Features.isSafari=t,j["default"].Features.isStockAndroid=u,j["default"].Features.hasMSE=v,j["default"].Features.supportsNativeHLS=B,j["default"].Features.supportsPointerEvents=w,j["default"].Features.hasiOSFullScreen=R,j["default"].Features.hasNativeFullscreen=N,j["default"].Features.hasWebkitNativeFullScreen=O,j["default"].Features.hasMozNativeFullScreen=P,j["default"].Features.hasMsNativeFullScreen=Q,j["default"].Features.hasTrueNativeFullScreen=S,j["default"].Features.nativeFullScreenEnabled=T,j["default"].Features.fullScreenEventName=U,j["default"].Features.isFullScreen=K,j["default"].Features.requestFullScreen=L,j["default"].Features.cancelFullScreen=M},{2:2,3:3,6:6}],20:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){var b=a.getBoundingClientRect(),c=m["default"].pageXOffset||o["default"].documentElement.scrollLeft,d=m["default"].pageYOffset||o["default"].documentElement.scrollTop;return{top:b.top+d,left:b.left+c}}function f(a,b){u(a,b)?w(a,b):v(a,b)}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=1);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d;a.style.opacity=parseFloat(1-g/b,2),g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function h(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,c=arguments[2];a.style.opacity||(a.style.opacity=0);var d=null;m["default"].requestAnimationFrame(function e(f){d=d||f;var g=f-d;a.style.opacity=parseFloat(g/b,2),g>b?c&&"function"==typeof c&&c():m["default"].requestAnimationFrame(e)})}function i(a,b){var c=[];a=a.parentNode.firstChild;do(!b||b(a))&&c.push(a);while(a=a.nextSibling);return c}function j(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)}function k(a,b,c,d){var e=m["default"].XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),f="application/x-www-form-urlencoded; charset=UTF-8",g=!1,h="*/".concat("*");switch(b){case"text":f="text/plain";break;case"json":f="application/json, text/javascript";break;case"html":f="text/html";break;case"xml":f="application/xml, text/xml"}f.includes("application/x-www-form-urlencoded")||(h=f+", */*; q=0.01"),e&&(e.open("GET",a,!0),e.setRequestHeader("Accept",h),e.onreadystatechange=function(){if(!g&&4===e.readyState)if(200===e.status){g=!0;var a=void 0;switch(b){case"json":a=JSON.parse(e.responseText);break;case"xml":a=e.responseXML;break;default:a=e.responseText}c(a)}else"function"==typeof d&&d(e.status)},e.send())}Object.defineProperty(c,"__esModule",{value:!0}),c.removeClass=c.addClass=c.hasClass=void 0,c.offset=e,c.toggleClass=f,c.fadeOut=g,c.fadeIn=h,c.siblings=i,c.visible=j,c.ajax=k;var l=a(3),m=d(l),n=a(2),o=d(n),p=a(6),q=d(p),r=void 0,s=void 0,t=void 0;"classList"in o["default"].documentElement?(r=function(a,b){return void 0!==a.classList&&a.classList.contains(b)},s=function(a,b){return a.classList.add(b)},t=function(a,b){return a.classList.remove(b)}):(r=function(a,b){return new RegExp("\\b"+b+"\\b").test(a.className)},s=function(a,b){u(a,b)||(a.className+=" "+b)},t=function(a,b){a.className=a.className.replace(new RegExp("\\b"+b+"\\b","g"),"")});var u=c.hasClass=r,v=c.addClass=s,w=c.removeClass=t;q["default"].Utils=q["default"].Utils||{},q["default"].Utils.offset=e,q["default"].Utils.hasClass=u,q["default"].Utils.addClass=v,q["default"].Utils.removeClass=w,q["default"].Utils.toggleClass=f,q["default"].Utils.fadeIn=h,q["default"].Utils.fadeOut=g,q["default"].Utils.siblings=i,q["default"].Utils.visible=j,q["default"].Utils.ajax=k},{2:2,3:3,6:6}],21:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("Argument passed must be a string");var b={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return a.replace(/[&<>"]/g,function(a){return b[a]})}function f(a,b){var c=this,d=arguments,e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1;if("function"!=typeof a)throw new Error("First argument must be a function");if("number"!=typeof b)throw new Error("Second argument must be a numeric value");var f=void 0;return function(){var g=c,h=d,i=function(){f=null,e||a.apply(g,h)},j=e&&!f;clearTimeout(f),f=setTimeout(i,b),j&&a.apply(g,h)}}function g(a){return Object.getOwnPropertyNames(a).length<=0}function h(a,b){var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,d={d:[],w:[]};return(a||"").split(" ").forEach(function(a){var e=""+a+(b?"."+b:"");e.startsWith(".")?(d.d.push(e),d.w.push(e)):d[c.test(a)?"w":"d"].push(e)}),d.d=d.d.join(" "),d.w=d.w.join(" "),d}function i(a,b){if("string"!=typeof a)throw new Error("Event name must be a string");var c=a.match(/[a-z]+\.([a-z]+)/),d={target:b};return null!==c&&(a=c[0],d.namespace=c[1]),new window.CustomEvent(a,{detail:d})}function j(a,b){return!!(a&&b&&2&a.compareDocumentPosition(b))}function k(a){return"string"==typeof a}Object.defineProperty(c,"__esModule",{value:!0}),c.escapeHTML=e,c.debounce=f,c.isObjectEmpty=g,c.splitEvents=h,c.createEvent=i,c.isNodeAfter=j,c.isString=k;var l=a(6),m=d(l);m["default"].Utils=m["default"].Utils||{},m["default"].Utils.escapeHTML=e,m["default"].Utils.debounce=f,m["default"].Utils.isObjectEmpty=g,m["default"].Utils.splitEvents=h,m["default"].Utils.createEvent=i,m["default"].Utils.isNodeAfter=j,m["default"].Utils.isString=k},{6:6}],22:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=document.createElement("div");return b.innerHTML='<a href="'+m.escapeHTML(a)+'">x</a>',b.firstChild.href}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return a&&!b?h(a):g(b)}function g(a){if("string"!=typeof a)throw new Error("`type` argument must be a string");return a&&~a.indexOf(";")?a.substr(0,a.indexOf(";")):a}function h(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");for(var b=0,c=n.length;c>b;b++){var d=n[b](a);if(d)return d}var e=i(a),f=j(e),g="video/mp4";return f&&(["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].includes(f)?g="video/"+f:["mp3","oga","wav","mid","midi"].includes(f)&&(g="audio/"+f)),g}function i(a){if("string"!=typeof a)throw new Error("`url` argument must be a string");var b=a.split("?")[0],c=b.split("\\").pop().split("/").pop();return c.indexOf(".")>-1?c.substring(c.lastIndexOf(".")+1):""}function j(a){if("string"!=typeof a)throw new Error("`extension` argument must be a string");switch(a){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}}Object.defineProperty(c,"__esModule",{value:!0}),c.typeChecks=void 0,c.absolutizeUrl=e,c.formatType=f,c.getMimeFromType=g,c.getTypeFromFile=h,c.getExtension=i,c.normalizeExtension=j;var k=a(6),l=d(k),m=a(21),n=c.typeChecks=[];l["default"].Utils=l["default"].Utils||{},l["default"].Utils.typeChecks=n,l["default"].Utils.absolutizeUrl=e,l["default"].Utils.formatType=f,l["default"].Utils.getMimeFromType=g,l["default"].Utils.getTypeFromFile=h,l["default"].Utils.getExtension=i,l["default"].Utils.normalizeExtension=j},{21:21,6:6}],23:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}var e=a(2),f=d(e);!function(a){a.forEach(function(a){a.hasOwnProperty("remove")||Object.defineProperty(a,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=f["default"].createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}return"function"==typeof window.CustomEvent?!1:(a.prototype=window.Event.prototype,void(window.CustomEvent=a))}(),"function"!=typeof Object.assign&&(Object.assign=function(a){if(null===a||void 0===a)throw new TypeError("Cannot convert undefined or null to object");for(var b=Object(a),c=1,d=arguments.length;d>c;c++){var e=arguments[c];if(null!==e)for(var f in e)Object.prototype.hasOwnProperty.call(e,f)&&(b[f]=e[f])}return b}),Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{value:function(a,b){if(null===this||void 0===this)throw new TypeError('"this" is null or not defined');var c=Object(this),d=c.length>>>0;if(0===d)return!1;for(var e=0|b,f=Math.max(e>=0?e:d-Math.abs(e),0);d>f;){if(c[f]===a)return!0;f++}return!1}}),String.prototype.includes||(String.prototype.includes=function(a,b){return"number"!=typeof b&&(b=0),b+a.length>this.length?!1:-1!==this.indexOf(a,b)}),String.prototype.startsWith||(String.prototype.startsWith=function(a,b){return b=b||0,this.substr(b,a.length)===a}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(a){for(var b=(this.document||this.ownerDocument).querySelectorAll(a),c=b.length-1;--c>=0&&b.item(c)!==this;);return c>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(a){var b=(this.document||this.ownerDocument).querySelectorAll(a),c=void 0,d=this;do for(c=b.length;--c>=0&&b.item(c)!==d;);while(0>c&&(d=d.parentElement));return d}),function(){for(var a=0,b=["ms","moz","webkit","o"],c=0;c<b.length&&!window.requestAnimationFrame;++c)window.requestAnimationFrame=window[b[c]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[b[c]+"CancelAnimationFrame"]||window[b[c]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(b){var c=(new Date).getTime(),d=Math.max(0,16-(c-a)),e=window.setTimeout(function(){b(c+d)},d);return a=c+d,e}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(a){clearTimeout(a)})}()},{2:2}],24:[function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:25;return!(a%1===0)}function f(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:!1,c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:!1,d=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,f=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;a=!a||"number"!=typeof a||0>a?0:a;var g=Math.round(.066666*d),h=Math.round(d),i=24*Math.round(3600*d),j=Math.round(600*d),k=e(d)?";":":",l=void 0,m=void 0,n=void 0,o=void 0,p=Math.round(a*d);if(e(d)){0>p&&(p=i+p),p%=i;var q=Math.floor(p/j),r=p%j;p+=9*g*q,r>g&&(p+=g*Math.floor((r-g)/Math.round(60*h-g)));var s=Math.floor(p/h);l=Math.floor(Math.floor(s/60)/60),m=Math.floor(s/60)%60,n=c?s%60:(p/h%60).toFixed(f)}else l=Math.floor(a/3600)%24,m=Math.floor(a/60)%60,n=c?Math.floor(a%60):(a%60).toFixed(f);l=0>=l?0:l,m=0>=m?0:m,n=0>=n?0:n;var t=b||l>0?(10>l?"0"+l:l)+":":"";return t+=(10>m?"0"+m:m)+":",t+=""+(10>n?"0"+n:n),c&&(o=(p%h).toFixed(0),o=0>=o?0:o,t+=10>o?k+"0"+o:""+k+o),t}function g(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof a)throw new TypeError("Time must be a string");if(a.indexOf(";")>0&&(a=a.replace(";",":")),!a.match(/\d{2}(\:\d{2}){0,3}/))throw new TypeError("Time code must have the format `00:00:00`");var c=a.split(":"),d=void 0,f=0,g=0,h=0,i=0,j=0,k=Math.round(.066666*b),l=Math.round(b),m=3600*l,n=60*l;switch(c.length){default:case 1:h=parseInt(c[0],10);break;case 2:g=parseInt(c[0],10),h=parseInt(c[1],10);break;case 3:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10);break;case 4:f=parseInt(c[0],10),g=parseInt(c[1],10),h=parseInt(c[2],10),i=parseInt(c[3],10)}return e(b)?(j=60*f+g,d=m*f+n*g+l*h+i-k*(j-Math.floor(j/10))):d=(m*f+n*g+b*h+i)/b,parseFloat(d.toFixed(3))}function h(a,b){var c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;a=!a||"number"!=typeof a||0>a?0:a;for(var d=Math.floor(a/3600)%24,e=Math.floor(a/60)%60,f=Math.floor(a%60),g=Math.floor((a%1*c).toFixed(3)),h=[[g,"f"],[f,"s"],[e,"m"],[d,"h"]],i=b.timeFormat,j=i[1]===i[0],k=j?2:1,l=i.length<k?i[k]:":",m=i[0],n=!1,o=0,p=h.length;p>o;o++)if(i.indexOf(h[o][1])>-1)n=!0;else if(n){for(var q=!1,r=o;p>r;r++)if(h[r][0]>0){q=!0;break}if(!q)break;j||(i=m+i),i=h[o][1]+l+i,j&&(i=h[o][1]+i),m=h[o][1]}b.currentTimeFormat=i}function i(a){if("string"!=typeof a)throw new TypeError("Argument must be a string value");a=a.replace(",",".");var b=a.indexOf(".")>-1?a.split(".")[1].length:0,c=0,d=1;a=a.split(":").reverse();for(var e=0,f=a.length;f>e;e++)d=1,e>0&&(d=Math.pow(60,e)),c+=Number(a[e])*d;return Number(c.toFixed(b))}Object.defineProperty(c,"__esModule",{value:!0}),c.isDropFrame=e,c.secondsToTimeCode=f,c.timeCodeToSeconds=g,c.calculateTimeFormat=h,c.convertSMPTEtoSeconds=i;var j=a(6),k=d(j);k["default"].Utils=k["default"].Utils||{},k["default"].Utils.secondsToTimeCode=f,k["default"].Utils.timeCodeToSeconds=g,k["default"].Utils.calculateTimeFormat=h,k["default"].Utils.convertSMPTEtoSeconds=i},{6:6}]},{},[23,5,4,14,18,17,15,16,8,9,10,11,12,13]);
\ No newline at end of file
diff --git a/lib/mejs/mejs-skins.css b/lib/mejs/mejs-skins.css
deleted file mode 100644
index 5c27cf15..00000000
--- a/lib/mejs/mejs-skins.css
+++ /dev/null
@@ -1,289 +0,0 @@
-/* TED player */
-.mejs-container.mejs-ted {
-
-}
-.mejs-ted .mejs-controls {
-	background: #eee;
-	height: 65px;
-}
-
-.mejs-ted .mejs-button,
-.mejs-ted .mejs-time {
-	position: absolute;
-	background: #ddd;
-}
-.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-total {
-	background-color: none;
-	background: url(controls-ted.png) repeat-x 0 -52px;
-	height: 6px;
-}
-.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-buffering {
-	height: 6px;
-}
-.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-loaded {
-	background-color: none;
-	background: url(controls-ted.png) repeat-x 0 -52px;
-	width: 0;
-	height: 6px;
-}
-.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-current {
-	width: 0;
-	height: 6px;
-	background-color: none;
-	background: url(controls-ted.png) repeat-x 0 -59px;
-}
-.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-handle  {
-	display: block;
-	margin: 0;
-	width: 14px;
-	height: 21px;
-	top: -7px;
-	border: 0;
-	background: url(controls-ted.png) no-repeat 0 0;	
-}
-.mejs-ted .mejs-controls .mejs-time-rail .mejs-time-float {	
-	display: none;
-}
-.mejs-ted .mejs-controls .mejs-playpause-button  {
-	top: 29px;
-	left: 9px;
-	width: 49px;
-	height: 28px;
-}
-.mejs-ted .mejs-controls .mejs-playpause-button  button {
-	width: 49px;
-	height: 28px;
-	background: url(controls-ted.png) no-repeat -50px -23px;
-	margin: 0;
-	padding: 0;
-}
-.mejs-ted .mejs-controls .mejs-pause button  {
-	background-position: 0 -23px;
-}
-
-.mejs-ted .mejs-controls .mejs-fullscreen-button  {
-	top: 34px;
-	right: 9px;
-	width: 17px;
-	height: 15px;
-	background : none;
-}
-.mejs-ted .mejs-controls .mejs-fullscreen-button  button {
-	width: 19px;
-	height: 17px;
-	background: transparent url(controls-ted.png) no-repeat 0 -66px;
-	margin: 0;
-	padding: 0;
-}
-.mejs-ted .mejs-controls .mejs-unfullscreen  button {
-	background: transparent url(controls-ted.png) no-repeat -21px -66px;
-	margin: 0;
-	padding: 0;
-}
-.mejs-ted .mejs-controls .mejs-volume-button  {
-	top: 30px;
-	right: 35px;
-	width: 24px;
-	height: 22px;
-}
-.mejs-ted .mejs-controls .mejs-mute button {
-	background: url(controls-ted.png) no-repeat -15px 0;
-	width: 24px;
-	height: 22px;
-	margin: 0;
-	padding: 0;
-}
-.mejs-ted .mejs-controls .mejs-unmute button {
-	background: url(controls-ted.png) no-repeat -40px 0;
-	width: 24px;
-	height: 22px;
-	margin: 0;
-	padding: 0;	
-}
-.mejs-ted  .mejs-controls .mejs-volume-button .mejs-volume-slider {
-	background: #fff;
-	border: solid 1px #aaa;
-	border-width: 1px 1px 0 1px;
-	width: 22px;
-	height: 65px;
-	top: -65px;
-}
-.mejs-ted  .mejs-controls .mejs-volume-button .mejs-volume-total {
-	background: url(controls-ted.png) repeat-y -41px -66px;
-	left: 8px;
-	width: 6px;
-	height: 50px;
-}
-.mejs-ted  .mejs-controls .mejs-volume-button .mejs-volume-current {
-	left: 8px;
-	width: 6px;	
-	background: url(controls-ted.png) repeat-y -48px -66px;
-	height: 50px;
-}
-
-.mejs-ted  .mejs-controls .mejs-volume-button .mejs-volume-handle {
-	display: none;
-}
-
-.mejs-ted .mejs-controls .mejs-time span {
-	color: #333;
-}
-.mejs-ted .mejs-controls .mejs-currenttime-container  {
-	position: absolute;
-	top: 32px;
-	right: 100px;
-	border: solid 1px #999;
-	background: #fff;
-	color: #333;
-	padding-top: 2px;
-	border-radius: 3px;
-	color: #333;
-}
-.mejs-ted .mejs-controls .mejs-duration-container  {
-
-	position: absolute;
-	top: 32px;
-	right: 65px;
-	border: solid 1px #999;
-	background: #fff;
-	color: #333;
-	padding-top: 2px;
-	border-radius: 3px;
-	color: #333;
-}
-
-.mejs-ted .mejs-controls .mejs-time  button{
-	color: #333;
-}
-.mejs-ted .mejs-controls .mejs-captions-button {
-	display: none;
-}
-/* END: TED player */
-
-
-/* WMP player */
-.mejs-container.mejs-wmp {
-
-}
-.mejs-wmp .mejs-controls {
-	background: transparent url(controls-wmp-bg.png) center 16px no-repeat;
-	height: 65px;
-}
-
-.mejs-wmp .mejs-button,
-.mejs-wmp .mejs-time {
-	position: absolute;
-	background: transparent;
-}
-.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-total {
-	background-color: transparent;
-	border: solid 1px #ccc;
-	height: 3px;
-}
-.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-buffering {
-	height: 3px;
-}
-.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-loaded {
-	background-color: rgba(255,255,255,0.3);
-	width: 0;
-	height: 3px;
-}
-.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-current {
-	width: 0;
-	height: 1px;
-	background-color: #014CB6;
-	border: solid 1px #7FC9FA;
-	border-width: 1px 0;
-	border-color: #7FC9FA #fff #619FF2 #fff;
-}
-.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-handle  {
-	display: block;
-	margin: 0;
-	width: 16px;
-	height: 9px;
-	top: -3px;
-	border: 0;
-	background: url(controls-wmp.png) no-repeat 0 -80px;	
-}
-.mejs-wmp .mejs-controls .mejs-time-rail .mejs-time-float {	
-	display: none;
-}
-.mejs-wmp .mejs-controls .mejs-playpause-button  {
-	top: 10px;
-	left: 50%;
-	margin: 10px 0 0 -20px;	
-	width: 40px;
-	height: 40px;
-	
-}
-.mejs-wmp .mejs-controls .mejs-playpause-button  button {
-	width: 40px;
-	height: 40px;
-	background: url(controls-wmp.png) no-repeat 0 0;	
-	margin: 0;
-	padding: 0;
-}
-.mejs-wmp .mejs-controls .mejs-pause button  {
-	background-position: 0 -40px;
-}
-
-.mejs-wmp .mejs-controls .mejs-currenttime-container  {
-	position: absolute;
-	top: 25px;
-	left: 50%;
-	margin-left: -93px;
-}
-.mejs-wmp .mejs-controls .mejs-duration-container  {
-	position: absolute;
-	top: 25px;
-	left: 50%;
-	margin-left: -58px;
-}
-
-
-.mejs-wmp .mejs-controls .mejs-volume-button  {
-	top: 32px;
-	right: 50%;
-	margin-right: -55px;
-	width: 20px;
-	height: 15px;
-}
-.mejs-wmp .mejs-controls .mejs-volume-button button {
-	margin: 0;
-	padding: 0;
-	background: url(controls-wmp.png) no-repeat -42px -17px;
-	width: 20px;
-	height: 15px;
-}
-.mejs-wmp .mejs-controls .mejs-unmute button {
-	margin: 0;
-	padding: 0;
-	background: url(controls-wmp.png) no-repeat -42px 0;
-	width: 20px;
-	height: 15px;
-}
-.mejs-wmp .mejs-controls .mejs-volume-button .mejs-volume-slider {
-	background: rgba(102,102,102,0.6);
-}
-
-.mejs-wmp .mejs-controls .mejs-fullscreen-button  {
-	top: 32px;
-	right: 50%;
-	margin-right: -82px;
-	width: 15px;
-	height: 14px;
-}
-.mejs-wmp .mejs-controls .mejs-fullscreen-button  button {
-	margin: 0;
-	padding: 0;
-	background: url(controls-wmp.png) no-repeat -63px 0;
-	width: 15px;
-	height: 14px;
-}
-.mejs-wmp .mejs-controls .mejs-captions-button {
-	display: none;
-}
-/* END: WMP player */
-
-
-
diff --git a/lib/mejs/silverlightmediaelement.xap b/lib/mejs/silverlightmediaelement.xap
deleted file mode 100644
index 9d55c2e46ae51017ab91f61b05cf4f4838ab10ab..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 12461
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
Y;npiigG2o9V37YT{69ou_}||D0@79*!2kdN

diff --git a/modeles/video.html b/modeles/video.html
index 4fae226d..fc60f135 100644
--- a/modeles/video.html
+++ b/modeles/video.html
@@ -15,10 +15,10 @@
 				data-id="[(#VAL{mejs-#ID_DOCUMENT}|concat{#ENV{skin}}|md5)]"
 				data-mejsoptions='{"alwaysShowControls": true,"pluginPath":"[(#CHEMIN{lib/mejs/flashmediaelement.swf}|dirname)/]"[,"loop":(#ENV{loop}|?{true,false})],"videoWidth":"100%","videoHeight":"100%"[,"startVolume":"(#ENV{volume})"]}'
 				width="100%"
-				height="100%"
-				poster="[(#LOGO_DOCUMENT{vignette}|image_reduire{#GET{largeur},0}|extraire_attribut{src})]"
+				height="100%"[
+				poster="(#LOGO_DOCUMENT{vignette}|image_reduire{#GET{largeur},0}|extraire_attribut{src})"]
 				controls="controls"
-				preload="none"[
+				preload="auto"[
 				autoplay="autoplay"(#ENV{autoplay}|oui)]
 			>
 			<source type="[(#EXTENSION|in_array{#LISTE{mp4,webm,ogv}}|?{[(#MIME_TYPE|replace{application/,video/})],#MIME_TYPE})]" src="#FICHIER" />
@@ -42,6 +42,6 @@
 [<div class='#EDIT{descriptif} spip_doc_descriptif'>(#DESCRIPTIF|PtoBR)[(#NOTES|PtoBR)]</div>]
 [<script>/*<!\[CDATA\[*/var mejspath='[(#CHEMIN{lib/mejs/mediaelement-and-player.min.js}|timestamp)]',mejscss='[(#CHEMIN{lib/mejs/mediaelementplayer.min.css}|timestamp)]';
 (#INCLURE{javascript/mejs-init.min.js})/*\]\]>*/</script>]
-[(#ENV{skin}|oui)[<style>(#INCLURE{#CHEMIN{css/mejs-skin-#ENV{skin}.css}|sinon{#CHEMIN{lib/mejs/mejs-skins.css}}|url_absolue_css})</style>]]
+[(#ENV{skin}|oui)[<style>(#INCLURE{#CHEMIN{css/mejs-skin-#ENV{skin}.css}|url_absolue_css})</style>]]
 </div>
 </BOUCLE_tous>
\ No newline at end of file
diff --git a/paquet.xml b/paquet.xml
index 62ad77c8..cf4c4f4f 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="medias"
 	categorie="multimedia"
-	version="2.17.8"
+	version="2.18.0"
 	etat="stable"
 	compatibilite="[3.2.0-dev;3.2.*]"
 	logo="prive/themes/spip/images/portfolio-32.png"
-- 
GitLab