with attributes\n this.provider = this.media.getAttribute(this.config.attributes.embed.provider);\n\n // Remove attribute\n this.media.removeAttribute(this.config.attributes.embed.provider);\n }\n\n // Unsupported or missing provider\n if (is.empty(this.provider) || !Object.keys(providers).includes(this.provider)) {\n this.debug.error('Setup failed: Invalid provider');\n return;\n }\n\n // Audio will come later for external providers\n this.type = types.video;\n\n break;\n\n case 'video':\n case 'audio':\n this.type = type;\n this.provider = providers.html5;\n\n // Get config from attributes\n if (this.media.hasAttribute('crossorigin')) {\n this.config.crossorigin = true;\n }\n if (this.media.hasAttribute('autoplay')) {\n this.config.autoplay = true;\n }\n if (this.media.hasAttribute('playsinline')) {\n this.config.playsinline = true;\n }\n if (this.media.hasAttribute('muted')) {\n this.config.muted = true;\n }\n if (this.media.hasAttribute('loop')) {\n this.config.loop.active = true;\n }\n\n break;\n\n default:\n this.debug.error('Setup failed: unsupported type');\n return;\n }\n\n // Check for support again but with type\n this.supported = support.check(this.type, this.provider, this.config.playsinline);\n\n // If no support for even API, bail\n if (!this.supported.api) {\n this.debug.error('Setup failed: no support');\n return;\n }\n\n this.eventListeners = [];\n\n // Create listeners\n this.listeners = new Listeners(this);\n\n // Setup local storage for user settings\n this.storage = new Storage(this);\n\n // Store reference\n this.media.plyr = this;\n\n // Wrap media\n if (!is.element(this.elements.container)) {\n this.elements.container = createElement('div');\n wrap(this.media, this.elements.container);\n }\n\n // Add style hook\n ui.addStyleHook.call(this);\n\n // Setup media\n media.setup.call(this);\n\n // Listen for events if debugging\n if (this.config.debug) {\n on.call(this, this.elements.container, this.config.events.join(' '), event => {\n this.debug.log(`event: ${event.type}`);\n });\n }\n\n // Setup interface\n // If embed but not fully supported, build interface now to avoid flash of controls\n if (this.isHTML5 || (this.isEmbed && !this.supported.ui)) {\n ui.build.call(this);\n }\n\n // Container listeners\n this.listeners.container();\n\n // Global listeners\n this.listeners.global();\n\n // Setup fullscreen\n this.fullscreen = new Fullscreen(this);\n\n // Setup ads if provided\n this.ads = new Ads(this);\n\n // Autoplay if required\n if (this.config.autoplay) {\n this.play();\n }\n }\n\n // ---------------------------------------\n // API\n // ---------------------------------------\n\n /**\n * Types and provider helpers\n */\n get isHTML5() {\n return Boolean(this.provider === providers.html5);\n }\n get isEmbed() {\n return Boolean(this.isYouTube || this.isVimeo);\n }\n get isYouTube() {\n return Boolean(this.provider === providers.youtube);\n }\n get isVimeo() {\n return Boolean(this.provider === providers.vimeo);\n }\n get isVideo() {\n return Boolean(this.type === types.video);\n }\n get isAudio() {\n return Boolean(this.type === types.audio);\n }\n\n /**\n * Play the media, or play the advertisement (if they are not blocked)\n */\n play() {\n if (!is.function(this.media.play)) {\n return null;\n }\n\n // Return the promise (for HTML5)\n return this.media.play();\n }\n\n /**\n * Pause the media\n */\n pause() {\n if (!this.playing || !is.function(this.media.pause)) {\n return;\n }\n\n this.media.pause();\n }\n\n /**\n * Get playing state\n */\n get playing() {\n return Boolean(this.ready && !this.paused && !this.ended);\n }\n\n /**\n * Get paused state\n */\n get paused() {\n return Boolean(this.media.paused);\n }\n\n /**\n * Get stopped state\n */\n get stopped() {\n return Boolean(this.paused && this.currentTime === 0);\n }\n\n /**\n * Get ended state\n */\n get ended() {\n return Boolean(this.media.ended);\n }\n\n /**\n * Toggle playback based on current status\n * @param {boolean} input\n */\n togglePlay(input) {\n // Toggle based on current state if nothing passed\n const toggle = is.boolean(input) ? input : !this.playing;\n\n if (toggle) {\n this.play();\n } else {\n this.pause();\n }\n }\n\n /**\n * Stop playback\n */\n stop() {\n if (this.isHTML5) {\n this.pause();\n this.restart();\n } else if (is.function(this.media.stop)) {\n this.media.stop();\n }\n }\n\n /**\n * Restart playback\n */\n restart() {\n this.currentTime = 0;\n }\n\n /**\n * Rewind\n * @param {number} seekTime - how far to rewind in seconds. Defaults to the config.seekTime\n */\n rewind(seekTime) {\n this.currentTime = this.currentTime - (is.number(seekTime) ? seekTime : this.config.seekTime);\n }\n\n /**\n * Fast forward\n * @param {number} seekTime - how far to fast forward in seconds. Defaults to the config.seekTime\n */\n forward(seekTime) {\n this.currentTime = this.currentTime + (is.number(seekTime) ? seekTime : this.config.seekTime);\n }\n\n /**\n * Seek to a time\n * @param {number} input - where to seek to in seconds. Defaults to 0 (the start)\n */\n set currentTime(input) {\n // Bail if media duration isn't available yet\n if (!this.duration) {\n return;\n }\n\n // Validate input\n const inputIsValid = is.number(input) && input > 0;\n\n // Set\n this.media.currentTime = inputIsValid ? Math.min(input, this.duration) : 0;\n\n // Logging\n this.debug.log(`Seeking to ${this.currentTime} seconds`);\n }\n\n /**\n * Get current time\n */\n get currentTime() {\n return Number(this.media.currentTime);\n }\n\n /**\n * Get buffered\n */\n get buffered() {\n const { buffered } = this.media;\n\n // YouTube / Vimeo return a float between 0-1\n if (is.number(buffered)) {\n return buffered;\n }\n\n // HTML5\n // TODO: Handle buffered chunks of the media\n // (i.e. seek to another section buffers only that section)\n if (buffered && buffered.length && this.duration > 0) {\n return buffered.end(0) / this.duration;\n }\n\n return 0;\n }\n\n /**\n * Get seeking status\n */\n get seeking() {\n return Boolean(this.media.seeking);\n }\n\n /**\n * Get the duration of the current media\n */\n get duration() {\n // Faux duration set via config\n const fauxDuration = parseFloat(this.config.duration);\n\n // Media duration can be NaN before the media has loaded\n const duration = (this.media || {}).duration || 0;\n\n // If config duration is funky, use regular duration\n return fauxDuration || duration;\n }\n\n /**\n * Set the player volume\n * @param {number} value - must be between 0 and 1. Defaults to the value from local storage and config.volume if not set in storage\n */\n set volume(value) {\n let volume = value;\n const max = 1;\n const min = 0;\n\n if (is.string(volume)) {\n volume = Number(volume);\n }\n\n // Load volume from storage if no value specified\n if (!is.number(volume)) {\n volume = this.storage.get('volume');\n }\n\n // Use config if all else fails\n if (!is.number(volume)) {\n ({ volume } = this.config);\n }\n\n // Maximum is volumeMax\n if (volume > max) {\n volume = max;\n }\n // Minimum is volumeMin\n if (volume < min) {\n volume = min;\n }\n\n // Update config\n this.config.volume = volume;\n\n // Set the player volume\n this.media.volume = volume;\n\n // If muted, and we're increasing volume manually, reset muted state\n if (!is.empty(value) && this.muted && volume > 0) {\n this.muted = false;\n }\n }\n\n /**\n * Get the current player volume\n */\n get volume() {\n return Number(this.media.volume);\n }\n\n /**\n * Increase volume\n * @param {boolean} step - How much to decrease by (between 0 and 1)\n */\n increaseVolume(step) {\n const volume = this.media.muted ? 0 : this.volume;\n this.volume = volume + (is.number(step) ? step : 1);\n }\n\n /**\n * Decrease volume\n * @param {boolean} step - How much to decrease by (between 0 and 1)\n */\n decreaseVolume(step) {\n const volume = this.media.muted ? 0 : this.volume;\n this.volume = volume - (is.number(step) ? step : 1);\n }\n\n /**\n * Set muted state\n * @param {boolean} mute\n */\n set muted(mute) {\n let toggle = mute;\n\n // Load muted state from storage\n if (!is.boolean(toggle)) {\n toggle = this.storage.get('muted');\n }\n\n // Use config if all else fails\n if (!is.boolean(toggle)) {\n toggle = this.config.muted;\n }\n\n // Update config\n this.config.muted = toggle;\n\n // Set mute on the player\n this.media.muted = toggle;\n }\n\n /**\n * Get current muted state\n */\n get muted() {\n return Boolean(this.media.muted);\n }\n\n /**\n * Check if the media has audio\n */\n get hasAudio() {\n // Assume yes for all non HTML5 (as we can't tell...)\n if (!this.isHTML5) {\n return true;\n }\n\n if (this.isAudio) {\n return true;\n }\n\n // Get audio tracks\n return (\n Boolean(this.media.mozHasAudio) ||\n Boolean(this.media.webkitAudioDecodedByteCount) ||\n Boolean(this.media.audioTracks && this.media.audioTracks.length)\n );\n }\n\n /**\n * Set playback speed\n * @param {number} speed - the speed of playback (0.5-2.0)\n */\n set speed(input) {\n let speed = null;\n\n if (is.number(input)) {\n speed = input;\n }\n\n if (!is.number(speed)) {\n speed = this.storage.get('speed');\n }\n\n if (!is.number(speed)) {\n speed = this.config.speed.selected;\n }\n\n // Set min/max\n if (speed < 0.1) {\n speed = 0.1;\n }\n if (speed > 2.0) {\n speed = 2.0;\n }\n\n if (!this.config.speed.options.includes(speed)) {\n this.debug.warn(`Unsupported speed (${speed})`);\n return;\n }\n\n // Update config\n this.config.speed.selected = speed;\n\n // Set media speed\n this.media.playbackRate = speed;\n }\n\n /**\n * Get current playback speed\n */\n get speed() {\n return Number(this.media.playbackRate);\n }\n\n /**\n * Set playback quality\n * Currently HTML5 & YouTube only\n * @param {number} input - Quality level\n */\n set quality(input) {\n const config = this.config.quality;\n const options = this.options.quality;\n\n if (!options.length) {\n return;\n }\n\n let quality = [\n !is.empty(input) && Number(input),\n this.storage.get('quality'),\n config.selected,\n config.default,\n ].find(is.number);\n\n if (!options.includes(quality)) {\n const value = closest(options, quality);\n this.debug.warn(`Unsupported quality option: ${quality}, using ${value} instead`);\n quality = value;\n }\n\n // Trigger request event\n triggerEvent.call(this, this.media, 'qualityrequested', false, { quality });\n\n // Update config\n config.selected = quality;\n\n // Set quality\n this.media.quality = quality;\n }\n\n /**\n * Get current quality level\n */\n get quality() {\n return this.media.quality;\n }\n\n /**\n * Toggle loop\n * TODO: Finish fancy new logic. Set the indicator on load as user may pass loop as config\n * @param {boolean} input - Whether to loop or not\n */\n set loop(input) {\n const toggle = is.boolean(input) ? input : this.config.loop.active;\n this.config.loop.active = toggle;\n this.media.loop = toggle;\n\n // Set default to be a true toggle\n /* const type = ['start', 'end', 'all', 'none', 'toggle'].includes(input) ? input : 'toggle';\n\n switch (type) {\n case 'start':\n if (this.config.loop.end && this.config.loop.end <= this.currentTime) {\n this.config.loop.end = null;\n }\n this.config.loop.start = this.currentTime;\n // this.config.loop.indicator.start = this.elements.display.played.value;\n break;\n\n case 'end':\n if (this.config.loop.start >= this.currentTime) {\n return this;\n }\n this.config.loop.end = this.currentTime;\n // this.config.loop.indicator.end = this.elements.display.played.value;\n break;\n\n case 'all':\n this.config.loop.start = 0;\n this.config.loop.end = this.duration - 2;\n this.config.loop.indicator.start = 0;\n this.config.loop.indicator.end = 100;\n break;\n\n case 'toggle':\n if (this.config.loop.active) {\n this.config.loop.start = 0;\n this.config.loop.end = null;\n } else {\n this.config.loop.start = 0;\n this.config.loop.end = this.duration - 2;\n }\n break;\n\n default:\n this.config.loop.start = 0;\n this.config.loop.end = null;\n break;\n } */\n }\n\n /**\n * Get current loop state\n */\n get loop() {\n return Boolean(this.media.loop);\n }\n\n /**\n * Set new media source\n * @param {object} input - The new source object (see docs)\n */\n set source(input) {\n source.change.call(this, input);\n }\n\n /**\n * Get current source\n */\n get source() {\n return this.media.currentSrc;\n }\n\n /**\n * Set the poster image for a video\n * @param {input} - the URL for the new poster image\n */\n set poster(input) {\n if (!this.isVideo) {\n this.debug.warn('Poster can only be set for video');\n return;\n }\n\n ui.setPoster.call(this, input, false).catch(() => {});\n }\n\n /**\n * Get the current poster image\n */\n get poster() {\n if (!this.isVideo) {\n return null;\n }\n\n return this.media.getAttribute('poster');\n }\n\n /**\n * Set the autoplay state\n * @param {boolean} input - Whether to autoplay or not\n */\n set autoplay(input) {\n const toggle = is.boolean(input) ? input : this.config.autoplay;\n this.config.autoplay = toggle;\n }\n\n /**\n * Get the current autoplay state\n */\n get autoplay() {\n return Boolean(this.config.autoplay);\n }\n\n /**\n * Toggle captions\n * @param {boolean} input - Whether to enable captions\n */\n toggleCaptions(input) {\n captions.toggle.call(this, input, false);\n }\n\n /**\n * Set the caption track by index\n * @param {number} - Caption index\n */\n set currentTrack(input) {\n captions.set.call(this, input, false);\n }\n\n /**\n * Get the current caption track index (-1 if disabled)\n */\n get currentTrack() {\n const { toggled, currentTrack } = this.captions;\n return toggled ? currentTrack : -1;\n }\n\n /**\n * Set the wanted language for captions\n * Since tracks can be added later it won't update the actual caption track until there is a matching track\n * @param {string} - Two character ISO language code (e.g. EN, FR, PT, etc)\n */\n set language(input) {\n captions.setLanguage.call(this, input, false);\n }\n\n /**\n * Get the current track's language\n */\n get language() {\n return (captions.getCurrentTrack.call(this) || {}).language;\n }\n\n /**\n * Toggle picture-in-picture playback on WebKit/MacOS\n * TODO: update player with state, support, enabled\n * TODO: detect outside changes\n */\n set pip(input) {\n const states = {\n pip: 'picture-in-picture',\n inline: 'inline',\n };\n\n // Bail if no support\n if (!support.pip) {\n return;\n }\n\n // Toggle based on current state if not passed\n const toggle = is.boolean(input) ? input : this.pip === states.inline;\n\n // Toggle based on current state\n this.media.webkitSetPresentationMode(toggle ? states.pip : states.inline);\n }\n\n /**\n * Get the current picture-in-picture state\n */\n get pip() {\n if (!support.pip) {\n return null;\n }\n\n return this.media.webkitPresentationMode;\n }\n\n /**\n * Trigger the airplay dialog\n * TODO: update player with state, support, enabled\n */\n airplay() {\n // Show dialog if supported\n if (support.airplay) {\n this.media.webkitShowPlaybackTargetPicker();\n }\n }\n\n /**\n * Toggle the player controls\n * @param {boolean} [toggle] - Whether to show the controls\n */\n toggleControls(toggle) {\n // Don't toggle if missing UI support or if it's audio\n if (this.supported.ui && !this.isAudio) {\n // Get state before change\n const isHidden = hasClass(this.elements.container, this.config.classNames.hideControls);\n\n // Negate the argument if not undefined since adding the class to hides the controls\n const force = typeof toggle === 'undefined' ? undefined : !toggle;\n\n // Apply and get updated state\n const hiding = toggleClass(this.elements.container, this.config.classNames.hideControls, force);\n\n // Close menu\n if (hiding && this.config.controls.includes('settings') && !is.empty(this.config.settings)) {\n controls.toggleMenu.call(this, false);\n }\n // Trigger event on change\n if (hiding !== isHidden) {\n const eventName = hiding ? 'controlshidden' : 'controlsshown';\n triggerEvent.call(this, this.media, eventName);\n }\n return !hiding;\n }\n return false;\n }\n\n /**\n * Add event listeners\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n */\n on(event, callback) {\n on.call(this, this.elements.container, event, callback);\n }\n /**\n * Add event listeners once\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n */\n once(event, callback) {\n once.call(this, this.elements.container, event, callback);\n }\n /**\n * Remove event listeners\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n */\n off(event, callback) {\n off(this.elements.container, event, callback);\n }\n\n /**\n * Destroy an instance\n * Event listeners are removed when elements are removed\n * http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory\n * @param {function} callback - Callback for when destroy is complete\n * @param {boolean} soft - Whether it's a soft destroy (for source changes etc)\n */\n destroy(callback, soft = false) {\n if (!this.ready) {\n return;\n }\n\n const done = () => {\n // Reset overflow (incase destroyed while in fullscreen)\n document.body.style.overflow = '';\n\n // GC for embed\n this.embed = null;\n\n // If it's a soft destroy, make minimal changes\n if (soft) {\n if (Object.keys(this.elements).length) {\n // Remove elements\n removeElement(this.elements.buttons.play);\n removeElement(this.elements.captions);\n removeElement(this.elements.controls);\n removeElement(this.elements.wrapper);\n\n // Clear for GC\n this.elements.buttons.play = null;\n this.elements.captions = null;\n this.elements.controls = null;\n this.elements.wrapper = null;\n }\n\n // Callback\n if (is.function(callback)) {\n callback();\n }\n } else {\n // Unbind listeners\n unbindListeners.call(this);\n\n // Replace the container with the original element provided\n replaceElement(this.elements.original, this.elements.container);\n\n // Event\n triggerEvent.call(this, this.elements.original, 'destroyed', true);\n\n // Callback\n if (is.function(callback)) {\n callback.call(this.elements.original);\n }\n\n // Reset state\n this.ready = false;\n\n // Clear for garbage collection\n setTimeout(() => {\n this.elements = null;\n this.media = null;\n }, 200);\n }\n };\n\n // Stop playback\n this.stop();\n\n // Provider specific stuff\n if (this.isHTML5) {\n // Clear timeout\n clearTimeout(this.timers.loading);\n\n // Restore native video controls\n ui.toggleNativeControls.call(this, true);\n\n // Clean up\n done();\n } else if (this.isYouTube) {\n // Clear timers\n clearInterval(this.timers.buffering);\n clearInterval(this.timers.playing);\n\n // Destroy YouTube API\n if (this.embed !== null && is.function(this.embed.destroy)) {\n this.embed.destroy();\n }\n\n // Clean up\n done();\n } else if (this.isVimeo) {\n // Destroy Vimeo API\n // then clean up (wait, to prevent postmessage errors)\n if (this.embed !== null) {\n this.embed.unload().then(done);\n }\n\n // Vimeo does not always return\n setTimeout(done, 200);\n }\n }\n\n /**\n * Check for support for a mime type (HTML5 only)\n * @param {string} type - Mime type\n */\n supports(type) {\n return support.mime.call(this, type);\n }\n\n /**\n * Check for support\n * @param {string} type - Player type (audio/video)\n * @param {string} provider - Provider (html5/youtube/vimeo)\n * @param {bool} inline - Where player has `playsinline` sttribute\n */\n static supported(type, provider, inline) {\n return support.check(type, provider, inline);\n }\n\n /**\n * Load an SVG sprite into the page\n * @param {string} url - URL for the SVG sprite\n * @param {string} [id] - Unique ID\n */\n static loadSprite(url, id) {\n return loadSprite(url, id);\n }\n\n /**\n * Setup multiple instances\n * @param {*} selector\n * @param {object} options\n */\n static setup(selector, options = {}) {\n let targets = null;\n\n if (is.string(selector)) {\n targets = Array.from(document.querySelectorAll(selector));\n } else if (is.nodeList(selector)) {\n targets = Array.from(selector);\n } else if (is.array(selector)) {\n targets = selector.filter(is.element);\n }\n\n if (is.empty(targets)) {\n return null;\n }\n\n return targets.map(t => new Plyr(t, options));\n }\n}\n\nPlyr.defaults = cloneDeep(defaults);\n\nexport default Plyr;\n"]}
\ No newline at end of file
diff --git a/dist/plyr.polyfilled.js b/dist/plyr.polyfilled.js
index 51786db7..34c27c7e 100644
--- a/dist/plyr.polyfilled.js
+++ b/dist/plyr.polyfilled.js
@@ -5981,30 +5981,6 @@ typeof navigator === "object" && (function (global, factory) {
toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false);
}
- // Toggle aria-pressed state on a toggle button
- // http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles
- function toggleState(element, input) {
- // If multiple elements passed
- if (is$1.array(element) || is$1.nodeList(element)) {
- Array.from(element).forEach(function (target) {
- return toggleState(target, input);
- });
- return;
- }
-
- // Bail if no target
- if (!is$1.element(element)) {
- return;
- }
-
- // Get state
- var pressed = element.getAttribute('aria-pressed') === 'true';
- var state = is$1.boolean(input) ? input : !pressed;
-
- // Set the attribute on target
- element.setAttribute('aria-pressed', state);
- }
-
// ==========================================================================
var transitionEndEvent = function () {
@@ -6657,11 +6633,12 @@ typeof navigator === "object" && (function (global, factory) {
}
// Render
- return '' + (inverted ? '-' : '') + hours + format(mins) + ':' + format(secs);
+ return '' + (inverted && time > 0 ? '-' : '') + hours + format(mins) + ':' + format(secs);
}
// ==========================================================================
+ // TODO: Don't export a massive object - break down and create class
var controls = {
// Get icon URL
getIconUrl: function getIconUrl() {
@@ -6675,8 +6652,7 @@ typeof navigator === "object" && (function (global, factory) {
},
- // Find the UI controls and store references in custom controls
- // TODO: Allow settings menus with custom controls
+ // Find the UI controls
findElements: function findElements() {
try {
this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);
@@ -6772,12 +6748,11 @@ typeof navigator === "object" && (function (global, factory) {
pip: 'PIP',
airplay: 'AirPlay'
};
-
var text = universals[type] || i18n.get(type, this.config);
+
var attributes = Object.assign({}, attr, {
class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ')
});
-
return createElement('span', attributes, text);
},
@@ -6879,9 +6854,6 @@ typeof navigator === "object" && (function (global, factory) {
// Label/Tooltip
button.appendChild(controls.createLabel.call(this, labelPressed, { class: 'label--pressed' }));
button.appendChild(controls.createLabel.call(this, label, { class: 'label--not-pressed' }));
-
- // Add aria attributes
- attributes['aria-pressed'] = false;
} else {
button.appendChild(controls.createIcon.call(this, icon));
button.appendChild(controls.createLabel.call(this, label));
@@ -6903,19 +6875,26 @@ typeof navigator === "object" && (function (global, factory) {
this.elements.buttons[type] = button;
}
+ // Toggle classname when pressed property is set
+ var className = this.config.classNames.controlPressed;
+ Object.defineProperty(button, 'pressed', {
+ enumerable: true,
+ get: function get() {
+ return hasClass(button, className);
+ },
+ set: function set() {
+ var pressed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+
+ toggleClass(button, className, pressed);
+ }
+ });
+
return button;
},
// Create an
createRange: function createRange(type, attributes) {
- // Seek label
- var label = createElement('label', {
- for: attributes.id,
- id: attributes.id + '-label',
- class: this.config.classNames.hidden
- }, i18n.get(type, this.config));
-
// Seek input
var input = createElement('input', extend(getAttributesFromSelector(this.config.selectors.inputs[type]), {
type: 'range',
@@ -6926,7 +6905,7 @@ typeof navigator === "object" && (function (global, factory) {
autocomplete: 'off',
// A11y fixes for https://github.com/sampotts/plyr/issues/905
role: 'slider',
- 'aria-labelledby': attributes.id + '-label',
+ 'aria-label': i18n.get(type, this.config),
'aria-valuemin': 0,
'aria-valuemax': 100,
'aria-valuenow': 0
@@ -6937,10 +6916,7 @@ typeof navigator === "object" && (function (global, factory) {
// Set the fill for webkit now
controls.updateRangeFill.call(this, input);
- return {
- label: label,
- input: input
- };
+ return input;
},
@@ -6962,7 +6938,6 @@ typeof navigator === "object" && (function (global, factory) {
played: 'played',
buffer: 'buffered'
}[type];
-
var suffix = suffixKey ? i18n.get(suffixKey, this.config) : '';
progress.innerText = '% ' + suffix.toLowerCase();
@@ -7030,6 +7005,23 @@ typeof navigator === "object" && (function (global, factory) {
},
+ // Format a time for display
+ formatTime: function formatTime$$1() {
+ var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+ var inverted = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
+
+ // Bail if the value isn't a number
+ if (!is$1.number(time)) {
+ return time;
+ }
+
+ // Always display hours if duration is over an hour
+ var forceHours = getHours(this.duration) > 0;
+
+ return formatTime(time, forceHours, inverted);
+ },
+
+
// Update the displayed time
updateTimeDisplay: function updateTimeDisplay() {
var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
@@ -7041,11 +7033,8 @@ typeof navigator === "object" && (function (global, factory) {
return;
}
- // Always display hours if duration is over an hour
- var forceHours = getHours(this.duration) > 0;
-
// eslint-disable-next-line no-param-reassign
- target.innerText = formatTime(time, forceHours, inverted);
+ target.innerText = controls.formatTime(time, inverted);
},
@@ -7062,7 +7051,7 @@ typeof navigator === "object" && (function (global, factory) {
// Update mute state
if (is$1.element(this.elements.buttons.mute)) {
- toggleState(this.elements.buttons.mute, this.muted || this.volume === 0);
+ this.elements.buttons.mute.pressed = this.muted || this.volume === 0;
}
},
@@ -7148,8 +7137,20 @@ typeof navigator === "object" && (function (global, factory) {
return;
}
- // Set aria value for https://github.com/sampotts/plyr/issues/905
- range.setAttribute('aria-valuenow', range.value);
+ // Set aria values for https://github.com/sampotts/plyr/issues/905
+ if (matches(range, this.config.selectors.inputs.seek)) {
+ range.setAttribute('aria-valuenow', this.currentTime);
+ var currentTime = controls.formatTime(this.currentTime);
+ var duration = controls.formatTime(this.duration);
+ var format$$1 = i18n.get('seekLabel', this.config);
+ range.setAttribute('aria-valuetext', format$$1.replace('{currentTime}', currentTime).replace('{duration}', duration));
+ } else if (matches(range, this.config.selectors.inputs.volume)) {
+ var percent = range.value * 100;
+ range.setAttribute('aria-valuenow', percent);
+ range.setAttribute('aria-valuetext', percent + '%');
+ } else {
+ range.setAttribute('aria-valuenow', range.value);
+ }
// WebKit only
if (!browser.isWebkit) {
@@ -7235,11 +7236,16 @@ typeof navigator === "object" && (function (global, factory) {
// Show the duration on metadataloaded or durationchange events
durationUpdate: function durationUpdate() {
- // Bail if no ui or durationchange event triggered after playing/seek when invertTime is false
+ // Bail if no UI or durationchange event triggered after playing/seek when invertTime is false
if (!this.supported.ui || !this.config.invertTime && this.currentTime) {
return;
}
+ // Update ARIA values
+ if (is$1.element(this.elements.inputs.seek)) {
+ this.elements.inputs.seek.setAttribute('aria-valuemax', this.duration);
+ }
+
// If there's a spot to display duration
var hasDuration = is$1.element(this.elements.display.duration);
@@ -7765,11 +7771,9 @@ typeof navigator === "object" && (function (global, factory) {
var progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));
// Seek range slider
- var seek = controls.createRange.call(this, 'seek', {
+ progress.appendChild(controls.createRange.call(this, 'seek', {
id: 'plyr-seek-' + data.id
- });
- progress.appendChild(seek.label);
- progress.appendChild(seek.input);
+ }));
// Buffer progress
progress.appendChild(controls.createProgress.call(this, 'buffer'));
@@ -7819,11 +7823,9 @@ typeof navigator === "object" && (function (global, factory) {
};
// Create the volume range slider
- var range = controls.createRange.call(this, 'volume', extend(attributes, {
+ volume.appendChild(controls.createRange.call(this, 'volume', extend(attributes, {
id: 'plyr-volume-' + data.id
- }));
- volume.appendChild(range.label);
- volume.appendChild(range.input);
+ })));
this.elements.volume = volume;
@@ -8088,7 +8090,6 @@ typeof navigator === "object" && (function (global, factory) {
Array.from(labels).forEach(function (label) {
toggleClass(label, _this8.config.classNames.hidden, false);
toggleClass(label, _this8.config.classNames.tooltip, true);
- label.setAttribute('role', 'tooltip');
});
}
}
@@ -8363,7 +8364,7 @@ typeof navigator === "object" && (function (global, factory) {
}
// Toggle state
- toggleState(this.elements.buttons.captions, active);
+ this.elements.buttons.captions.pressed = active;
// Add class hook
toggleClass(this.elements.container, activeClass, active);
@@ -8605,6 +8606,10 @@ typeof navigator === "object" && (function (global, factory) {
// Only allow one media playing at once (vimeo only)
autopause: true,
+ // Allow inline playback on iOS (this effects YouTube/Vimeo - HTML5 requires the attribute present)
+ // TODO: Remove iosNative fullscreen option in favour of this (logic needs work)
+ playsinline: true,
+
// Default time to skip when rewind/fast forward
seekTime: 10,
@@ -8718,6 +8723,7 @@ typeof navigator === "object" && (function (global, factory) {
pause: 'Pause',
fastForward: 'Forward {seektime}s',
seek: 'Seek',
+ seekLabel: '{currentTime} of {duration}',
played: 'Played',
buffered: 'Buffered',
currentTime: 'Current time',
@@ -8732,6 +8738,7 @@ typeof navigator === "object" && (function (global, factory) {
frameTitle: 'Player for {title}',
captions: 'Captions',
settings: 'Settings',
+ menuBack: 'Go back to previous menu',
speed: 'Speed',
normal: 'Normal',
quality: 'Quality',
@@ -8861,6 +8868,7 @@ typeof navigator === "object" && (function (global, factory) {
posterEnabled: 'plyr__poster-enabled',
ads: 'plyr__ads',
control: 'plyr__control',
+ controlPressed: 'plyr__control--pressed',
playing: 'plyr--playing',
paused: 'plyr--paused',
stopped: 'plyr--stopped',
@@ -9002,7 +9010,7 @@ typeof navigator === "object" && (function (global, factory) {
// Update toggle button
var button = this.player.elements.buttons.fullscreen;
if (is$1.element(button)) {
- toggleState(button, this.active);
+ button.pressed = this.active;
}
// Trigger an event
@@ -9372,9 +9380,6 @@ typeof navigator === "object" && (function (global, factory) {
// If there's a media title set, use that for the label
if (is$1.string(this.config.title) && !is$1.empty(this.config.title)) {
label += ', ' + this.config.title;
-
- // Set container label
- this.elements.container.setAttribute('aria-label', this.config.title);
}
// If there's a play button, set label
@@ -9454,13 +9459,17 @@ typeof navigator === "object" && (function (global, factory) {
// Check playing state
checkPlaying: function checkPlaying(event) {
+ var _this3 = this;
+
// Class hooks
toggleClass(this.elements.container, this.config.classNames.playing, this.playing);
toggleClass(this.elements.container, this.config.classNames.paused, this.paused);
toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);
- // Set ARIA state
- toggleState(this.elements.buttons.play, this.playing);
+ // Set state
+ Array.from(this.elements.buttons.play).forEach(function (target) {
+ target.pressed = _this3.playing;
+ });
// Only update controls on non timeupdate events
if (is$1.event(event) && event.type === 'timeupdate') {
@@ -9474,7 +9483,7 @@ typeof navigator === "object" && (function (global, factory) {
// Check if media is loading
checkLoading: function checkLoading(event) {
- var _this3 = this;
+ var _this4 = this;
this.loading = ['stalled', 'waiting'].includes(event.type);
@@ -9484,10 +9493,10 @@ typeof navigator === "object" && (function (global, factory) {
// Timer to prevent flicker when seeking
this.timers.loading = setTimeout(function () {
// Update progress bar loading class state
- toggleClass(_this3.elements.container, _this3.config.classNames.loading, _this3.loading);
+ toggleClass(_this4.elements.container, _this4.config.classNames.loading, _this4.loading);
// Update controls visibility
- ui.toggleControls.call(_this3);
+ ui.toggleControls.call(_this4);
}, this.loading ? 250 : 0);
},
@@ -12511,9 +12520,6 @@ typeof navigator === "object" && (function (global, factory) {
wrap$2(this.media, this.elements.container);
}
- // Allow focus to be captured
- this.elements.container.setAttribute('tabindex', 0);
-
// Add style hook
ui.addStyleHook.call(this);
diff --git a/dist/plyr.polyfilled.js.map b/dist/plyr.polyfilled.js.map
index 552fdfbe..15e69425 100644
--- a/dist/plyr.polyfilled.js.map
+++ b/dist/plyr.polyfilled.js.map
@@ -1 +1 @@
-{"version":3,"sources":["node_modules/core-js/modules/_global.js","node_modules/core-js/modules/_core.js","node_modules/core-js/modules/_is-object.js","node_modules/core-js/modules/_an-object.js","node_modules/core-js/modules/_fails.js","node_modules/core-js/modules/_descriptors.js","node_modules/core-js/modules/_dom-create.js","node_modules/core-js/modules/_ie8-dom-define.js","node_modules/core-js/modules/_to-primitive.js","node_modules/core-js/modules/_object-dp.js","node_modules/core-js/modules/_property-desc.js","node_modules/core-js/modules/_hide.js","node_modules/core-js/modules/_has.js","node_modules/core-js/modules/_uid.js","node_modules/core-js/modules/_redefine.js","node_modules/core-js/modules/_a-function.js","node_modules/core-js/modules/_ctx.js","node_modules/core-js/modules/_export.js","node_modules/core-js/modules/_typed.js","node_modules/core-js/modules/_library.js","node_modules/core-js/modules/_redefine-all.js","node_modules/core-js/modules/_an-instance.js","node_modules/core-js/modules/_to-integer.js","node_modules/core-js/modules/_to-length.js","node_modules/core-js/modules/_to-index.js","node_modules/core-js/modules/_cof.js","node_modules/core-js/modules/_iobject.js","node_modules/core-js/modules/_defined.js","node_modules/core-js/modules/_to-iobject.js","node_modules/core-js/modules/_to-absolute-index.js","node_modules/core-js/modules/_array-includes.js","node_modules/core-js/modules/_shared.js","node_modules/core-js/modules/_shared-key.js","node_modules/core-js/modules/_object-keys-internal.js","node_modules/core-js/modules/_enum-bug-keys.js","node_modules/core-js/modules/_object-gopn.js","node_modules/core-js/modules/_to-object.js","node_modules/core-js/modules/_array-fill.js","node_modules/core-js/modules/_wks.js","node_modules/core-js/modules/_set-to-string-tag.js","node_modules/core-js/modules/_typed-buffer.js","node_modules/core-js/modules/_species-constructor.js","node_modules/core-js/modules/_set-species.js","node_modules/core-js/modules/es6.typed.array-buffer.js","node_modules/core-js/modules/_classof.js","node_modules/core-js/modules/_iterators.js","node_modules/core-js/modules/_is-array-iter.js","node_modules/core-js/modules/_object-keys.js","node_modules/core-js/modules/_object-dps.js","node_modules/core-js/modules/_html.js","node_modules/core-js/modules/_object-create.js","node_modules/core-js/modules/_object-gpo.js","node_modules/core-js/modules/core.get-iterator-method.js","node_modules/core-js/modules/_is-array.js","node_modules/core-js/modules/_array-species-constructor.js","node_modules/core-js/modules/_array-species-create.js","node_modules/core-js/modules/_array-methods.js","node_modules/core-js/modules/_add-to-unscopables.js","node_modules/core-js/modules/_iter-step.js","node_modules/core-js/modules/_iter-create.js","node_modules/core-js/modules/_iter-define.js","node_modules/core-js/modules/es6.array.iterator.js","node_modules/core-js/modules/_iter-detect.js","node_modules/core-js/modules/_array-copy-within.js","node_modules/core-js/modules/_object-pie.js","node_modules/core-js/modules/_object-gopd.js","node_modules/core-js/modules/_typed-array.js","node_modules/core-js/modules/es6.typed.int8-array.js","node_modules/core-js/modules/es6.typed.uint8-array.js","node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","node_modules/core-js/modules/es6.typed.int16-array.js","node_modules/core-js/modules/es6.typed.uint16-array.js","node_modules/core-js/modules/es6.typed.int32-array.js","node_modules/core-js/modules/es6.typed.uint32-array.js","node_modules/core-js/modules/es6.typed.float32-array.js","node_modules/core-js/modules/es6.typed.float64-array.js","node_modules/core-js/modules/_iter-call.js","node_modules/core-js/modules/_for-of.js","node_modules/core-js/modules/_meta.js","node_modules/core-js/modules/_validate-collection.js","node_modules/core-js/modules/_collection-strong.js","node_modules/core-js/modules/_set-proto.js","node_modules/core-js/modules/_inherit-if-required.js","node_modules/core-js/modules/_collection.js","node_modules/core-js/modules/es6.map.js","node_modules/core-js/modules/es6.set.js","node_modules/core-js/modules/_object-gops.js","node_modules/core-js/modules/_object-assign.js","node_modules/core-js/modules/_collection-weak.js","node_modules/core-js/modules/es6.weak-map.js","node_modules/core-js/modules/es6.weak-set.js","node_modules/core-js/modules/es6.reflect.apply.js","node_modules/core-js/modules/_invoke.js","node_modules/core-js/modules/_bind.js","node_modules/core-js/modules/es6.reflect.construct.js","node_modules/core-js/modules/es6.reflect.define-property.js","node_modules/core-js/modules/es6.reflect.delete-property.js","node_modules/core-js/modules/es6.reflect.get.js","node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","node_modules/core-js/modules/es6.reflect.get-prototype-of.js","node_modules/core-js/modules/es6.reflect.has.js","node_modules/core-js/modules/es6.reflect.is-extensible.js","node_modules/core-js/modules/_own-keys.js","node_modules/core-js/modules/es6.reflect.own-keys.js","node_modules/core-js/modules/es6.reflect.prevent-extensions.js","node_modules/core-js/modules/es6.reflect.set.js","node_modules/core-js/modules/es6.reflect.set-prototype-of.js","node_modules/core-js/modules/_task.js","node_modules/core-js/modules/_microtask.js","node_modules/core-js/modules/_new-promise-capability.js","node_modules/core-js/modules/_perform.js","node_modules/core-js/modules/_promise-resolve.js","node_modules/core-js/modules/es6.promise.js","node_modules/core-js/modules/_wks-ext.js","node_modules/core-js/modules/_wks-define.js","node_modules/core-js/modules/_enum-keys.js","node_modules/core-js/modules/_object-gopn-ext.js","node_modules/core-js/modules/es6.symbol.js","node_modules/core-js/modules/_object-sap.js","node_modules/core-js/modules/es6.object.freeze.js","node_modules/core-js/modules/es6.object.seal.js","node_modules/core-js/modules/es6.object.prevent-extensions.js","node_modules/core-js/modules/es6.object.is-frozen.js","node_modules/core-js/modules/es6.object.is-sealed.js","node_modules/core-js/modules/es6.object.is-extensible.js","node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","node_modules/core-js/modules/es6.object.get-prototype-of.js","node_modules/core-js/modules/es6.object.keys.js","node_modules/core-js/modules/es6.object.get-own-property-names.js","node_modules/core-js/modules/es6.object.assign.js","node_modules/core-js/modules/_same-value.js","node_modules/core-js/modules/es6.object.is.js","node_modules/core-js/modules/es6.function.name.js","node_modules/core-js/modules/es6.string.raw.js","node_modules/core-js/modules/es6.string.from-code-point.js","node_modules/core-js/modules/_string-at.js","node_modules/core-js/modules/es6.string.code-point-at.js","node_modules/core-js/modules/_string-repeat.js","node_modules/core-js/modules/es6.string.repeat.js","node_modules/core-js/modules/_is-regexp.js","node_modules/core-js/modules/_string-context.js","node_modules/core-js/modules/_fails-is-regexp.js","node_modules/core-js/modules/es6.string.starts-with.js","node_modules/core-js/modules/es6.string.ends-with.js","node_modules/core-js/modules/es6.string.includes.js","node_modules/core-js/modules/_flags.js","node_modules/core-js/modules/es6.regexp.flags.js","node_modules/core-js/modules/_fix-re-wks.js","node_modules/core-js/modules/es6.regexp.match.js","node_modules/core-js/modules/es6.regexp.replace.js","node_modules/core-js/modules/es6.regexp.split.js","node_modules/core-js/modules/es6.regexp.search.js","node_modules/core-js/modules/_create-property.js","node_modules/core-js/modules/es6.array.from.js","node_modules/core-js/modules/es6.array.of.js","node_modules/core-js/modules/es6.array.copy-within.js","node_modules/core-js/modules/es6.array.find.js","node_modules/core-js/modules/es6.array.find-index.js","node_modules/core-js/modules/es6.array.fill.js","node_modules/core-js/modules/es6.number.is-finite.js","node_modules/core-js/modules/_is-integer.js","node_modules/core-js/modules/es6.number.is-integer.js","node_modules/core-js/modules/es6.number.is-safe-integer.js","node_modules/core-js/modules/es6.number.is-nan.js","node_modules/core-js/modules/es6.number.epsilon.js","node_modules/core-js/modules/es6.number.min-safe-integer.js","node_modules/core-js/modules/es6.number.max-safe-integer.js","node_modules/core-js/modules/_math-log1p.js","node_modules/core-js/modules/es6.math.acosh.js","node_modules/core-js/modules/es6.math.asinh.js","node_modules/core-js/modules/es6.math.atanh.js","node_modules/core-js/modules/_math-sign.js","node_modules/core-js/modules/es6.math.cbrt.js","node_modules/core-js/modules/es6.math.clz32.js","node_modules/core-js/modules/es6.math.cosh.js","node_modules/core-js/modules/_math-expm1.js","node_modules/core-js/modules/es6.math.expm1.js","node_modules/core-js/modules/_math-fround.js","node_modules/core-js/modules/es6.math.fround.js","node_modules/core-js/modules/es6.math.hypot.js","node_modules/core-js/modules/es6.math.imul.js","node_modules/core-js/modules/es6.math.log1p.js","node_modules/core-js/modules/es6.math.log10.js","node_modules/core-js/modules/es6.math.log2.js","node_modules/core-js/modules/es6.math.sign.js","node_modules/core-js/modules/es6.math.sinh.js","node_modules/core-js/modules/es6.math.tanh.js","node_modules/core-js/modules/es6.math.trunc.js","node_modules/core-js/modules/es7.array.includes.js","node_modules/core-js/modules/_object-to-array.js","node_modules/core-js/modules/es7.object.values.js","node_modules/core-js/modules/es7.object.entries.js","node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","node_modules/core-js/modules/_string-pad.js","node_modules/core-js/modules/_user-agent.js","node_modules/core-js/modules/es7.string.pad-start.js","node_modules/core-js/modules/es7.string.pad-end.js","node_modules/core-js/modules/web.timers.js","node_modules/core-js/modules/web.immediate.js","node_modules/core-js/modules/web.dom.iterable.js","node_modules/regenerator-runtime/runtime.js","node_modules/custom-event-polyfill/custom-event-polyfill.js","node_modules/url-polyfill/url-polyfill.js","src/js/utils/is.js","src/js/utils/events.js","src/js/utils/elements.js","src/js/utils/animation.js","src/js/utils/browser.js","src/js/support.js","src/js/html5.js","src/js/utils/objects.js","src/js/utils/strings.js","src/js/i18n.js","src/js/utils/arrays.js","src/js/storage.js","src/js/utils/loadSprite.js","src/js/utils/time.js","src/js/controls.js","src/js/utils/fetch.js","src/js/utils/urls.js","src/js/captions.js","src/js/config/defaults.js","src/js/config/types.js","src/js/console.js","src/js/fullscreen.js","src/js/utils/loadImage.js","src/js/ui.js","src/js/listeners.js","node_modules/loadjs/dist/loadjs.umd.js","src/js/utils/loadScript.js","src/js/plugins/vimeo.js","src/js/plugins/youtube.js","src/js/media.js","src/js/plugins/ads.js","src/js/source.js","src/js/plyr.js","src/js/plyr.polyfilled.js"],"names":["isObject","require$$0","document","require$$1","require$$2","anObject","toPrimitive","IE8_DOM_DEFINE","dP","createDesc","has","hide","global","aFunction","core","ctx","redefine","uid","toInteger","toLength","cof","IObject","defined","min","toIObject","toAbsoluteIndex","$keys","toObject","DESCRIPTORS","toIndex","$typed","anInstance","arrayFill","redefineAll","fails","setToStringTag","SPECIES","buffer","VIEW","$export","speciesConstructor","TAG","Iterators","enumBugKeys","getKeys","IE_PROTO","PROTOTYPE","dPs","ITERATOR","classof","isArray","asc","ArrayProto","create","descriptor","$iterCreate","getPrototypeOf","step","addToUnscopables","pIE","require$$3","require$$4","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","getIterFn","isArrayIter","call","forOf","validate","$iterDefine","setSpecies","meta","$iterDetect","inheritIfRequired","strong","gOPS","createArrayMethod","id","$has","weak","assign","invoke","bind","gOPD","getProto","Reflect","gOPN","setProto","cel","html","process","Promise","newPromiseCapability","TypeError","isNode","newPromiseCapabilityModule","perform","promiseResolve","LIBRARY","wksExt","toString","$GOPD","$DP","gOPNExt","wks","shared","ObjectProto","USE_NATIVE","$fails","_create","enumKeys","wksDefine","$getOwnPropertyDescriptor","$getPrototypeOf","isRegExp","MATCH","context","$defineProperty","createProperty","$find","KEY","forced","floor","isInteger","log1p","sign","$expm1","abs","exp","expm1","isEnum","ownKeys","repeat","navigator","userAgent","$pad","wrap","$task","i","NAME","$iterators","this","CustomEvent","getConstructor","input","constructor","instanceOf","Boolean","is","object","Object","number","Number","isNaN","string","String","boolean","function","Function","array","nullOrUndefined","Array","weakMap","WeakMap","nodeList","NodeList","element","Element","textNode","Text","event","Event","cue","window","TextTrackCue","VTTCue","track","TextTrack","kind","url","test","empty","length","keys","supportsPassiveListeners","supported","options","defineProperty","get","addEventListener","removeEventListener","e","toggleListener","callback","toggle","passive","capture","events","split","forEach","eventListeners","push","type","on","off","once","onceCallback","args","apply","triggerEvent","bubbles","detail","plyr","dispatchEvent","unbindListeners","item","ready","setTimeout","resolve","elements","container","then","wrapper","targets","from","reverse","index","child","cloneNode","parent","parentNode","sibling","nextSibling","appendChild","insertBefore","setAttributes","attributes","entries","filter","value","key","setAttribute","createElement","text","innerText","insertAfter","target","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","selector","s","trim","className","replace","stripped","parts","start","charAt","class","toggleHidden","hidden","hasAttribute","removeAttribute","toggleClass","force","method","classList","contains","hasClass","matches","prototype","match","querySelectorAll","includes","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","getElements","getElement","querySelector","getFocusElement","focused","activeElement","body","trapFocus","focusable","first","last","trap","keyCode","shiftKey","focus","preventDefault","toggleState","pressed","getAttribute","state","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","find","style","undefined","repaint","offsetHeight","browser","isIE","documentMode","isWebkit","documentElement","isIPhone","platform","isIos","defaultCodecs","support","audio","video","check","provider","playsinline","canPlayInline","api","ui","rangeInput","pip","webkitSetPresentationMode","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","inputType","mediaType","isHTML5","media","canPlayType","err","textTracks","range","touch","transitions","reducedMotion","matchMedia","html5","getSources","sources","source","getQualityOptions","map","extend","player","set","currentTime","playing","src","onLoadedMetaData","load","play","quality","cancelRequests","config","blankVideo","debug","log","cloneDeep","JSON","parse","stringify","getDeep","path","reduce","obj","shift","generateId","prefix","Math","random","format","getPercentage","current","max","toFixed","replaceAll","RegExp","toTitleCase","toUpperCase","substr","toLowerCase","toPascalCase","toCamelCase","slice","stripHTML","fragment","createDocumentFragment","innerHTML","firstChild","getHTML","i18n","seekTime","title","dedupe","indexOf","closest","prev","curr","Storage","enabled","storage","store","localStorage","getItem","json","setItem","removeItem","loadSprite","hasId","isCached","exists","getElementById","update","data","insertAdjacentElement","useStorage","cached","content","fetch","result","catch","getHours","parseInt","getMinutes","getSeconds","formatTime","time","displayHours","inverted","hours","mins","secs","controls","getIconUrl","URL","iconUrl","location","cors","host","svg4everybody","findElements","selectors","buttons","pause","restart","rewind","fastForward","mute","settings","captions","fullscreen","progress","inputs","seek","volume","display","duration","seekTooltip","classNames","tooltip","error","warn","toggleNativeControls","createIcon","namespace","iconPath","iconPrefix","icon","createElementNS","role","use","setAttributeNS","createLabel","attr","universals","join","createBadge","badge","menu","createButton","buttonType","button","label","labelPressed","iconPressed","control","createRange","for","autocomplete","updateRangeFill","createProgress","suffixKey","played","suffix","createTime","createMenuItem","list","checked","radio","name","faux","insertAdjacentHTML","updateTimeDisplay","forceHours","updateVolume","setRange","muted","updateProgress","setProgress","getElementsByTagName","nodeValue","buffered","setProperty","updateSeekTooltip","tooltips","percent","clientRect","getBoundingClientRect","visible","width","pageX","left","parseFloat","timeUpdate","invert","invertTime","seeking","durationUpdate","hasDuration","displayDuration","paused","toggleTab","setting","tabs","setQualityMenu","panes","checkMenu","getBadge","sort","a","b","sorting","getLabel","updateSetting","pane","currentTrack","default","setCaptionsMenu","tracks","getTracks","toggled","language","unshift","setSpeedMenu","speed","isVimeo","values","some","tab","toggleMenu","form","show","isMenuItem","isButton","stopPropagation","open","getTabSize","clone","position","opacity","scrollWidth","height","scrollHeight","showTab","isTab","size","restore","propertyName","tabindex","inner","home","back","inject","props","seektime","labels","responseType","reject","request","XMLHttpRequest","responseText","response","Error","statusText","send","parseUrl","safe","parser","href","buildUrlParams","params","URLSearchParams","setup","isVideo","isYouTube","hostname","protocol","createObjectURL","blob","languages","userLanguage","active","trackEvents","currentTrackNode","languageExists","mode","updateCues","setLanguage","activeClass","findTrack","embed","enableTextTrack","sortIsDefault","sorted","every","getCurrentTrack","cues","activeCues","getCueAsHTML","cueText","changed","caption","defaults","autoplay","autopause","toggleInvert","ratio","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","selected","keyboard","fallback","iosNative","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","normal","end","all","reset","disabled","advertisement","qualityBadge","urls","vimeo","sdk","iframe","youtube","googleIMA","listeners","editable","embedContainer","poster","posterEnabled","ads","stopped","loading","hover","isTouch","uiSupported","noTransition","tabFocus","google","publisherId","providers","types","getProviderByUrl","noop","Console","console","onChange","toggleFallback","scrollPosition","x","scrollX","y","scrollY","scrollTo","overflow","Fullscreen","property","native","webkitEnterFullscreen","requestFullscreen","webkitExitFullscreen","cancelFullScreen","action","enter","exit","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","prefixes","pre","loadImage","minWidth","image","Image","handler","onload","onerror","naturalWidth","addStyleHook","build","checkPlaying","setTitle","setPoster","isEmbed","togglePoster","enable","backgroundImage","backgroundSize","toggleControls","checkLoading","clearTimeout","timers","Listeners","lastKey","handleKey","firstTouch","code","which","altKey","ctrlKey","metaKey","seekByKey","togglePlay","increaseVolume","decreaseVolume","forward","toggleCaptions","delay","hasAudio","initialized","managerPromise","isAudio","ended","proxyEvents","concat","inputEvent","proxy","defaultHandler","customHandlerKey","customHandler","hasCustomHandler","returned","showHomeTab","currentTarget","eventType","done","seekTo","webkitDirectionInvertedFromDevice","direction","deltaY","deltaX","define","loadScript","loadjs","success","parseId","regex","$2","getAspectRatio","getRatio","w","h","assurePlaybackState","hasPlayed","setAspectRatio","Vimeo","padding","paddingBottom","offset","transform","byline","portrait","transparent","gesture","thumbnail_large","pathname","Player","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","setPlaybackRate","setLoop","currentSrc","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","setAutopause","getVideoTitle","getCurrentTime","getDuration","getTextTracks","strippedCues","getPaused","frame","seconds","mapQualityUnit","qualities","hd2160","hd1440","hd1080","hd720","large","medium","small","tiny","entry","mapQualityUnits","levels","level","YT","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","getTitle","videoId","getVideoData","items","snippet","currentId","startsWith","posterSrc","playerVars","rel","showinfo","iv_load_policy","modestbranding","disablekb","widget_referrer","cc_load_policy","cc_lang_pref","onError","message","onPlaybackQualityChange","onPlaybackRateChange","instance","playbackRate","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","getPlaybackQuality","setPlaybackQuality","getAvailablePlaybackRates","clearInterval","buffering","setInterval","getVideoLoadedFraction","lastBuffered","onStateChange","seeked","getAvailableQualityLevels","unMute","Ads","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","ima","trigger","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","tagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","cuePoint","seekElement","cuePercentage","AdEvent","onAdEvent","ad","getAd","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","cancel","contentComplete","seekedTime","discardAdBreak","splice","resize","ViewMode","NORMAL","initialize","init","adError","zIndex","destroy","handlers","AV_PUBLISHERID","AV_CHANNELID","AV_URL","cb","Date","now","AV_WIDTH","AV_HEIGHT","AV_CDIM2","base","insertElements","attribute","change","tagName","crossorigin","Plyr","failed","jQuery","original","searchParams","truthy","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","fauxDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","states","inline","webkitPresentationMode","t"],"mappings":"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","file":"plyr.polyfilled.js","sourcesContent":["// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var core = module.exports = { version: '2.5.3' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","module.exports = false;\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var final = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < final) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","module.exports = {};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = (!BUGGY && $native) || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","exports.f = {}.propertyIsEnumerable;\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","'use strict';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","exports.f = Object.getOwnPropertySymbols;\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","'use strict';\nvar redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","'use strict';\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar validate = require('./_validate-collection');\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar tmp = {};\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (fails(function () { return new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7; })) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n","// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace) {\n // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)\n return [function replace(searchValue, replaceValue) {\n 'use strict';\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n }, $replace];\n});\n","// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = require('./_is-regexp');\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n","// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search) {\n // 21.1.3.15 String.prototype.search(regexp)\n return [function search(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n }, $search];\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\n$export($export.P + $export.F * /Version\\/10\\.\\d+(\\.\\d+)? Safari\\//.test(userAgent), 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n if (typeof global.process === \"object\" && global.process.domain) {\n invoke = global.process.domain.bind(invoke);\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","// Polyfill for creating CustomEvents on IE9/10/11\n\n// code pulled from:\n// https://github.com/d4tocchini/customevent-polyfill\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill\n\ntry {\n var ce = new window.CustomEvent('test');\n ce.preventDefault();\n if (ce.defaultPrevented !== true) {\n // IE has problems with .preventDefault() on custom events\n // http://stackoverflow.com/questions/23349191\n throw new Error('Could not prevent default');\n }\n} catch(e) {\n var CustomEvent = function(event, params) {\n var evt, origPrevent;\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n\n evt = document.createEvent(\"CustomEvent\");\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n origPrevent = evt.preventDefault;\n evt.preventDefault = function () {\n origPrevent.call(this);\n try {\n Object.defineProperty(this, 'defaultPrevented', {\n get: function () {\n return true;\n }\n });\n } catch(e) {\n this.defaultPrevented = true;\n }\n };\n return evt;\n };\n\n CustomEvent.prototype = window.Event.prototype;\n window.CustomEvent = CustomEvent; // expose definition to window\n}\n","(function(global) {\r\n /**\r\n * Polyfill URLSearchParams\r\n *\r\n * Inspired from : https://github.com/WebReflection/url-search-params/blob/master/src/url-search-params.js\r\n */\r\n\r\n var checkIfIteratorIsSupported = function() {\r\n try {\r\n return !!Symbol.iterator;\r\n } catch(error) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var iteratorSupported = checkIfIteratorIsSupported();\r\n\r\n var createIterator = function(items) {\r\n var iterator = {\r\n next: function() {\r\n var value = items.shift();\r\n return { done: value === void 0, value: value };\r\n }\r\n };\r\n\r\n if(iteratorSupported) {\r\n iterator[Symbol.iterator] = function() {\r\n return iterator;\r\n };\r\n }\r\n\r\n return iterator;\r\n };\r\n\r\n /**\r\n * Search param name and values should be encoded according to https://url.spec.whatwg.org/#urlencoded-serializing\r\n * encodeURIComponent() produces the same result except encoding spaces as `%20` instead of `+`.\r\n */\r\n var serializeParam = function(value) {\r\n return encodeURIComponent(value).replace(/%20/g, '+');\r\n };\r\n\r\n var deserializeParam = function(value) {\r\n return decodeURIComponent(value).replace(/\\+/g, ' ');\r\n };\r\n\r\n var polyfillURLSearchParams= function() {\r\n\r\n var URLSearchParams = function(searchString) {\r\n Object.defineProperty(this, '_entries', { value: {} });\r\n\r\n if(typeof searchString === 'string') {\r\n if(searchString !== '') {\r\n searchString = searchString.replace(/^\\?/, '');\r\n var attributes = searchString.split('&');\r\n var attribute;\r\n for(var i = 0; i < attributes.length; i++) {\r\n attribute = attributes[i].split('=');\r\n this.append(\r\n deserializeParam(attribute[0]),\r\n (attribute.length > 1) ? deserializeParam(attribute[1]) : ''\r\n );\r\n }\r\n }\r\n } else if(searchString instanceof URLSearchParams) {\r\n var _this = this;\r\n searchString.forEach(function(value, name) {\r\n _this.append(value, name);\r\n });\r\n }\r\n };\r\n\r\n var proto = URLSearchParams.prototype;\r\n\r\n proto.append = function(name, value) {\r\n if(name in this._entries) {\r\n this._entries[name].push(value.toString());\r\n } else {\r\n this._entries[name] = [value.toString()];\r\n }\r\n };\r\n\r\n proto.delete = function(name) {\r\n delete this._entries[name];\r\n };\r\n\r\n proto.get = function(name) {\r\n return (name in this._entries) ? this._entries[name][0] : null;\r\n };\r\n\r\n proto.getAll = function(name) {\r\n return (name in this._entries) ? this._entries[name].slice(0) : [];\r\n };\r\n\r\n proto.has = function(name) {\r\n return (name in this._entries);\r\n };\r\n\r\n proto.set = function(name, value) {\r\n this._entries[name] = [value.toString()];\r\n };\r\n\r\n proto.forEach = function(callback, thisArg) {\r\n var entries;\r\n for(var name in this._entries) {\r\n if(this._entries.hasOwnProperty(name)) {\r\n entries = this._entries[name];\r\n for(var i = 0; i < entries.length; i++) {\r\n callback.call(thisArg, entries[i], name, this);\r\n }\r\n }\r\n }\r\n };\r\n\r\n proto.keys = function() {\r\n var items = [];\r\n this.forEach(function(value, name) { items.push(name); });\r\n return createIterator(items);\r\n };\r\n\r\n proto.values = function() {\r\n var items = [];\r\n this.forEach(function(value) { items.push(value); });\r\n return createIterator(items);\r\n };\r\n\r\n proto.entries = function() {\r\n var items = [];\r\n this.forEach(function(value, name) { items.push([name, value]); });\r\n return createIterator(items);\r\n };\r\n\r\n if(iteratorSupported) {\r\n proto[Symbol.iterator] = proto.entries;\r\n }\r\n\r\n proto.toString = function() {\r\n var searchString = '';\r\n this.forEach(function(value, name) {\r\n if(searchString.length > 0) searchString+= '&';\r\n searchString += serializeParam(name) + '=' + serializeParam(value);\r\n });\r\n return searchString;\r\n };\r\n\r\n global.URLSearchParams = URLSearchParams;\r\n };\r\n\r\n if(!('URLSearchParams' in global) || (new URLSearchParams('?a=1').toString() !== 'a=1')) {\r\n polyfillURLSearchParams();\r\n }\r\n\r\n // HTMLAnchorElement\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n\r\n(function(global) {\r\n /**\r\n * Polyfill URL\r\n *\r\n * Inspired from : https://github.com/arv/DOM-URL-Polyfill/blob/master/src/url.js\r\n */\r\n\r\n var checkIfURLIsSupported = function() {\r\n try {\r\n var u = new URL('b', 'http://a');\r\n u.pathname = 'c%20d';\r\n return (u.href === 'http://a/c%20d') && u.searchParams;\r\n } catch(e) {\r\n return false;\r\n }\r\n };\r\n\r\n\r\n var polyfillURL = function() {\r\n var _URL = global.URL;\r\n\r\n var URL = function(url, base) {\r\n if(typeof url !== 'string') url = String(url);\r\n\r\n var doc = document.implementation.createHTMLDocument('');\r\n window.doc = doc;\r\n if(base) {\r\n var baseElement = doc.createElement('base');\r\n baseElement.href = base;\r\n doc.head.appendChild(baseElement);\r\n }\r\n\r\n var anchorElement = doc.createElement('a');\r\n anchorElement.href = url;\r\n doc.body.appendChild(anchorElement);\r\n anchorElement.href = anchorElement.href; // force href to refresh\r\n\r\n if(anchorElement.protocol === ':' || !/:/.test(anchorElement.href)) {\r\n throw new TypeError('Invalid URL');\r\n }\r\n\r\n Object.defineProperty(this, '_anchorElement', {\r\n value: anchorElement\r\n });\r\n };\r\n\r\n var proto = URL.prototype;\r\n\r\n var linkURLWithAnchorAttribute = function(attributeName) {\r\n Object.defineProperty(proto, attributeName, {\r\n get: function() {\r\n return this._anchorElement[attributeName];\r\n },\r\n set: function(value) {\r\n this._anchorElement[attributeName] = value;\r\n },\r\n enumerable: true\r\n });\r\n };\r\n\r\n ['hash', 'host', 'hostname', 'port', 'protocol', 'search']\r\n .forEach(function(attributeName) {\r\n linkURLWithAnchorAttribute(attributeName);\r\n });\r\n\r\n Object.defineProperties(proto, {\r\n\r\n 'toString': {\r\n get: function() {\r\n var _this = this;\r\n return function() {\r\n return _this.href;\r\n };\r\n }\r\n },\r\n\r\n 'href' : {\r\n get: function() {\r\n return this._anchorElement.href.replace(/\\?$/,'');\r\n },\r\n set: function(value) {\r\n this._anchorElement.href = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'pathname' : {\r\n get: function() {\r\n return this._anchorElement.pathname.replace(/(^\\/?)/,'/');\r\n },\r\n set: function(value) {\r\n this._anchorElement.pathname = value;\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'origin': {\r\n get: function() {\r\n // get expected port from protocol\r\n var expectedPort = {'http:': 80, 'https:': 443, 'ftp:': 21}[this._anchorElement.protocol];\r\n // add port to origin if, expected port is different than actual port\r\n // and it is not empty f.e http://foo:8080\r\n // 8080 != 80 && 8080 != ''\r\n var addPortToOrigin = this._anchorElement.port != expectedPort &&\r\n this._anchorElement.port !== ''\r\n\r\n return this._anchorElement.protocol +\r\n '//' +\r\n this._anchorElement.hostname +\r\n (addPortToOrigin ? (':' + this._anchorElement.port) : '');\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'password': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'username': { // TODO\r\n get: function() {\r\n return '';\r\n },\r\n set: function(value) {\r\n },\r\n enumerable: true\r\n },\r\n\r\n 'searchParams': {\r\n get: function() {\r\n var searchParams = new URLSearchParams(this.search);\r\n var _this = this;\r\n ['append', 'delete', 'set'].forEach(function(methodName) {\r\n var method = searchParams[methodName];\r\n searchParams[methodName] = function() {\r\n method.apply(searchParams, arguments);\r\n _this.search = searchParams.toString();\r\n };\r\n });\r\n return searchParams;\r\n },\r\n enumerable: true\r\n }\r\n });\r\n\r\n URL.createObjectURL = function(blob) {\r\n return _URL.createObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n URL.revokeObjectURL = function(url) {\r\n return _URL.revokeObjectURL.apply(_URL, arguments);\r\n };\r\n\r\n global.URL = URL;\r\n\r\n };\r\n\r\n if(!checkIfURLIsSupported()) {\r\n polyfillURL();\r\n }\r\n\r\n if((global.location !== void 0) && !('origin' in global.location)) {\r\n var getOrigin = function() {\r\n return global.location.protocol + '//' + global.location.hostname + (global.location.port ? (':' + global.location.port) : '');\r\n };\r\n\r\n try {\r\n Object.defineProperty(global.location, 'origin', {\r\n get: getOrigin,\r\n enumerable: true\r\n });\r\n } catch(e) {\r\n setInterval(function() {\r\n global.location.origin = getOrigin();\r\n }, 100);\r\n }\r\n }\r\n\r\n})(\r\n (typeof global !== 'undefined') ? global\r\n : ((typeof window !== 'undefined') ? window\r\n : ((typeof self !== 'undefined') ? self : this))\r\n);\r\n","// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\n\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\n\nconst is = {\n object(input) {\n return getConstructor(input) === Object;\n },\n number(input) {\n return getConstructor(input) === Number && !Number.isNaN(input);\n },\n string(input) {\n return getConstructor(input) === String;\n },\n boolean(input) {\n return getConstructor(input) === Boolean;\n },\n function(input) {\n return getConstructor(input) === Function;\n },\n array(input) {\n return !is.nullOrUndefined(input) && Array.isArray(input);\n },\n weakMap(input) {\n return instanceOf(input, WeakMap);\n },\n nodeList(input) {\n return instanceOf(input, NodeList);\n },\n element(input) {\n return instanceOf(input, Element);\n },\n textNode(input) {\n return getConstructor(input) === Text;\n },\n event(input) {\n return instanceOf(input, Event);\n },\n cue(input) {\n return instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\n },\n track(input) {\n return instanceOf(input, TextTrack) || (!is.nullOrUndefined(input) && is.string(input.kind));\n },\n url(input) {\n return (\n !is.nullOrUndefined(input) &&\n /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?/.test(input)\n );\n },\n nullOrUndefined(input) {\n return input === null || typeof input === 'undefined';\n },\n empty(input) {\n return (\n is.nullOrUndefined(input) ||\n ((is.string(input) || is.array(input) || is.nodeList(input)) && !input.length) ||\n (is.object(input) && !Object.keys(input).length)\n );\n },\n};\n\nexport default is;\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // Do nothing\n }\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach(type => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n function onceCallback(...args) {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n }\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: Object.assign({}, detail, {\n plyr: this,\n }),\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach(item => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(\n resolve => (this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve)),\n ).then(() => {});\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport { toggleListener } from './events';\nimport is from './is';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n } else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) {\n return;\n }\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new
\n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.innerText = text;\n }\n\n // Return built element\n return element;\n}\n\n// Inaert an element after another\nexport function insertAfter(element, target) {\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n // Inject the new \n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) {\n return null;\n }\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) {\n return {};\n }\n\n const attributes = {};\n const existing = existingAttributes;\n\n sel.split(',').forEach(s => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n\n // Get the parts and value\n const parts = stripped.split('=');\n const key = parts[0];\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.object(existing) && is.string(existing.class)) {\n existing.class += ` ${className}`;\n }\n\n attributes.class = className;\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return attributes;\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) {\n return;\n }\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hasAttribute('hidden');\n }\n\n if (hide) {\n element.setAttribute('hidden', '');\n } else {\n element.removeAttribute('hidden');\n }\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return null;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const matches =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return matches.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Get the focused element\nexport function getFocusElement() {\n let focused = document.activeElement;\n\n if (!focused || focused === document.body) {\n focused = null;\n } else {\n focused = document.querySelector(':focus');\n }\n\n return focused;\n}\n\n// Trap focus inside container\nexport function trapFocus(element = null, toggle = false) {\n if (!is.element(element)) {\n return;\n }\n\n const focusable = getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]');\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n const trap = event => {\n // Bail if not tab key or not fullscreen\n if (event.key !== 'Tab' || event.keyCode !== 9) {\n return;\n }\n\n // Get the current focused element\n const focused = getFocusElement();\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n } else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false);\n}\n\n// Toggle aria-pressed state on a toggle button\n// http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles\nexport function toggleState(element, input) {\n // If multiple elements passed\n if (is.array(element) || is.nodeList(element)) {\n Array.from(element).forEach(target => toggleState(target, input));\n return;\n }\n\n // Bail if no target\n if (!is.element(element)) {\n return;\n }\n\n // Get state\n const pressed = element.getAttribute('aria-pressed') === 'true';\n const state = is.boolean(input) ? input : !pressed;\n\n // Set the attribute on target\n element.setAttribute('aria-pressed', state);\n}\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport { toggleHidden } from './elements';\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element) {\n setTimeout(() => {\n toggleHidden(element, true);\n element.offsetHeight; // eslint-disable-line\n toggleHidden(element, false);\n }, 0);\n}\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst browser = {\n isIE: /* @cc_on!@ */ false || !!document.documentMode,\n isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform),\n};\n\nexport default browser;\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport browser from './utils/browser';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider, playsinline) {\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari only currently\n pip: (() => !browser.isIPhone && is.function(createElement('video').webkitSetPresentationMode))(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(inputType) {\n const [mediaType] = inputType.split('/');\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n let type;\n if (inputType && inputType.includes('codecs=')) {\n // Use input directly\n type = inputType;\n } else if (inputType === 'audio/mpeg') {\n // Skip codec\n type = 'audio/mpeg;';\n } else if (inputType in defaultCodecs) {\n // Use codec\n type = `${inputType}; codecs=\"${defaultCodecs[inputType]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n } catch (err) {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources\n return sources.filter(source => support.mime.call(this, source.getAttribute('type')));\n },\n\n // Get quality levels\n getQualityOptions() {\n // Get sizes from elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n extend() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const [source] = sources.filter(source => source.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n // Get sources\n const sources = html5.getSources.call(player);\n\n // Get first match for requested size\n const source = sources.find(source => Number(source.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, playing } = player;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Restore time\n const onLoadedMetaData = () => {\n player.currentTime = currentTime;\n };\n player.once('loadedmetadata', onLoadedMetaData);\n\n // Load new source\n player.media.load();\n\n // Resume playing\n if (playing) {\n player.play();\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach(key => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) {\n return input;\n }\n\n return input.toString().replace(/{(\\d+)}/g, (match, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return (current / max * 100).toFixed(2);\n}\n\n// Replace all occurances of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(\n new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'),\n replace.toString(),\n );\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.innerText;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './utils/is';\nimport { getDeep } from './utils/objects';\nimport { replaceAll } from './utils/strings';\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([key, value]) => {\n string = replaceAll(string, key, value);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) {\n return false;\n }\n\n const test = '___test';\n\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n get(key) {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n\n const store = window.localStorage.getItem(this.key);\n\n if (is.empty(store)) {\n return null;\n }\n\n const json = JSON.parse(store);\n\n return is.string(key) && key.length ? json[key] : json;\n }\n\n set(object) {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objectst\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n}\n\nexport default Storage;\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from './../storage';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then(result => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => parseInt((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => parseInt((value / 60) % 60, 10);\nexport const getSeconds = value => parseInt(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(null, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n } else {\n hours = '';\n }\n\n // Render\n return `${inverted ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// ==========================================================================\n\nimport captions from './captions';\nimport html5 from './html5';\nimport i18n from './i18n';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n removeElement,\n setAttributes,\n toggleClass,\n toggleHidden,\n toggleState,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport is from './utils/is';\nimport loadSprite from './utils/loadSprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const cors = url.host !== window.location.host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls and store references in custom controls\n // TODO: Allow settings menus with custom controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(\n `.${this.config.classNames.tooltip}`,\n );\n }\n\n return true;\n } catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n role: 'presentation',\n focusable: 'false',\n }),\n );\n\n // Create the to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n } else {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n }\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(type, attr = {}) {\n // Skip i18n for abbreviations and brand names\n const universals = {\n pip: 'PIP',\n airplay: 'AirPlay',\n };\n\n const text = universals[type] || i18n.get(type, this.config);\n const attributes = Object.assign({}, attr, {\n class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' '),\n });\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a \n createButton(buttonType, attr) {\n const button = createElement('button');\n const attributes = Object.assign({}, attr);\n let type = toCamelCase(buttonType);\n\n let toggle = false;\n let label;\n let icon;\n let labelPressed;\n let iconPressed;\n\n if (!('type' in attributes)) {\n attributes.type = 'button';\n }\n\n if ('class' in attributes) {\n if (attributes.class.includes(this.config.classNames.control)) {\n attributes.class += ` ${this.config.classNames.control}`;\n }\n } else {\n attributes.class = this.config.classNames.control;\n }\n\n // Large play button\n switch (buttonType) {\n case 'play':\n toggle = true;\n label = 'play';\n labelPressed = 'pause';\n icon = 'play';\n iconPressed = 'pause';\n break;\n\n case 'mute':\n toggle = true;\n label = 'mute';\n labelPressed = 'unmute';\n icon = 'volume';\n iconPressed = 'muted';\n break;\n\n case 'captions':\n toggle = true;\n label = 'enableCaptions';\n labelPressed = 'disableCaptions';\n icon = 'captions-off';\n iconPressed = 'captions-on';\n break;\n\n case 'fullscreen':\n toggle = true;\n label = 'enterFullscreen';\n labelPressed = 'exitFullscreen';\n icon = 'enter-fullscreen';\n iconPressed = 'exit-fullscreen';\n break;\n\n case 'play-large':\n attributes.class += ` ${this.config.classNames.control}--overlaid`;\n type = 'play';\n label = 'play';\n icon = 'play';\n break;\n\n default:\n label = type;\n icon = buttonType;\n }\n\n // Setup toggle icon and labels\n if (toggle) {\n // Icon\n button.appendChild(controls.createIcon.call(this, iconPressed, { class: 'icon--pressed' }));\n button.appendChild(controls.createIcon.call(this, icon, { class: 'icon--not-pressed' }));\n\n // Label/Tooltip\n button.appendChild(controls.createLabel.call(this, labelPressed, { class: 'label--pressed' }));\n button.appendChild(controls.createLabel.call(this, label, { class: 'label--not-pressed' }));\n\n // Add aria attributes\n attributes['aria-pressed'] = false;\n } else {\n button.appendChild(controls.createIcon.call(this, icon));\n button.appendChild(controls.createLabel.call(this, label));\n }\n\n // Merge attributes\n extend(attributes, getAttributesFromSelector(this.config.selectors.buttons[type], attributes));\n\n setAttributes(button, attributes);\n\n // We have multiple play buttons\n if (type === 'play') {\n if (!is.array(this.elements.buttons[type])) {\n this.elements.buttons[type] = [];\n }\n\n this.elements.buttons[type].push(button);\n } else {\n this.elements.buttons[type] = button;\n }\n\n return button;\n },\n\n // Create an \n createRange(type, attributes) {\n // Seek label\n const label = createElement(\n 'label',\n {\n for: attributes.id,\n id: `${attributes.id}-label`,\n class: this.config.classNames.hidden,\n },\n i18n.get(type, this.config),\n );\n\n // Seek input\n const input = createElement(\n 'input',\n extend(\n getAttributesFromSelector(this.config.selectors.inputs[type]),\n {\n type: 'range',\n min: 0,\n max: 100,\n step: 0.01,\n value: 0,\n autocomplete: 'off',\n // A11y fixes for https://github.com/sampotts/plyr/issues/905\n role: 'slider',\n 'aria-labelledby': `${attributes.id}-label`,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n 'aria-valuenow': 0,\n },\n attributes,\n ),\n );\n\n this.elements.inputs[type] = input;\n\n // Set the fill for webkit now\n controls.updateRangeFill.call(this, input);\n\n return {\n label,\n input,\n };\n },\n\n // Create a \n createProgress(type, attributes) {\n const progress = createElement(\n 'progress',\n extend(\n getAttributesFromSelector(this.config.selectors.display[type]),\n {\n min: 0,\n max: 100,\n value: 0,\n role: 'presentation',\n 'aria-hidden': true,\n },\n attributes,\n ),\n );\n\n // Create the label inside\n if (type !== 'volume') {\n progress.appendChild(createElement('span', null, '0'));\n\n const suffixKey = {\n played: 'played',\n buffer: 'buffered',\n }[type];\n\n const suffix = suffixKey ? i18n.get(suffixKey, this.config) : '';\n\n progress.innerText = `% ${suffix.toLowerCase()}`;\n }\n\n this.elements.display[type] = progress;\n\n return progress;\n },\n\n // Create time display\n createTime(type) {\n const attributes = getAttributesFromSelector(this.config.selectors.display[type]);\n\n const container = createElement(\n 'div',\n extend(attributes, {\n class: `plyr__time ${attributes.class}`,\n 'aria-label': i18n.get(type, this.config),\n }),\n '00:00',\n );\n\n // Reference for updates\n this.elements.display[type] = container;\n\n return container;\n },\n\n // Create a settings menu item\n createMenuItem({ value, list, type, title, badge = null, checked = false }) {\n const item = createElement('li');\n\n const label = createElement('label', {\n class: this.config.classNames.control,\n });\n\n const radio = createElement(\n 'input',\n extend(getAttributesFromSelector(this.config.selectors.inputs[type]), {\n type: 'radio',\n name: `plyr-${type}`,\n value,\n checked,\n class: 'plyr__sr-only',\n }),\n );\n\n const faux = createElement('span', { hidden: '' });\n\n label.appendChild(radio);\n label.appendChild(faux);\n label.insertAdjacentHTML('beforeend', title);\n\n if (is.element(badge)) {\n label.appendChild(badge);\n }\n\n item.appendChild(label);\n list.appendChild(item);\n },\n\n // Update the displayed time\n updateTimeDisplay(target = null, time = 0, inverted = false) {\n // Bail if there's no element to display or the value isn't a number\n if (!is.element(target) || !is.number(time)) {\n return;\n }\n\n // Always display hours if duration is over an hour\n const forceHours = getHours(this.duration) > 0;\n\n // eslint-disable-next-line no-param-reassign\n target.innerText = formatTime(time, forceHours, inverted);\n },\n\n // Update volume UI and storage\n updateVolume() {\n if (!this.supported.ui) {\n return;\n }\n\n // Update range\n if (is.element(this.elements.inputs.volume)) {\n controls.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n }\n\n // Update mute state\n if (is.element(this.elements.buttons.mute)) {\n toggleState(this.elements.buttons.mute, this.muted || this.volume === 0);\n }\n },\n\n // Update seek value and lower fill\n setRange(target, value = 0) {\n if (!is.element(target)) {\n return;\n }\n\n // eslint-disable-next-line\n target.value = value;\n\n // Webkit range fill\n controls.updateRangeFill.call(this, target);\n },\n\n // Update elements\n updateProgress(event) {\n if (!this.supported.ui || !is.event(event)) {\n return;\n }\n\n let value = 0;\n\n const setProgress = (target, input) => {\n const value = is.number(input) ? input : 0;\n const progress = is.element(target) ? target : this.elements.display.buffer;\n\n // Update value and label\n if (is.element(progress)) {\n progress.value = value;\n\n // Update text label inside\n const label = progress.getElementsByTagName('span')[0];\n if (is.element(label)) {\n label.childNodes[0].nodeValue = value;\n }\n }\n };\n\n if (event) {\n switch (event.type) {\n // Video playing\n case 'timeupdate':\n case 'seeking':\n case 'seeked':\n value = getPercentage(this.currentTime, this.duration);\n\n // Set seek range value only if it's a 'natural' time event\n if (event.type === 'timeupdate') {\n controls.setRange.call(this, this.elements.inputs.seek, value);\n }\n\n break;\n\n // Check buffer status\n case 'playing':\n case 'progress':\n setProgress(this.elements.display.buffer, this.buffered * 100);\n\n break;\n\n default:\n break;\n }\n }\n },\n\n // Webkit polyfill for lower fill range\n updateRangeFill(target) {\n // Get range from event if event passed\n const range = is.event(target) ? target.target : target;\n\n // Needs to be a valid \n if (!is.element(range) || range.getAttribute('type') !== 'range') {\n return;\n }\n\n // Set aria value for https://github.com/sampotts/plyr/issues/905\n range.setAttribute('aria-valuenow', range.value);\n\n // WebKit only\n if (!browser.isWebkit) {\n return;\n }\n\n // Set CSS custom property\n range.style.setProperty('--value', `${range.value / range.max * 100}%`);\n },\n\n // Update hover tooltip for seeking\n updateSeekTooltip(event) {\n // Bail if setting not true\n if (\n !this.config.tooltips.seek ||\n !is.element(this.elements.inputs.seek) ||\n !is.element(this.elements.display.seekTooltip) ||\n this.duration === 0\n ) {\n return;\n }\n\n // Calculate percentage\n let percent = 0;\n const clientRect = this.elements.progress.getBoundingClientRect();\n const visible = `${this.config.classNames.tooltip}--visible`;\n\n const toggle = toggle => {\n toggleClass(this.elements.display.seekTooltip, visible, toggle);\n };\n\n // Hide on touch\n if (this.touch) {\n toggle(false);\n return;\n }\n\n // Determine percentage, if already visible\n if (is.event(event)) {\n percent = 100 / clientRect.width * (event.pageX - clientRect.left);\n } else if (hasClass(this.elements.display.seekTooltip, visible)) {\n percent = parseFloat(this.elements.display.seekTooltip.style.left, 10);\n } else {\n return;\n }\n\n // Set bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Display the time a click would seek to\n controls.updateTimeDisplay.call(this, this.elements.display.seekTooltip, this.duration / 100 * percent);\n\n // Set position\n this.elements.display.seekTooltip.style.left = `${percent}%`;\n\n // Show/hide the tooltip\n // If the event is a moues in/out and percentage is inside bounds\n if (is.event(event) && ['mouseenter', 'mouseleave'].includes(event.type)) {\n toggle(event.type === 'mouseenter');\n }\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n controls.updateTimeDisplay.call(\n this,\n this.elements.display.currentTime,\n invert ? this.duration - this.currentTime : this.currentTime,\n invert,\n );\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n controls.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded or durationchange events\n durationUpdate() {\n // Bail if no ui or durationchange event triggered after playing/seek when invertTime is false\n if (!this.supported.ui || (!this.config.invertTime && this.currentTime)) {\n return;\n }\n\n // If there's a spot to display duration\n const hasDuration = is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n controls.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n controls.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n\n // Hide/show a tab\n toggleTab(setting, toggle) {\n toggleHidden(this.elements.settings.tabs[setting], !toggle);\n },\n\n // Set the quality menu\n setQualityMenu(options) {\n // Menu required\n if (!is.element(this.elements.settings.panes.quality)) {\n return;\n }\n\n const type = 'quality';\n const list = this.elements.settings.panes.quality.querySelector('ul');\n\n // Set options if passed and filter based on uniqueness and config\n if (is.array(options)) {\n this.options.quality = dedupe(options).filter(quality => this.config.quality.options.includes(quality));\n }\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.quality) && this.options.quality.length > 1;\n controls.toggleTab.call(this, type, toggle);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Empty the menu\n emptyElement(list);\n\n // Get the badge HTML for HD, 4K etc\n const getBadge = quality => {\n const label = i18n.get(`qualityBadge.${quality}`, this.config);\n\n if (!label.length) {\n return null;\n }\n\n return controls.createBadge.call(this, label);\n };\n\n // Sort options by the config and then render options\n this.options.quality\n .sort((a, b) => {\n const sorting = this.config.quality.options;\n return sorting.indexOf(a) > sorting.indexOf(b) ? 1 : -1;\n })\n .forEach(quality => {\n controls.createMenuItem.call(this, {\n value: quality,\n list,\n type,\n title: controls.getLabel.call(this, 'quality', quality),\n badge: getBadge(quality),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Translate a value into a nice label\n getLabel(setting, value) {\n switch (setting) {\n case 'speed':\n return value === 1 ? i18n.get('normal', this.config) : `${value}×`;\n\n case 'quality':\n if (is.number(value)) {\n const label = i18n.get(`qualityLabel.${value}`, this.config);\n\n if (!label.length) {\n return `${value}p`;\n }\n\n return label;\n }\n\n return toTitleCase(value);\n\n case 'captions':\n return captions.getLabel.call(this);\n\n default:\n return null;\n }\n },\n\n // Update the selected setting\n updateSetting(setting, container, input) {\n const pane = this.elements.settings.panes[setting];\n let value = null;\n let list = container;\n\n if (setting === 'captions') {\n value = this.currentTrack;\n } else {\n value = !is.empty(input) ? input : this[setting];\n\n // Get default\n if (is.empty(value)) {\n value = this.config[setting].default;\n }\n\n // Unsupported value\n if (!is.empty(this.options[setting]) && !this.options[setting].includes(value)) {\n this.debug.warn(`Unsupported value of '${value}' for ${setting}`);\n return;\n }\n\n // Disabled value\n if (!this.config[setting].options.includes(value)) {\n this.debug.warn(`Disabled value of '${value}' for ${setting}`);\n return;\n }\n }\n\n // Get the list if we need to\n if (!is.element(list)) {\n list = pane && pane.querySelector('ul');\n }\n\n // If there's no list it means it's not been rendered...\n if (!is.element(list)) {\n return;\n }\n\n // Update the label\n const label = this.elements.settings.tabs[setting].querySelector(`.${this.config.classNames.menu.value}`);\n label.innerHTML = controls.getLabel.call(this, setting, value);\n\n // Find the radio option and check it\n const target = list && list.querySelector(`input[value=\"${value}\"]`);\n\n if (is.element(target)) {\n target.checked = true;\n }\n },\n\n // Set the looping options\n /* setLoopMenu() {\n // Menu required\n if (!is.element(this.elements.settings.panes.loop)) {\n return;\n }\n\n const options = ['start', 'end', 'all', 'reset'];\n const list = this.elements.settings.panes.loop.querySelector('ul');\n\n // Show the pane and tab\n toggleHidden(this.elements.settings.tabs.loop, false);\n toggleHidden(this.elements.settings.panes.loop, false);\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.loop.options);\n controls.toggleTab.call(this, 'loop', toggle);\n\n // Empty the menu\n emptyElement(list);\n\n options.forEach(option => {\n const item = createElement('li');\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.loop), {\n type: 'button',\n class: this.config.classNames.control,\n 'data-plyr-loop-action': option,\n }),\n i18n.get(option, this.config)\n );\n\n if (['start', 'end'].includes(option)) {\n const badge = controls.createBadge.call(this, '00:00');\n button.appendChild(badge);\n }\n\n item.appendChild(button);\n list.appendChild(item);\n });\n }, */\n\n // Get current selected caption language\n // TODO: rework this to user the getter in the API?\n\n // Set a list of available captions languages\n setCaptionsMenu() {\n // TODO: Captions or language? Currently it's mixed\n const type = 'captions';\n const list = this.elements.settings.panes.captions.querySelector('ul');\n const tracks = captions.getTracks.call(this);\n\n // Toggle the pane and tab\n controls.toggleTab.call(this, type, tracks.length);\n\n // Empty the menu\n emptyElement(list);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If there's no captions, bail\n if (!tracks.length) {\n return;\n }\n\n // Generate options data\n const options = tracks.map((track, value) => ({\n value,\n checked: this.captions.toggled && this.currentTrack === value,\n title: captions.getLabel.call(this, track),\n badge: track.language && controls.createBadge.call(this, track.language.toUpperCase()),\n list,\n type: 'language',\n }));\n\n // Add the \"Disabled\" option to turn off captions\n options.unshift({\n value: -1,\n checked: !this.captions.toggled,\n title: i18n.get('disabled', this.config),\n list,\n type: 'language',\n });\n\n // Generate options\n options.forEach(controls.createMenuItem.bind(this));\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Set a list of available captions languages\n setSpeedMenu(options) {\n // Do nothing if not selected\n if (!this.config.controls.includes('settings') || !this.config.settings.includes('speed')) {\n return;\n }\n\n // Menu required\n if (!is.element(this.elements.settings.panes.speed)) {\n return;\n }\n\n const type = 'speed';\n\n // Set the speed options\n if (is.array(options)) {\n this.options.speed = options;\n } else if (this.isHTML5 || this.isVimeo) {\n this.options.speed = [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];\n }\n\n // Set options if passed and filter based on config\n this.options.speed = this.options.speed.filter(speed => this.config.speed.options.includes(speed));\n\n // Toggle the pane and tab\n const toggle = !is.empty(this.options.speed) && this.options.speed.length > 1;\n controls.toggleTab.call(this, type, toggle);\n\n // Check if we need to toggle the parent\n controls.checkMenu.call(this);\n\n // If we're hiding, nothing more to do\n if (!toggle) {\n return;\n }\n\n // Get the list to populate\n const list = this.elements.settings.panes.speed.querySelector('ul');\n\n // Empty the menu\n emptyElement(list);\n\n // Create items\n this.options.speed.forEach(speed => {\n controls.createMenuItem.call(this, {\n value: speed,\n list,\n type,\n title: controls.getLabel.call(this, 'speed', speed),\n });\n });\n\n controls.updateSetting.call(this, type, list);\n },\n\n // Check if we need to hide/show the settings menu\n checkMenu() {\n const { tabs } = this.elements.settings;\n const visible = !is.empty(tabs) && Object.values(tabs).some(tab => !tab.hidden);\n\n toggleHidden(this.elements.settings.menu, !visible);\n },\n\n // Show/hide menu\n toggleMenu(event) {\n const { form } = this.elements.settings;\n const button = this.elements.buttons.settings;\n\n // Menu and button are required\n if (!is.element(form) || !is.element(button)) {\n return;\n }\n\n const show = is.boolean(event) ? event : is.element(form) && form.hasAttribute('hidden');\n\n if (is.event(event)) {\n const isMenuItem = is.element(form) && form.contains(event.target);\n const isButton = event.target === this.elements.buttons.settings;\n\n // If the click was inside the form or if the click\n // wasn't the button or menu item and we're trying to\n // show the menu (a doc click shouldn't show the menu)\n if (isMenuItem || (!isMenuItem && !isButton && show)) {\n return;\n }\n\n // Prevent the toggle being caught by the doc listener\n if (isButton) {\n event.stopPropagation();\n }\n }\n\n // Set form and button attributes\n if (is.element(button)) {\n button.setAttribute('aria-expanded', show);\n }\n\n if (is.element(form)) {\n toggleHidden(form, !show);\n toggleClass(this.elements.container, this.config.classNames.menu.open, show);\n\n if (show) {\n form.removeAttribute('tabindex');\n } else {\n form.setAttribute('tabindex', -1);\n }\n }\n },\n\n // Get the natural size of a tab\n getTabSize(tab) {\n const clone = tab.cloneNode(true);\n clone.style.position = 'absolute';\n clone.style.opacity = 0;\n clone.removeAttribute('hidden');\n\n // Prevent input's being unchecked due to the name being identical\n Array.from(clone.querySelectorAll('input[name]')).forEach(input => {\n const name = input.getAttribute('name');\n input.setAttribute('name', `${name}-clone`);\n });\n\n // Append to parent so we get the \"real\" size\n tab.parentNode.appendChild(clone);\n\n // Get the sizes before we remove\n const width = clone.scrollWidth;\n const height = clone.scrollHeight;\n\n // Remove from the DOM\n removeElement(clone);\n\n return {\n width,\n height,\n };\n },\n\n // Toggle Menu\n showTab(target = '') {\n const { menu } = this.elements.settings;\n const pane = document.getElementById(target);\n\n // Nothing to show, bail\n if (!is.element(pane)) {\n return;\n }\n\n // Are we targeting a tab? If not, bail\n const isTab = pane.getAttribute('role') === 'tabpanel';\n if (!isTab) {\n return;\n }\n\n // Hide all other tabs\n // Get other tabs\n const current = menu.querySelector('[role=\"tabpanel\"]:not([hidden])');\n const container = current.parentNode;\n\n // Set other toggles to be expanded false\n Array.from(menu.querySelectorAll(`[aria-controls=\"${current.getAttribute('id')}\"]`)).forEach(toggle => {\n toggle.setAttribute('aria-expanded', false);\n });\n\n // If we can do fancy animations, we'll animate the height/width\n if (support.transitions && !support.reducedMotion) {\n // Set the current width as a base\n container.style.width = `${current.scrollWidth}px`;\n container.style.height = `${current.scrollHeight}px`;\n\n // Get potential sizes\n const size = controls.getTabSize.call(this, pane);\n\n // Restore auto height/width\n const restore = e => {\n // We're only bothered about height and width on the container\n if (e.target !== container || !['width', 'height'].includes(e.propertyName)) {\n return;\n }\n\n // Revert back to auto\n container.style.width = '';\n container.style.height = '';\n\n // Only listen once\n off.call(this, container, transitionEndEvent, restore);\n };\n\n // Listen for the transition finishing and restore auto height/width\n on.call(this, container, transitionEndEvent, restore);\n\n // Set dimensions to target\n container.style.width = `${size.width}px`;\n container.style.height = `${size.height}px`;\n }\n\n // Set attributes on current tab\n toggleHidden(current, true);\n current.setAttribute('tabindex', -1);\n\n // Set attributes on target\n toggleHidden(pane, false);\n\n const tabs = getElements.call(this, `[aria-controls=\"${target}\"]`);\n Array.from(tabs).forEach(tab => {\n tab.setAttribute('aria-expanded', true);\n });\n pane.removeAttribute('tabindex');\n\n // Focus the first item\n pane.querySelectorAll('button:not(:disabled), input:not(:disabled), [tabindex]')[0].focus();\n },\n\n // Build the default HTML\n // TODO: Set order based on order in the config.controls array?\n create(data) {\n // Do nothing if we want no controls\n if (is.empty(this.config.controls)) {\n return null;\n }\n\n // Create the container\n const container = createElement('div', getAttributesFromSelector(this.config.selectors.controls.wrapper));\n\n // Restart button\n if (this.config.controls.includes('restart')) {\n container.appendChild(controls.createButton.call(this, 'restart'));\n }\n\n // Rewind button\n if (this.config.controls.includes('rewind')) {\n container.appendChild(controls.createButton.call(this, 'rewind'));\n }\n\n // Play/Pause button\n if (this.config.controls.includes('play')) {\n container.appendChild(controls.createButton.call(this, 'play'));\n }\n\n // Fast forward button\n if (this.config.controls.includes('fast-forward')) {\n container.appendChild(controls.createButton.call(this, 'fast-forward'));\n }\n\n // Progress\n if (this.config.controls.includes('progress')) {\n const progress = createElement('div', getAttributesFromSelector(this.config.selectors.progress));\n\n // Seek range slider\n const seek = controls.createRange.call(this, 'seek', {\n id: `plyr-seek-${data.id}`,\n });\n progress.appendChild(seek.label);\n progress.appendChild(seek.input);\n\n // Buffer progress\n progress.appendChild(controls.createProgress.call(this, 'buffer'));\n\n // TODO: Add loop display indicator\n\n // Seek tooltip\n if (this.config.tooltips.seek) {\n const tooltip = createElement(\n 'span',\n {\n class: this.config.classNames.tooltip,\n },\n '00:00',\n );\n\n progress.appendChild(tooltip);\n this.elements.display.seekTooltip = tooltip;\n }\n\n this.elements.progress = progress;\n container.appendChild(this.elements.progress);\n }\n\n // Media current time display\n if (this.config.controls.includes('current-time')) {\n container.appendChild(controls.createTime.call(this, 'currentTime'));\n }\n\n // Media duration display\n if (this.config.controls.includes('duration')) {\n container.appendChild(controls.createTime.call(this, 'duration'));\n }\n\n // Toggle mute button\n if (this.config.controls.includes('mute')) {\n container.appendChild(controls.createButton.call(this, 'mute'));\n }\n\n // Volume range control\n if (this.config.controls.includes('volume')) {\n const volume = createElement('div', {\n class: 'plyr__volume',\n });\n\n // Set the attributes\n const attributes = {\n max: 1,\n step: 0.05,\n value: this.config.volume,\n };\n\n // Create the volume range slider\n const range = controls.createRange.call(\n this,\n 'volume',\n extend(attributes, {\n id: `plyr-volume-${data.id}`,\n }),\n );\n volume.appendChild(range.label);\n volume.appendChild(range.input);\n\n this.elements.volume = volume;\n\n container.appendChild(volume);\n }\n\n // Toggle captions button\n if (this.config.controls.includes('captions')) {\n container.appendChild(controls.createButton.call(this, 'captions'));\n }\n\n // Settings button / menu\n if (this.config.controls.includes('settings') && !is.empty(this.config.settings)) {\n const menu = createElement('div', {\n class: 'plyr__menu',\n hidden: '',\n });\n\n menu.appendChild(\n controls.createButton.call(this, 'settings', {\n id: `plyr-settings-toggle-${data.id}`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}`,\n 'aria-expanded': false,\n }),\n );\n\n const form = createElement('form', {\n class: 'plyr__menu__container',\n id: `plyr-settings-${data.id}`,\n hidden: '',\n 'aria-labelled-by': `plyr-settings-toggle-${data.id}`,\n role: 'tablist',\n tabindex: -1,\n });\n\n const inner = createElement('div');\n\n const home = createElement('div', {\n id: `plyr-settings-${data.id}-home`,\n 'aria-labelled-by': `plyr-settings-toggle-${data.id}`,\n role: 'tabpanel',\n });\n\n // Create the tab list\n const tabs = createElement('ul', {\n role: 'tablist',\n });\n\n // Build the tabs\n this.config.settings.forEach(type => {\n const tab = createElement('li', {\n role: 'tab',\n hidden: '',\n });\n\n const button = createElement(\n 'button',\n extend(getAttributesFromSelector(this.config.selectors.buttons.settings), {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--forward`,\n id: `plyr-settings-${data.id}-${type}-tab`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}-${type}`,\n 'aria-expanded': false,\n }),\n i18n.get(type, this.config),\n );\n\n const value = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n // Speed contains HTML entities\n value.innerHTML = data[type];\n\n button.appendChild(value);\n tab.appendChild(button);\n tabs.appendChild(tab);\n\n this.elements.settings.tabs[type] = tab;\n });\n\n home.appendChild(tabs);\n inner.appendChild(home);\n\n // Build the panes\n this.config.settings.forEach(type => {\n const pane = createElement('div', {\n id: `plyr-settings-${data.id}-${type}`,\n hidden: '',\n 'aria-labelled-by': `plyr-settings-${data.id}-${type}-tab`,\n role: 'tabpanel',\n tabindex: -1,\n });\n\n const back = createElement(\n 'button',\n {\n type: 'button',\n class: `${this.config.classNames.control} ${this.config.classNames.control}--back`,\n 'aria-haspopup': true,\n 'aria-controls': `plyr-settings-${data.id}-home`,\n 'aria-expanded': false,\n },\n i18n.get(type, this.config),\n );\n\n pane.appendChild(back);\n\n const options = createElement('ul');\n\n pane.appendChild(options);\n inner.appendChild(pane);\n\n this.elements.settings.panes[type] = pane;\n });\n\n form.appendChild(inner);\n menu.appendChild(form);\n container.appendChild(menu);\n\n this.elements.settings.form = form;\n this.elements.settings.menu = menu;\n }\n\n // Picture in picture button\n if (this.config.controls.includes('pip') && support.pip) {\n container.appendChild(controls.createButton.call(this, 'pip'));\n }\n\n // Airplay button\n if (this.config.controls.includes('airplay') && support.airplay) {\n container.appendChild(controls.createButton.call(this, 'airplay'));\n }\n\n // Toggle fullscreen button\n if (this.config.controls.includes('fullscreen')) {\n container.appendChild(controls.createButton.call(this, 'fullscreen'));\n }\n\n // Larger overlaid play button\n if (this.config.controls.includes('play-large')) {\n this.elements.container.appendChild(controls.createButton.call(this, 'play-large'));\n }\n\n this.elements.controls = container;\n\n if (this.isHTML5) {\n controls.setQualityMenu.call(this, html5.getQualityOptions.call(this));\n }\n\n controls.setSpeedMenu.call(this);\n\n return container;\n },\n\n // Insert controls\n inject() {\n // Sprite\n if (this.config.loadSprite) {\n const icon = controls.getIconUrl.call(this);\n\n // Only load external sprite using AJAX\n if (icon.cors) {\n loadSprite(icon.url, 'sprite-plyr');\n }\n }\n\n // Create a unique ID\n this.id = Math.floor(Math.random() * 10000);\n\n // Null by default\n let container = null;\n this.elements.controls = null;\n\n // Set template properties\n const props = {\n id: this.id,\n seektime: this.config.seekTime,\n title: this.config.title,\n };\n let update = true;\n\n if (is.string(this.config.controls) || is.element(this.config.controls)) {\n // String or HTMLElement passed as the option\n container = this.config.controls;\n } else if (is.function(this.config.controls)) {\n // A custom function to build controls\n // The function can return a HTMLElement or String\n container = this.config.controls.call(this, props);\n } else {\n // Create controls\n container = controls.create.call(this, {\n id: this.id,\n seektime: this.config.seekTime,\n speed: this.speed,\n quality: this.quality,\n captions: captions.getLabel.call(this),\n // TODO: Looping\n // loop: 'None',\n });\n update = false;\n }\n\n // Replace props with their value\n const replace = input => {\n let result = input;\n\n Object.entries(props).forEach(([key, value]) => {\n result = replaceAll(result, `{${key}}`, value);\n });\n\n return result;\n };\n\n // Update markup\n if (update) {\n if (is.string(this.config.controls)) {\n container = replace(container);\n } else if (is.element(container)) {\n container.innerHTML = replace(container.innerHTML);\n }\n }\n\n // Controls container\n let target;\n\n // Inject to custom location\n if (is.string(this.config.selectors.controls.container)) {\n target = document.querySelector(this.config.selectors.controls.container);\n }\n\n // Inject into the container by default\n if (!is.element(target)) {\n target = this.elements.container;\n }\n\n // Inject controls HTML\n if (is.element(container)) {\n target.appendChild(container);\n } else if (container) {\n target.insertAdjacentHTML('beforeend', container);\n }\n\n // Find the elements if need be\n if (!is.element(this.elements.controls)) {\n controls.findElements.call(this);\n }\n\n // Edge sometimes doesn't finish the paint so force a redraw\n if (window.navigator.userAgent.includes('Edge')) {\n repaint(target);\n }\n\n // Setup tooltips\n if (this.config.tooltips.controls) {\n const { classNames, selectors } = this.config;\n const selector = `${selectors.controls.wrapper} ${selectors.labels} .${classNames.hidden}`;\n const labels = getElements.call(this, selector);\n\n Array.from(labels).forEach(label => {\n toggleClass(label, this.config.classNames.hidden, false);\n toggleClass(label, this.config.classNames.tooltip, true);\n label.setAttribute('role', 'tooltip');\n });\n }\n },\n};\n\nexport default controls;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text') {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) {\n return;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n } catch (e) {\n resolve(request.responseText);\n }\n } else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.statusText);\n });\n\n request.open('GET', url, true);\n\n // Set the required response type\n request.responseType = responseType;\n\n request.send();\n } catch (e) {\n reject(e);\n }\n });\n}\n","// ==========================================================================\n// URL utils\n// ==========================================================================\n\nimport is from './is';\n\n/**\n * Parse a string to a URL object\n * @param {string} input - the URL to be parsed\n * @param {boolean} safe - failsafe parsing\n */\nexport function parseUrl(input, safe = true) {\n let url = input;\n\n if (safe) {\n const parser = document.createElement('a');\n parser.href = url;\n url = parser.href;\n }\n\n try {\n return new URL(url);\n } catch (e) {\n return null;\n }\n}\n\n// Convert object to URLSearchParams\nexport function buildUrlParams(input) {\n const params = new URLSearchParams();\n\n if (is.object(input)) {\n Object.entries(input).forEach(([key, value]) => {\n params.set(key, value);\n });\n }\n\n return params;\n}\n","// ==========================================================================\n// Plyr Captions\n// TODO: Create as class\n// ==========================================================================\n\nimport controls from './controls';\nimport i18n from './i18n';\nimport support from './support';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n insertAfter,\n removeElement,\n toggleClass,\n toggleState,\n} from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport fetch from './utils/fetch';\nimport is from './utils/is';\nimport { getHTML } from './utils/strings';\nimport { parseUrl } from './utils/urls';\n\nconst captions = {\n // Setup captions\n setup() {\n // Requires UI support\n if (!this.supported.ui) {\n return;\n }\n\n // Only Vimeo and HTML5 video supported at this point\n if (!this.isVideo || this.isYouTube || (this.isHTML5 && !support.textTracks)) {\n // Clear menu and hide\n if (\n is.array(this.config.controls) &&\n this.config.controls.includes('settings') &&\n this.config.settings.includes('captions')\n ) {\n controls.setCaptionsMenu.call(this);\n }\n\n return;\n }\n\n // Inject the container\n if (!is.element(this.elements.captions)) {\n this.elements.captions = createElement('div', getAttributesFromSelector(this.config.selectors.captions));\n\n insertAfter(this.elements.captions, this.elements.wrapper);\n }\n\n // Fix IE captions if CORS is used\n // Fetch captions and inject as blobs instead (data URIs not supported!)\n if (browser.isIE && window.URL) {\n const elements = this.media.querySelectorAll('track');\n\n Array.from(elements).forEach(track => {\n const src = track.getAttribute('src');\n const url = parseUrl(src);\n\n if (\n url !== null &&\n url.hostname !== window.location.href.hostname &&\n ['http:', 'https:'].includes(url.protocol)\n ) {\n fetch(src, 'blob')\n .then(blob => {\n track.setAttribute('src', window.URL.createObjectURL(blob));\n })\n .catch(() => {\n removeElement(track);\n });\n }\n });\n }\n\n // Get and set initial data\n // The \"preferred\" options are not realized unless / until the wanted language has a match\n // * languages: Array of user's browser languages.\n // * language: The language preferred by user settings or config\n // * active: The state preferred by user settings or config\n // * toggled: The real captions state\n\n const languages = dedupe(\n Array.from(navigator.languages || navigator.userLanguage).map(language => language.split('-')[0]),\n );\n\n let language = (this.storage.get('language') || this.config.captions.language || 'auto').toLowerCase();\n\n // Use first browser language when language is 'auto'\n if (language === 'auto') {\n [language] = languages;\n }\n\n let active = this.storage.get('captions');\n if (!is.boolean(active)) {\n ({ active } = this.config.captions);\n }\n\n Object.assign(this.captions, {\n toggled: false,\n active,\n language,\n languages,\n });\n\n // Watch changes to textTracks and update captions menu\n if (this.isHTML5) {\n const trackEvents = this.config.captions.update ? 'addtrack removetrack' : 'removetrack';\n on.call(this, this.media.textTracks, trackEvents, captions.update.bind(this));\n }\n\n // Update available languages in list next tick (the event must not be triggered before the listeners)\n setTimeout(captions.update.bind(this), 0);\n },\n\n // Update available language options in settings based on tracks\n update() {\n const tracks = captions.getTracks.call(this, true);\n // Get the wanted language\n const { active, language, meta, currentTrackNode } = this.captions;\n const languageExists = Boolean(tracks.find(track => track.language === language));\n\n // Handle tracks (add event listener and \"pseudo\"-default)\n if (this.isHTML5 && this.isVideo) {\n tracks.filter(track => !meta.get(track)).forEach(track => {\n this.debug.log('Track added', track);\n // Attempt to store if the original dom element was \"default\"\n meta.set(track, {\n default: track.mode === 'showing',\n });\n\n // Turn off native caption rendering to avoid double captions\n track.mode = 'hidden';\n\n // Add event listener for cue changes\n on.call(this, track, 'cuechange', () => captions.updateCues.call(this));\n });\n }\n\n // Update language first time it matches, or if the previous matching track was removed\n if ((languageExists && this.language !== language) || !tracks.includes(currentTrackNode)) {\n captions.setLanguage.call(this, language);\n captions.toggle.call(this, active && languageExists);\n }\n\n // Enable or disable captions based on track length\n toggleClass(this.elements.container, this.config.classNames.captions.enabled, !is.empty(tracks));\n\n // Update available languages in list\n if ((this.config.controls || []).includes('settings') && this.config.settings.includes('captions')) {\n controls.setCaptionsMenu.call(this);\n }\n },\n\n // Toggle captions display\n // Used internally for the toggleCaptions method, with the passive option forced to false\n toggle(input, passive = true) {\n // If there's no full support\n if (!this.supported.ui) {\n return;\n }\n\n const { toggled } = this.captions; // Current state\n const activeClass = this.config.classNames.captions.active;\n\n // Get the next state\n // If the method is called without parameter, toggle based on current value\n const active = is.nullOrUndefined(input) ? !toggled : input;\n\n // Update state and trigger event\n if (active !== toggled) {\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.active = active;\n this.storage.set({ captions: active });\n }\n\n // Force language if the call isn't passive and there is no matching language to toggle to\n if (!this.language && active && !passive) {\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [this.captions.language, ...this.captions.languages], true);\n\n // Override user preferences to avoid switching languages if a matching track is added\n this.captions.language = track.language;\n\n // Set caption, but don't store in localStorage as user preference\n captions.set.call(this, tracks.indexOf(track));\n return;\n }\n\n // Toggle state\n toggleState(this.elements.buttons.captions, active);\n\n // Add class hook\n toggleClass(this.elements.container, activeClass, active);\n\n this.captions.toggled = active;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // Trigger event (not used internally)\n triggerEvent.call(this, this.media, active ? 'captionsenabled' : 'captionsdisabled');\n }\n },\n\n // Set captions by track index\n // Used internally for the currentTrack setter with the passive option forced to false\n set(index, passive = true) {\n const tracks = captions.getTracks.call(this);\n\n // Disable captions if setting to -1\n if (index === -1) {\n captions.toggle.call(this, false, passive);\n return;\n }\n\n if (!is.number(index)) {\n this.debug.warn('Invalid caption argument', index);\n return;\n }\n\n if (!(index in tracks)) {\n this.debug.warn('Track not found', index);\n return;\n }\n\n if (this.captions.currentTrack !== index) {\n this.captions.currentTrack = index;\n const track = tracks[index];\n const { language } = track || {};\n\n // Store reference to node for invalidation on remove\n this.captions.currentTrackNode = track;\n\n // Update settings menu\n controls.updateSetting.call(this, 'captions');\n\n // When passive, don't override user preferences\n if (!passive) {\n this.captions.language = language;\n this.storage.set({ language });\n }\n\n // Handle Vimeo captions\n if (this.isVimeo) {\n this.embed.enableTextTrack(language);\n }\n\n // Trigger event\n triggerEvent.call(this, this.media, 'languagechange');\n }\n\n // Show captions\n captions.toggle.call(this, true, passive);\n\n if (this.isHTML5 && this.isVideo) {\n // If we change the active track while a cue is already displayed we need to update it\n captions.updateCues.call(this);\n }\n },\n\n // Set captions by language\n // Used internally for the language setter with the passive option forced to false\n setLanguage(input, passive = true) {\n if (!is.string(input)) {\n this.debug.warn('Invalid language argument', input);\n return;\n }\n // Normalize\n const language = input.toLowerCase();\n this.captions.language = language;\n\n // Set currentTrack\n const tracks = captions.getTracks.call(this);\n const track = captions.findTrack.call(this, [language]);\n captions.set.call(this, tracks.indexOf(track), passive);\n },\n\n // Get current valid caption tracks\n // If update is false it will also ignore tracks without metadata\n // This is used to \"freeze\" the language options when captions.update is false\n getTracks(update = false) {\n // Handle media or textTracks missing or null\n const tracks = Array.from((this.media || {}).textTracks || []);\n // For HTML5, use cache instead of current tracks when it exists (if captions.update is false)\n // Filter out removed tracks and tracks that aren't captions/subtitles (for example metadata)\n return tracks\n .filter(track => !this.isHTML5 || update || this.captions.meta.has(track))\n .filter(track => ['captions', 'subtitles'].includes(track.kind));\n },\n\n // Match tracks based on languages and get the first\n findTrack(languages, force = false) {\n const tracks = captions.getTracks.call(this);\n const sortIsDefault = track => Number((this.captions.meta.get(track) || {}).default);\n const sorted = Array.from(tracks).sort((a, b) => sortIsDefault(b) - sortIsDefault(a));\n let track;\n languages.every(language => {\n track = sorted.find(track => track.language === language);\n return !track; // Break iteration if there is a match\n });\n // If no match is found but is required, get first\n return track || (force ? sorted[0] : undefined);\n },\n\n // Get the current track\n getCurrentTrack() {\n return captions.getTracks.call(this)[this.currentTrack];\n },\n\n // Get UI label for track\n getLabel(track) {\n let currentTrack = track;\n\n if (!is.track(currentTrack) && support.textTracks && this.captions.toggled) {\n currentTrack = captions.getCurrentTrack.call(this);\n }\n\n if (is.track(currentTrack)) {\n if (!is.empty(currentTrack.label)) {\n return currentTrack.label;\n }\n\n if (!is.empty(currentTrack.language)) {\n return track.language.toUpperCase();\n }\n\n return i18n.get('enabled', this.config);\n }\n\n return i18n.get('disabled', this.config);\n },\n\n // Update captions using current track's active cues\n // Also optional array argument in case there isn't any track (ex: vimeo)\n updateCues(input) {\n // Requires UI\n if (!this.supported.ui) {\n return;\n }\n\n if (!is.element(this.elements.captions)) {\n this.debug.warn('No captions element to render to');\n return;\n }\n\n // Only accept array or empty input\n if (!is.nullOrUndefined(input) && !Array.isArray(input)) {\n this.debug.warn('updateCues: Invalid input', input);\n return;\n }\n\n let cues = input;\n\n // Get cues from track\n if (!cues) {\n const track = captions.getCurrentTrack.call(this);\n cues = Array.from((track || {}).activeCues || [])\n .map(cue => cue.getCueAsHTML())\n .map(getHTML);\n }\n\n // Set new caption text\n const content = cues.map(cueText => cueText.trim()).join('\\n');\n const changed = content !== this.elements.captions.innerHTML;\n\n if (changed) {\n // Empty the container and create a new child element\n emptyElement(this.elements.captions);\n const caption = createElement('span', getAttributesFromSelector(this.config.selectors.caption));\n caption.innerHTML = content;\n this.elements.captions.appendChild(caption);\n\n // Trigger event\n triggerEvent.call(this, this.media, 'cuechange');\n }\n },\n};\n\nexport default captions;\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Aspect ratio (for embeds)\n ratio: '16:9',\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Reset to start when playback ended\n resetOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.3.12/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 576,\n options: [\n 4320,\n 2880,\n 2160,\n 1440,\n 1080,\n 720,\n 576,\n 480,\n 360,\n 240,\n 'default', // YouTube's \"auto\"\n ],\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n options: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: 'auto',\n // Listen to new tracks added after Plyr is initialized.\n // This is needed for streaming captions, but may result in unselectable options\n update: false,\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback for vintage browsers\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n // 'restart',\n // 'rewind',\n 'play',\n // 'fast-forward',\n 'progress',\n 'current-time',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n 'fullscreen',\n ],\n settings: ['captions', 'quality', 'speed'],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime}s',\n play: 'Play',\n pause: 'Pause',\n fastForward: 'Forward {seektime}s',\n seek: 'Seek',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n speed: 'Speed',\n normal: 'Normal',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n disabled: 'Disabled',\n enabled: 'Enabled',\n advertisement: 'Ad',\n qualityBadge: {\n 2160: '4K',\n 1440: 'HD',\n 1080: 'HD',\n 720: 'HD',\n 576: 'SD',\n 480: 'SD',\n },\n },\n\n // URLs\n urls: {\n vimeo: {\n sdk: 'https://player.vimeo.com/api/player.js',\n iframe: 'https://player.vimeo.com/video/{0}?{1}',\n api: 'https://vimeo.com/api/v2/video/{0}.json',\n },\n youtube: {\n sdk: 'https://www.youtube.com/iframe_api',\n api:\n 'https://www.googleapis.com/youtube/v3/videos?id={0}&key={1}&fields=items(snippet(title))&part=snippet',\n },\n googleIMA: {\n sdk: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n fastForward: null,\n mute: null,\n volume: null,\n captions: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n 'qualitychange',\n 'qualityrequested',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adscontentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n fastForward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress__buffer',\n loop: '.plyr__progress__loop', // Used later\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n caption: '.plyr__caption',\n menu: {\n quality: '.js-plyr__menu__list--quality',\n },\n },\n\n // Class hooks added to the player in different states\n classNames: {\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n embedContainer: 'plyr__video-embed__container',\n poster: 'plyr__poster',\n posterEnabled: 'plyr__poster-enabled',\n ads: 'plyr__ads',\n control: 'plyr__control',\n playing: 'plyr--playing',\n paused: 'plyr--paused',\n stopped: 'plyr--stopped',\n loading: 'plyr--loading',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isIos: 'plyr--is-ios',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n tabFocus: 'plyr__tab-focus',\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n },\n },\n\n // API keys\n keys: {\n google: null,\n },\n\n // Advertisements plugin\n // Register for an account here: http://vi.ai/publisher-video-monetization/?aid=plyrio\n ads: {\n enabled: false,\n publisherId: '',\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\n/**\n * Get provider by URL\n * @param {string} url\n */\nexport function getProviderByUrl(url) {\n // YouTube\n if (/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{0,9}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n}\n\nexport default { providers, types };\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nconst noop = () => {};\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n get warn() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n get error() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API#prefixing\n// ==========================================================================\n\nimport browser from './utils/browser';\nimport { hasClass, toggleClass, toggleState, trapFocus } from './utils/elements';\nimport { on, triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nfunction onChange() {\n if (!this.enabled) {\n return;\n }\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (is.element(button)) {\n toggleState(button, this.active);\n }\n\n // Trigger an event\n triggerEvent.call(this.player, this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n\n // Trap focus in container\n if (!browser.isIos) {\n trapFocus.call(this.player, this.target, this.active);\n }\n}\n\nfunction toggleFallback(toggle = false) {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX || 0,\n y: window.scrollY || 0,\n };\n } else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Toggle button and fire events\n onChange.call(this);\n}\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n this.property = Fullscreen.property;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n on.call(\n this.player,\n document,\n this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`,\n () => {\n // TODO: Filter for target??\n onChange.call(this);\n },\n );\n\n // Fullscreen toggle on double click\n on.call(this.player, this.player.elements.container, 'dblclick', event => {\n // Ignore double click in controls\n if (is.element(this.player.elements.controls) && this.player.elements.controls.contains(event.target)) {\n return;\n }\n\n this.toggle();\n });\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get native() {\n return !!(\n document.fullscreenEnabled ||\n document.webkitFullscreenEnabled ||\n document.mozFullScreenEnabled ||\n document.msFullscreenEnabled\n );\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (is.function(document.exitFullscreen)) {\n return '';\n }\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = ['webkit', 'moz', 'ms'];\n\n prefixes.some(pre => {\n if (is.function(document[`${pre}ExitFullscreen`]) || is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n static get property() {\n return this.prefix === 'moz' ? 'FullScreen' : 'Fullscreen';\n }\n\n // Determine if fullscreen is enabled\n get enabled() {\n return (\n (Fullscreen.native || this.player.config.fullscreen.fallback) &&\n this.player.config.fullscreen.enabled &&\n this.player.supported.ui &&\n this.player.isVideo\n );\n }\n\n // Get active state\n get active() {\n if (!this.enabled) {\n return false;\n }\n\n // Fallback using classname\n if (!Fullscreen.native) {\n return hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}${this.property}Element`];\n\n return element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative\n ? this.player.media\n : this.player.elements.container;\n }\n\n // Update UI\n update() {\n if (this.enabled) {\n this.player.debug.log(`${Fullscreen.native ? 'Native' : 'Fallback'} fullscreen enabled`);\n } else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.enabled);\n }\n\n // Make an element fullscreen\n enter() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.playing) {\n this.target.webkitEnterFullscreen();\n }\n } else if (!Fullscreen.native) {\n toggleFallback.call(this, true);\n } else if (!this.prefix) {\n this.target.requestFullscreen();\n } else if (!is.empty(this.prefix)) {\n this.target[`${this.prefix}Request${this.property}`]();\n }\n }\n\n // Bail from fullscreen\n exit() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n this.target.webkitExitFullscreen();\n this.player.play();\n } else if (!Fullscreen.native) {\n toggleFallback.call(this, false);\n } else if (!this.prefix) {\n (document.cancelFullScreen || document.exitFullscreen).call(document);\n } else if (!is.empty(this.prefix)) {\n const action = this.prefix === 'moz' ? 'Cancel' : 'Exit';\n document[`${this.prefix}${action}${this.property}`]();\n }\n }\n\n // Toggle state\n toggle() {\n if (!this.active) {\n this.enter();\n } else {\n this.exit();\n }\n }\n}\n\nexport default Fullscreen;\n","// ==========================================================================\n// Load image avoiding xhr/fetch CORS issues\n// Server status can't be obtained this way unfortunately, so this uses \"naturalWidth\" to determine if the image has loaded\n// By default it checks if it is at least 1px, but you can add a second argument to change this\n// ==========================================================================\n\nexport default function loadImage(src, minWidth = 1) {\n return new Promise((resolve, reject) => {\n const image = new Image();\n\n const handler = () => {\n delete image.onload;\n delete image.onerror;\n (image.naturalWidth >= minWidth ? resolve : reject)(image);\n };\n\n Object.assign(image, { onload: handler, onerror: handler, src });\n });\n}\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport captions from './captions';\nimport controls from './controls';\nimport i18n from './i18n';\nimport support from './support';\nimport browser from './utils/browser';\nimport { getElement, toggleClass, toggleState } from './utils/elements';\nimport { ready, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport loadImage from './utils/loadImage';\n\nconst ui = {\n addStyleHook() {\n toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n } else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling?\n this.listeners.media();\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n this.listeners.controls();\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Setup captions for HTML5\n if (this.isHTML5) {\n captions.setup.call(this);\n }\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality setting\n this.quality = null;\n\n // Reset volume display\n controls.updateVolume.call(this);\n\n // Reset time display\n controls.timeUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Check for picture-in-picture support\n toggleClass(\n this.elements.container,\n this.config.classNames.pip.supported,\n support.pip && this.isHTML5 && this.isVideo,\n );\n\n // Check for airplay support\n toggleClass(this.elements.container, this.config.classNames.airplay.supported, support.airplay && this.isHTML5);\n\n // Add iOS class\n toggleClass(this.elements.container, this.config.classNames.isIos, browser.isIos);\n\n // Add touch class\n toggleClass(this.elements.container, this.config.classNames.isTouch, this.touch);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n setTimeout(() => {\n triggerEvent.call(this, this.media, 'ready');\n }, 0);\n\n // Set the title\n ui.setTitle.call(this);\n\n // Assure the poster image is set, if the property was added before the element was created\n if (this.poster) {\n ui.setPoster.call(this, this.poster, false).catch(() => {});\n }\n\n // Manually set the duration if user has overridden it.\n // The event listeners for it doesn't get called if preload is disabled (#701)\n if (this.config.duration) {\n controls.durationUpdate.call(this);\n }\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = i18n.get('play', this.config);\n\n // If there's a media title set, use that for the label\n if (is.string(this.config.title) && !is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n\n // Set container label\n this.elements.container.setAttribute('aria-label', this.config.title);\n }\n\n // If there's a play button, set label\n if (is.nodeList(this.elements.buttons.play)) {\n Array.from(this.elements.buttons.play).forEach(button => {\n button.setAttribute('aria-label', label);\n });\n }\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = getElement.call(this, 'iframe');\n\n if (!is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !is.empty(this.config.title) ? this.config.title : 'video';\n const format = i18n.get('frameTitle', this.config);\n\n iframe.setAttribute('title', format.replace('{title}', title));\n }\n },\n\n // Toggle poster\n togglePoster(enable) {\n toggleClass(this.elements.container, this.config.classNames.posterEnabled, enable);\n },\n\n // Set the poster image (async)\n // Used internally for the poster setter, with the passive option forced to false\n setPoster(poster, passive = true) {\n // Don't override if call is passive\n if (passive && this.poster) {\n return Promise.reject(new Error('Poster already set'));\n }\n\n // Set property synchronously to respect the call order\n this.media.setAttribute('poster', poster);\n\n // Wait until ui is ready\n return (\n ready\n .call(this)\n // Load image\n .then(() => loadImage(poster))\n .catch(err => {\n // Hide poster on error unless it's been set by another call\n if (poster === this.poster) {\n ui.togglePoster.call(this, false);\n }\n // Rethrow\n throw err;\n })\n .then(() => {\n // Prevent race conditions\n if (poster !== this.poster) {\n throw new Error('setPoster cancelled by later call to setPoster');\n }\n })\n .then(() => {\n Object.assign(this.elements.poster.style, {\n backgroundImage: `url('${poster}')`,\n // Reset backgroundSize as well (since it can be set to \"cover\" for padded thumbnails for youtube)\n backgroundSize: '',\n });\n ui.togglePoster.call(this, true);\n return poster;\n })\n );\n },\n\n // Check playing state\n checkPlaying(event) {\n // Class hooks\n toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n toggleClass(this.elements.container, this.config.classNames.paused, this.paused);\n toggleClass(this.elements.container, this.config.classNames.stopped, this.stopped);\n\n // Set ARIA state\n toggleState(this.elements.buttons.play, this.playing);\n\n // Only update controls on non timeupdate events\n if (is.event(event) && event.type === 'timeupdate') {\n return;\n }\n\n // Toggle controls\n ui.toggleControls.call(this);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = ['stalled', 'waiting'].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(() => {\n // Update progress bar loading class state\n toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Update controls visibility\n ui.toggleControls.call(this);\n }, this.loading ? 250 : 0);\n },\n\n // Toggle controls based on state and `force` argument\n toggleControls(force) {\n const { controls } = this.elements;\n\n if (controls && this.config.hideControls) {\n // Show controls if force, loading, paused, or button interaction, otherwise hide\n this.toggleControls(Boolean(force || this.loading || this.paused || controls.pressed || controls.hover));\n }\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport browser from './utils/browser';\nimport { getElement, getElements, getFocusElement, matches, toggleClass, toggleHidden } from './utils/elements';\nimport { on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const code = event.keyCode ? event.keyCode : event.which;\n const pressed = event.type === 'keydown';\n const repeat = pressed && code === this.lastKey;\n\n // Bail if a modifier key is set\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the keycode for whatever reason\n if (!is.number(code)) {\n return;\n }\n\n // Seek by the number keys\n const seekByKey = () => {\n // Divide the max duration into 10th's and times by the number value\n this.player.currentTime = this.player.duration / 10 * (code - 48);\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Which keycodes should we prevent default\n const preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79];\n\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = getFocusElement();\n if (\n is.element(focused) &&\n (focused !== this.player.elements.inputs.seek &&\n matches(focused, this.player.config.selectors.editable))\n ) {\n return;\n }\n\n // If the code is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(code)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (code) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n // 0-9\n if (!repeat) {\n seekByKey();\n }\n break;\n\n case 32:\n case 75:\n // Space and K key\n if (!repeat) {\n this.player.togglePlay();\n }\n break;\n\n case 38:\n // Arrow up\n this.player.increaseVolume(0.1);\n break;\n\n case 40:\n // Arrow down\n this.player.decreaseVolume(0.1);\n break;\n\n case 77:\n // M key\n if (!repeat) {\n this.player.muted = !this.player.muted;\n }\n break;\n\n case 39:\n // Arrow forward\n this.player.forward();\n break;\n\n case 37:\n // Arrow back\n this.player.rewind();\n break;\n\n case 70:\n // F key\n this.player.fullscreen.toggle();\n break;\n\n case 67:\n // C key\n if (!repeat) {\n this.player.toggleCaptions();\n }\n break;\n\n case 76:\n // L key\n this.player.loop = !this.player.loop;\n break;\n\n /* case 73:\n this.setLoop('start');\n break;\n\n case 76:\n this.setLoop();\n break;\n\n case 79:\n this.setLoop('end');\n break; */\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (!this.player.fullscreen.enabled && this.player.fullscreen.active && code === 27) {\n this.player.fullscreen.toggle();\n }\n\n // Store last code for next cycle\n this.lastKey = code;\n } else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch() {\n this.player.touch = true;\n\n // Add touch class\n toggleClass(this.player.elements.container, this.player.config.classNames.isTouch, true);\n }\n\n // Global window & document listeners\n global(toggle = true) {\n // Keyboard shortcuts\n if (this.player.config.keyboard.global) {\n toggleListener.call(this.player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(this.player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(this.player, document.body, 'touchstart', this.firstTouch);\n }\n\n // Container listeners\n container() {\n // Keyboard shortcuts\n if (!this.player.config.keyboard.global && this.player.config.keyboard.focused) {\n on.call(this.player, this.player.elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Detect tab focus\n // Remove class on blur/focusout\n on.call(this.player, this.player.elements.container, 'focusout', event => {\n toggleClass(event.target, this.player.config.classNames.tabFocus, false);\n });\n // Add classname to tabbed elements\n on.call(this.player, this.player.elements.container, 'keydown', event => {\n if (event.keyCode !== 9) {\n return;\n }\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n setTimeout(() => {\n toggleClass(getFocusElement(), this.player.config.classNames.tabFocus, true);\n }, 0);\n });\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n this.player,\n this.player.elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n event => {\n const { controls } = this.player.elements;\n\n // Remove button states for fullscreen\n if (event.type === 'enterfullscreen') {\n controls.pressed = false;\n controls.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(this.player, true);\n // Use longer timeout for touch devices\n delay = this.player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(this.player.timers.controls);\n // Timer to prevent flicker when seeking\n this.player.timers.controls = setTimeout(() => ui.toggleControls.call(this.player, false), delay);\n },\n );\n }\n\n // Listen for media events\n media() {\n // Time change on media\n on.call(this.player, this.player.media, 'timeupdate seeking seeked', event =>\n controls.timeUpdate.call(this.player, event),\n );\n\n // Display duration\n on.call(this.player, this.player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(this.player, event),\n );\n\n // Check for audio tracks on load\n // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point\n on.call(this.player, this.player.media, 'canplay', () => {\n toggleHidden(this.player.elements.volume, !this.player.hasAudio);\n toggleHidden(this.player.elements.buttons.mute, !this.player.hasAudio);\n });\n\n // Handle the media finishing\n on.call(this.player, this.player.media, 'ended', () => {\n // Show poster on end\n if (this.player.isHTML5 && this.player.isVideo && this.player.config.resetOnEnd) {\n // Restart\n this.player.restart();\n }\n });\n\n // Check for buffer progress\n on.call(this.player, this.player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(this.player, event),\n );\n\n // Handle volume changes\n on.call(this.player, this.player.media, 'volumechange', event =>\n controls.updateVolume.call(this.player, event),\n );\n\n // Handle play/pause\n on.call(this.player, this.player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(this.player, event),\n );\n\n // Loading state\n on.call(this.player, this.player.media, 'waiting canplay seeked playing', event =>\n ui.checkLoading.call(this.player, event),\n );\n\n // If autoplay, then load advertisement if required\n // TODO: Show some sort of loading state while the ad manager loads else there's a delay before ad shows\n on.call(this.player, this.player.media, 'playing', () => {\n if (!this.player.ads) {\n return;\n }\n\n // If ads are enabled, wait for them first\n if (this.player.ads.enabled && !this.player.ads.initialized) {\n // Wait for manager response\n this.player.ads.managerPromise.then(() => this.player.ads.play()).catch(() => this.player.play());\n }\n });\n\n // Click video\n if (this.player.supported.ui && this.player.config.clickToPlay && !this.player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(this.player, `.${this.player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause ore restart\n on.call(this.player, wrapper, 'click', () => {\n // Touch devices will just show controls (if we're hiding controls)\n if (this.player.config.hideControls && this.player.touch && !this.player.paused) {\n return;\n }\n\n if (this.player.paused) {\n this.player.play();\n } else if (this.player.ended) {\n this.player.restart();\n this.player.play();\n } else {\n this.player.pause();\n }\n });\n }\n\n // Disable right click\n if (this.player.supported.ui && this.player.config.disableContextMenu) {\n on.call(\n this.player,\n this.player.elements.wrapper,\n 'contextmenu',\n event => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(this.player, this.player.media, 'volumechange', () => {\n // Save to storage\n this.player.storage.set({ volume: this.player.volume, muted: this.player.muted });\n });\n\n // Speed change\n on.call(this.player, this.player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(this.player, 'speed');\n\n // Save to storage\n this.player.storage.set({ speed: this.player.speed });\n });\n\n // Quality request\n on.call(this.player, this.player.media, 'qualityrequested', event => {\n // Save to storage\n this.player.storage.set({ quality: event.detail.quality });\n });\n\n // Quality change\n on.call(this.player, this.player.media, 'qualitychange', event => {\n // Update UI\n controls.updateSetting.call(this.player, 'quality', null, event.detail.quality);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = this.player.config.events.concat(['keyup', 'keydown']).join(' ');\n on.call(this.player, this.player.media, proxyEvents, event => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = this.player.media.error;\n }\n\n triggerEvent.call(this.player, this.player.elements.container, event.type, true, detail);\n });\n }\n\n // Listen for control events\n controls() {\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Run default and custom handlers\n const proxy = (event, defaultHandler, customHandlerKey) => {\n const customHandler = this.player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(this.player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned && is.function(defaultHandler)) {\n defaultHandler.call(this.player, event);\n }\n };\n\n // Trigger custom and default handlers\n const bind = (element, type, defaultHandler, customHandlerKey, passive = true) => {\n const customHandler = this.player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n this.player,\n element,\n type,\n event => proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n };\n\n // Play/pause toggle\n Array.from(this.player.elements.buttons.play).forEach(button => {\n bind(button, 'click', this.player.togglePlay, 'play');\n });\n\n // Pause\n bind(this.player.elements.buttons.restart, 'click', this.player.restart, 'restart');\n\n // Rewind\n bind(this.player.elements.buttons.rewind, 'click', this.player.rewind, 'rewind');\n\n // Rewind\n bind(this.player.elements.buttons.fastForward, 'click', this.player.forward, 'fastForward');\n\n // Mute toggle\n bind(\n this.player.elements.buttons.mute,\n 'click',\n () => {\n this.player.muted = !this.player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n bind(this.player.elements.buttons.captions, 'click', () => this.player.toggleCaptions());\n\n // Fullscreen toggle\n bind(\n this.player.elements.buttons.fullscreen,\n 'click',\n () => {\n this.player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n bind(\n this.player.elements.buttons.pip,\n 'click',\n () => {\n this.player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n bind(this.player.elements.buttons.airplay, 'click', this.player.airplay, 'airplay');\n\n // Settings menu\n bind(this.player.elements.buttons.settings, 'click', event => {\n controls.toggleMenu.call(this.player, event);\n });\n\n // Settings menu\n bind(this.player.elements.settings.form, 'click', event => {\n event.stopPropagation();\n\n // Go back to home tab on click\n const showHomeTab = () => {\n const id = `plyr-settings-${this.player.id}-home`;\n controls.showTab.call(this.player, id);\n };\n\n // Settings menu items - use event delegation as items are added/removed\n if (matches(event.target, this.player.config.selectors.inputs.language)) {\n proxy(\n event,\n () => {\n this.player.currentTrack = Number(event.target.value);\n showHomeTab();\n },\n 'language',\n );\n } else if (matches(event.target, this.player.config.selectors.inputs.quality)) {\n proxy(\n event,\n () => {\n this.player.quality = event.target.value;\n showHomeTab();\n },\n 'quality',\n );\n } else if (matches(event.target, this.player.config.selectors.inputs.speed)) {\n proxy(\n event,\n () => {\n this.player.speed = parseFloat(event.target.value);\n showHomeTab();\n },\n 'speed',\n );\n } else {\n const tab = event.target;\n controls.showTab.call(this.player, tab.getAttribute('aria-controls'));\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n bind(this.player.elements.inputs.seek, 'mousedown mousemove', event => {\n const clientRect = this.player.elements.progress.getBoundingClientRect();\n const percent = 100 / clientRect.width * (event.pageX - clientRect.left);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n bind(this.player.elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', event => {\n const seek = event.currentTarget;\n\n const code = event.keyCode ? event.keyCode : event.which;\n const eventType = event.type;\n\n if ((eventType === 'keydown' || eventType === 'keyup') && (code !== 39 && code !== 37)) {\n return;\n }\n // Was playing before?\n const play = seek.hasAttribute('play-on-seeked');\n\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute('play-on-seeked');\n this.player.play();\n } else if (!done && this.player.playing) {\n seek.setAttribute('play-on-seeked', '');\n this.player.pause();\n }\n });\n\n // Seek\n bind(\n this.player.elements.inputs.seek,\n inputEvent,\n event => {\n const seek = event.currentTarget;\n\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n this.player.currentTime = seekTo / seek.max * this.player.duration;\n },\n 'seek',\n );\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (this.player.config.toggleInvert && !is.element(this.player.elements.display.duration)) {\n bind(this.player.elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (this.player.currentTime === 0) {\n return;\n }\n\n this.player.config.invertTime = !this.player.config.invertTime;\n\n controls.timeUpdate.call(this.player);\n });\n }\n\n // Volume\n bind(\n this.player.elements.inputs.volume,\n inputEvent,\n event => {\n this.player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Polyfill for lower fill in for webkit\n if (browser.isWebkit) {\n Array.from(getElements.call(this.player, 'input[type=\"range\"]')).forEach(element => {\n bind(element, 'input', event => controls.updateRangeFill.call(this.player, event.target));\n });\n }\n\n // Seek tooltip\n bind(this.player.elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(this.player, event),\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n bind(this.player.elements.controls, 'mouseenter mouseleave', event => {\n this.player.elements.controls.hover = !this.player.touch && event.type === 'mouseenter';\n });\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n bind(this.player.elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => {\n this.player.elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Focus in/out on controls\n bind(this.player.elements.controls, 'focusin focusout', event => {\n const { config, elements, timers } = this.player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, event.type === 'focusin');\n\n // Toggle\n ui.toggleControls.call(this.player, event.type === 'focusin');\n\n // If focusin, hide again after delay\n if (event.type === 'focusin') {\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for keyboard users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n // Hide\n timers.controls = setTimeout(() => ui.toggleControls.call(this.player, false), delay);\n }\n });\n\n // Mouse wheel for volume\n bind(\n this.player.elements.inputs.volume,\n 'wheel',\n event => {\n // Detect \"natural\" scroll - suppored on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n const step = 1 / 50;\n let direction = 0;\n\n // Scroll down (or up on natural) to decrease\n if (event.deltaY < 0 || event.deltaX > 0) {\n if (inverted) {\n this.player.decreaseVolume(step);\n direction = -1;\n } else {\n this.player.increaseVolume(step);\n direction = 1;\n }\n }\n\n // Scroll up (or down on natural) to increase\n if (event.deltaY > 0 || event.deltaX < 0) {\n if (inverted) {\n this.player.increaseVolume(step);\n direction = 1;\n } else {\n this.player.decreaseVolume(step);\n direction = -1;\n }\n }\n\n // Don't break page scrolling at max and min\n if (\n (direction === 1 && this.player.media.volume < 1) ||\n (direction === -1 && this.player.media.volume > 0)\n ) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n }\n}\n\nexport default Listeners;\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathStripped = path.replace(/^(css|img)!/, ''),\n isCss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(path)) {\n isCss = true;\n\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped; //.replace(/^css!/, ''); // remove \"css!\" prefix\n } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // Note: The following code isolates IE using `hideFocus` and treats empty\n // stylesheets as failures to get around lack of onerror support\n if (isCss && 'hideFocus' in e) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText`\n result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n }\n\n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function)} [arg1] - The bundleId or success callback\n * @param {Function} [arg2] - The success or error callback\n * @param {Function} [arg3] - The error callback\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n // load scripts\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from './../captions';\nimport controls from './../controls';\nimport ui from './../ui';\nimport { createElement, replaceElement, toggleClass } from './../utils/elements';\nimport { triggerEvent } from './../utils/events';\nimport fetch from './../utils/fetch';\nimport is from './../utils/is';\nimport loadScript from './../utils/loadScript';\nimport { format, stripHTML } from './../utils/strings';\nimport { buildUrlParams } from './../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Get aspect ratio for dimensions\nfunction getAspectRatio(width, height) {\n const getRatio = (w, h) => (h === 0 ? w : getRatio(h, w % h));\n const ratio = getRatio(width, height);\n return `${width / ratio}:${height / ratio}`;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set intial ratio\n vimeo.setAspectRatio.call(this);\n\n // Load the API if not already\n if (!is.object(window.Vimeo)) {\n loadScript(this.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(this);\n })\n .catch(error => {\n this.debug.warn('Vimeo API failed to load', error);\n });\n } else {\n vimeo.ready.call(this);\n }\n },\n\n // Set aspect ratio\n // For Vimeo we have an extra 300% height to hide the standard controls and UI\n setAspectRatio(input) {\n const [x, y] = (is.string(input) ? input : this.config.ratio).split(':');\n const padding = 100 / x * y;\n this.elements.wrapper.style.paddingBottom = `${padding}%`;\n\n if (this.supported.ui) {\n const height = 240;\n const offset = (height - padding) / (height / 50);\n\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n\n // Get Vimeo params for the iframe\n const options = {\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n // muted: player.muted,\n byline: false,\n portrait: false,\n title: false,\n speed: true,\n transparent: 0,\n gesture: 'media',\n playsinline: !this.config.fullscreen.iosNative,\n };\n const params = buildUrlParams(options);\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n }\n\n const id = parseId(source);\n\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute('allowtransparency', '');\n iframe.setAttribute('allow', 'autoplay');\n\n // Get poster, if already set\n const { poster } = player;\n\n // Inject the package\n const wrapper = createElement('div', { poster, class: player.config.classNames.embedContainer });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n\n // Get poster image\n fetch(format(player.config.urls.vimeo.api, id), 'json').then(response => {\n if (is.empty(response)) {\n return;\n }\n\n // Get the URL for thumbnail\n const url = new URL(response[0].thumbnail_large);\n\n // Get original image\n url.pathname = `${url.pathname.split('_')[0]}.jpg`;\n\n // Set and show poster\n ui.setPoster.call(player, url.href).catch(() => {});\n });\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(error => {\n // Hide menu item (and menu if empty)\n if (error.name === 'Error') {\n controls.setSpeedMenu.call(player, []);\n }\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then(value => {\n currentSrc = value;\n })\n .catch(error => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(dimensions => {\n const ratio = getAspectRatio(dimensions[0], dimensions[1]);\n vimeo.setAspectRatio.call(this, ratio);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then(state => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then(title => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then(value => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then(value => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then(tracks => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then(paused => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', data => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', data => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then(value => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', detail => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 0);\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport controls from './../controls';\nimport ui from './../ui';\nimport { dedupe } from './../utils/arrays';\nimport { createElement, replaceElement, toggleClass } from './../utils/elements';\nimport { triggerEvent } from './../utils/events';\nimport fetch from './../utils/fetch';\nimport is from './../utils/is';\nimport loadImage from './../utils/loadImage';\nimport loadScript from './../utils/loadScript';\nimport { format, generateId } from './../utils/strings';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Standardise YouTube quality unit\nfunction mapQualityUnit(input) {\n const qualities = {\n hd2160: 2160,\n hd1440: 1440,\n hd1080: 1080,\n hd720: 720,\n large: 480,\n medium: 360,\n small: 240,\n tiny: 144,\n };\n\n const entry = Object.entries(qualities).find(entry => entry.includes(input));\n\n if (entry) {\n // Get the match corresponding to the input\n return entry.find(value => value !== input);\n }\n\n return 'default';\n}\n\nfunction mapQualityUnits(levels) {\n if (is.empty(levels)) {\n return levels;\n }\n\n return dedupe(levels.map(level => mapQualityUnit(level)));\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set aspect ratio\n youtube.setAspectRatio.call(this);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n } else {\n // Load the API\n loadScript(this.config.urls.youtube.sdk).catch(error => {\n this.debug.warn('YouTube API failed to load', error);\n });\n\n // Setup callback for the API\n // YouTube has it's own system of course...\n window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || [];\n\n // Add to queue\n window.onYouTubeReadyCallbacks.push(() => {\n youtube.ready.call(this);\n });\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n window.onYouTubeReadyCallbacks.forEach(callback => {\n callback();\n });\n };\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n // Try via undocumented API method first\n // This method disappears now and then though...\n // https://github.com/sampotts/plyr/issues/709\n if (is.function(this.embed.getVideoData)) {\n const { title } = this.embed.getVideoData();\n\n if (is.empty(title)) {\n this.config.title = title;\n ui.setTitle.call(this);\n return;\n }\n }\n\n // Or via Google API\n const key = this.config.keys.google;\n if (is.string(key) && !is.empty(key)) {\n const url = format(this.config.urls.youtube.api, videoId, key);\n\n fetch(url)\n .then(result => {\n if (is.object(result)) {\n this.config.title = result.items[0].snippet.title;\n ui.setTitle.call(this);\n }\n })\n .catch(() => {});\n }\n },\n\n // Set aspect ratio\n setAspectRatio() {\n const ratio = this.config.ratio.split(':');\n this.elements.wrapper.style.paddingBottom = `${100 / ratio[0] * ratio[1]}%`;\n },\n\n // API ready\n ready() {\n const player = this;\n\n // Ignore already setup (race condition)\n const currentId = player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the