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') || this.media.hasAttribute('webkit-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', { tabindex: 0 });\n wrap(this.media, this.elements.container);\n }\n\n // Migrate custom properties from media to container (so they work 😉)\n ui.migrateStyles.call(this);\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 fullscreen\n this.fullscreen = new Fullscreen(this);\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 ads if provided\n if (this.config.ads.enabled) {\n this.ads = new Ads(this);\n }\n\n // Autoplay if required\n if (this.isHTML5 && this.config.autoplay) {\n this.once('canplay', () => silencePromise(this.play()));\n }\n\n // Seek time will be recorded (in listeners.js) so we can prevent hiding controls for a few seconds after seek\n this.lastSeekTime = 0;\n\n // Setup preview thumbnails if enabled\n if (this.config.previewThumbnails.enabled) {\n this.previewThumbnails = new PreviewThumbnails(this);\n }\n }\n\n // ---------------------------------------\n // API\n // ---------------------------------------\n\n /**\n * Types and provider helpers\n */\n get isHTML5() {\n return this.provider === providers.html5;\n }\n\n get isEmbed() {\n return this.isYouTube || this.isVimeo;\n }\n\n get isYouTube() {\n return this.provider === providers.youtube;\n }\n\n get isVimeo() {\n return this.provider === providers.vimeo;\n }\n\n get isVideo() {\n return this.type === types.video;\n }\n\n get isAudio() {\n return 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 // Intecept play with ads\n if (this.ads && this.ads.enabled) {\n this.ads.managerPromise.then(() => this.ads.play()).catch(() => silencePromise(this.media.play()));\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 null;\n }\n\n return 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 return this.play();\n }\n\n return this.pause();\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 -= 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 += 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 // Media duration can be NaN or Infinity before the media has loaded\n const realDuration = (this.media || {}).duration;\n const duration = !is.number(realDuration) || realDuration === Infinity ? 0 : realDuration;\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 : 0);\n }\n\n /**\n * Decrease volume\n * @param {Boolean} step - How much to decrease by (between 0 and 1)\n */\n decreaseVolume(step) {\n this.increaseVolume(-step);\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 // Clamp to min/max\n const { minimumSpeed: min, maximumSpeed: max } = this;\n speed = clamp(speed, min, max);\n\n // Update config\n this.config.speed.selected = speed;\n\n // Set media speed\n setTimeout(() => {\n this.media.playbackRate = speed;\n }, 0);\n }\n\n /**\n * Get current playback speed\n */\n get speed() {\n return Number(this.media.playbackRate);\n }\n\n /**\n * Get the minimum allowed speed\n */\n get minimumSpeed() {\n if (this.isYouTube) {\n // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n return Math.min(...this.options.speed);\n }\n\n if (this.isVimeo) {\n // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n return 0.5;\n }\n\n // https://stackoverflow.com/a/32320020/1191319\n return 0.0625;\n }\n\n /**\n * Get the maximum allowed speed\n */\n get maximumSpeed() {\n if (this.isYouTube) {\n // https://developers.google.com/youtube/iframe_api_reference#setPlaybackRate\n return Math.max(...this.options.speed);\n }\n\n if (this.isVimeo) {\n // https://github.com/vimeo/player.js/#setplaybackrateplaybackrate-number-promisenumber-rangeerrorerror\n return 2;\n }\n\n // https://stackoverflow.com/a/32320020/1191319\n return 16;\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 let updateStorage = true;\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 // Don't update storage if quality is not supported\n updateStorage = false;\n }\n\n // Update config\n config.selected = quality;\n\n // Set quality\n this.media.quality = quality;\n\n // Save to storage\n if (updateStorage) {\n this.storage.set({ quality });\n }\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 * Get a download URL (either source or custom)\n */\n get download() {\n const { download } = this.config.urls;\n\n return is.url(download) ? download : this.source;\n }\n\n /**\n * Set the download URL\n */\n set download(input) {\n if (!is.url(input)) {\n return;\n }\n\n this.config.urls.download = input;\n\n controls.setDownloadUrl.call(this);\n }\n\n /**\n * Set the poster image for a video\n * @param {String} 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') || this.media.getAttribute('data-poster');\n }\n\n /**\n * Get the current aspect ratio in use\n */\n get ratio() {\n if (!this.isVideo) {\n return null;\n }\n\n const ratio = reduceAspectRatio(getAspectRatio.call(this));\n\n return is.array(ratio) ? ratio.join(':') : ratio;\n }\n\n /**\n * Set video aspect ratio\n */\n set ratio(input) {\n if (!this.isVideo) {\n this.debug.warn('Aspect ratio can only be set for video');\n return;\n }\n\n if (!is.string(input) || !validateRatio(input)) {\n this.debug.error(`Invalid aspect ratio specified (${input})`);\n return;\n }\n\n this.config.ratio = input;\n\n setAspectRatio.call(this);\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 // 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;\n\n // Toggle based on current state\n // Safari\n if (is.function(this.media.webkitSetPresentationMode)) {\n this.media.webkitSetPresentationMode(toggle ? pip.active : pip.inactive);\n }\n\n // Chrome\n if (is.function(this.media.requestPictureInPicture)) {\n if (!this.pip && toggle) {\n this.media.requestPictureInPicture();\n } else if (this.pip && !toggle) {\n document.exitPictureInPicture();\n }\n }\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 // Safari\n if (!is.empty(this.media.webkitPresentationMode)) {\n return this.media.webkitPresentationMode === pip.active;\n }\n\n // Chrome\n return this.media === document.pictureInPictureElement;\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 // Negate the argument if not undefined since adding the class to hides the controls\n const force = typeof toggle === 'undefined' ? undefined : !toggle;\n // Apply and get updated state\n const hiding = toggleClass(this.elements.container, this.config.classNames.hideControls, force);\n\n // Close menu\n if (\n hiding &&\n is.array(this.config.controls) &&\n this.config.controls.includes('settings') &&\n !is.empty(this.config.settings)\n ) {\n controls.toggleMenu.call(this, false);\n }\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\n return !hiding;\n }\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 /**\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 /**\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 // Cancel current network requests\n html5.cancelRequests.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 // Clear timeouts\n clearTimeout(this.timers.loading);\n clearTimeout(this.timers.controls);\n clearTimeout(this.timers.resized);\n\n // Provider specific stuff\n if (this.isHTML5) {\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 {Boolean} 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","/**\n * Returns a number whose value is limited to the given range.\n *\n * Example: limit the output of this computation to between 0 and 255\n * (x * 255).clamp(0, 255)\n *\n * @param {Number} input\n * @param {Number} min The lower boundary of the output range\n * @param {Number} max The upper boundary of the output range\n * @returns A number in the range [min, max]\n * @type Number\n */\nexport function clamp(input = 0, min = 0, max = 255) {\n return Math.min(Math.max(input, min), max);\n}\n\nexport default { clamp };\n"]}
\ No newline at end of file
diff --git a/assets/styles-fix.css b/assets/styles-fix.css
new file mode 100644
index 00000000..6e91f139
--- /dev/null
+++ b/assets/styles-fix.css
@@ -0,0 +1,25 @@
+body {
+ font-size: 15px;
+ line-height: 1.5;
+ overflow-wrap: break-word;
+}
+
+.row .responsive-table-header,
+.row .responsive-table-row {
+ max-width: 100%;
+}
+
+@media (max-width: 767px) {
+ .row .responsive-table-header div,
+ .row .responsive-table-row div {
+ max-width: 100%;
+ min-width: 50%;
+ }
+}
+
+@media (max-width: 576px) {
+ .row .responsive-table-header div,
+ .row .responsive-table-row div {
+ width: 100%;
+ }
+}
diff --git a/assets/video/cwl-intro-video-vp9.webm b/assets/video/cwl-intro-video-vp9.webm
new file mode 100644
index 00000000..8622521f
Binary files /dev/null and b/assets/video/cwl-intro-video-vp9.webm differ
diff --git a/assets/video/cwl-intro-video.mp4 b/assets/video/cwl-intro-video.mp4
new file mode 100644
index 00000000..24852298
Binary files /dev/null and b/assets/video/cwl-intro-video.mp4 differ
diff --git a/assets/video/subtitles/ct.vtt b/assets/video/subtitles/ct.vtt
new file mode 100644
index 00000000..f39b8990
--- /dev/null
+++ b/assets/video/subtitles/ct.vtt
@@ -0,0 +1,72 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+En numerosos ámbitos científicos (como
+la bioinformática, las imágenes médicas y
+
+00:00:03.629 --> 00:00:06.299
+i l’astronomia) requereixen analitzar
+una gran quantitat de dades.
+
+00:00:06.299 --> 00:00:10.769
+Això pot suposar processos repetitius i
+a gran escala als fluxos de treball llargs
+
+00:00:10.769 --> 00:00:15.240
+amb diverses eines — anomenats «workflows»
+(fluxos de treball en anglès).
+
+00:00:15.240 --> 00:00:18.930
+L’execució de les dades de forma manual a
+través de totes aquestes eines i la conversió
+
+00:00:18.930 --> 00:00:21.949
+de la sortida de les dades en diversos formats,
+per fer-los compatibles en el següent pas,
+
+00:00:21.949 --> 00:00:26.130
+pot requerir uns temps d’execució molt llargs.
+Per pal·liar aquest problema es dissenyen sistemes
+
+00:00:26.130 --> 00:00:30.090
+de manipulació de fluxos de treball,
+permetent que aquests fluxos de treball
+
+00:00:30.090 --> 00:00:34.290
+s’expressin formalment i suministrant una
+infraestructura per a configurar-los,
+
+00:00:34.290 --> 00:00:38.399
+executar-los i monitoritzar-los. Aquesta
+expressió formal dels fluxos de treball
+
+00:00:38.399 --> 00:00:43.110
+permet als científics compartir-los i
+reutilitzar-los fàcilment.
+
+00:00:43.110 --> 00:00:46.579
+Fonamentalment també es poden fer servir
+per verificar els resultats computacionals
+
+00:00:46.579 --> 00:00:50.399
+de treballs publicats. No obstant, hi ha
+moltes maneres contraposades per descriure
+
+00:00:50.399 --> 00:00:55.020
+els fluxos de treball, convertint-se en un
+obstacle per aquest propòsit. Actualment hi
+
+00:00:55.020 --> 00:00:58.469
+Actualment hi ha al voltant d’un centenar de
+sistemes d’anàlisi de dades de fluxos de
+treball que no són interoperatius entre ells.
+
+00:00:58.469 --> 00:01:02.430
+Ha aparegut la necessitat de tenir un únic
+estàndard comú. Per això es va crear el projecte
+"Common Workflow Language" (Llenguatge de Flux
+
+00:01:02.430 --> 00:01:05.539
+de treball Comú, en anglès): Un estàndard
+obert dissenyat per expressar els fluxos de
+treball i les seves eines en grups d’arxius de text YAML.
diff --git a/assets/video/subtitles/de.vtt b/assets/video/subtitles/de.vtt
new file mode 100644
index 00000000..1ceb5af2
--- /dev/null
+++ b/assets/video/subtitles/de.vtt
@@ -0,0 +1,71 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+In vielen Wissenschaftsbereichen (z. B.
+Bioinformatik, medizinische Bildgebung und
+
+00:00:03.629 --> 00:00:06.299
+Astronomie) müssen große Datenmengen
+analysiert werden. Dafür werden häufig
+
+00:00:06.299 --> 00:00:10.769
+repetitive Prozesse ausgeführt, die aus
+vielen einzelnen Schritten bestehen und dabei
+
+00:00:10.769 --> 00:00:15.240
+verschiedene Softwarewerkzeuge benutzen.
+Solche Prozesse werden auch als "Workflows"
+
+00:00:15.240 --> 00:00:18.930
+bezeichnet, und die einzelnen Softwarewerkzeuge
+als "Tools". Die Workflowausführung per Hand
+
+00:00:18.930 --> 00:00:21.949
+kann sehr aufwändig sein. Insbesondere die
+Dateneingabe und die Konvertierung von Ausgaben
+
+00:00:21.949 --> 00:00:26.130
+in andere Formate, um sie mit den nächsten
+Tools kompatibel zu machen, kosten oft viel Zeit.
+
+00:00:26.130 --> 00:00:30.090
+Workflowmanagementsysteme schaffen hier
+Abhilfe. Sie ermöglichen es, Workflows
+
+00:00:30.090 --> 00:00:34.290
+formal zu beschreiben, und stellen
+Infrastruktur zur Verfügung, um sie zu
+konfigurieren, auszuführen und
+
+00:00:34.290 --> 00:00:38.399
+nachzuvollziehen. Forschende können solche
+Workflows einfach miteinander teilen und
+wiederverwenden, und zur Überüfung
+
+00:00:38.399 --> 00:00:43.110
+veröffentlichter. Datenanalyseergebnisse heranziehen.
+Damit können Workflows die Reproduzierbarkeit
+
+00:00:43.110 --> 00:00:46.579
+von Forschungsergebnissen maßgeblich erhöhen.
+Dem steht jedoch entgegen, dass es viele
+konkurrierende Workflowformate gibt.
+
+00:00:46.579 --> 00:00:50.399
+In den letzten zwei Jahrzehnten sind über
+hundert verschiedene Workflowmanagementsysteme
+
+00:00:50.399 --> 00:00:55.020
+entstanden, die größtenteils eigene Formate
+definieren und untereinander kaum kompatibel sind.
+
+00:00:55.020 --> 00:00:58.469
+Eine gemeinsame Sprache wurde immer notwendiger,
+und so wurde das Projekt "Common Workflow Language"
+
+00:00:58.469 --> 00:01:02.430
+ins Leben gerufen: Ein offener Standard für
+die formale Beschreibung von Workflows und
+
+00:01:02.430 --> 00:01:05.539
+Tools in strukturiereten YAML-Textdateien.
diff --git a/assets/video/subtitles/en.vtt b/assets/video/subtitles/en.vtt
new file mode 100644
index 00000000..45b430da
--- /dev/null
+++ b/assets/video/subtitles/en.vtt
@@ -0,0 +1,68 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+In many scientific fields such as
+bioinformatics, medical imaging, and
+
+00:00:03.629 --> 00:00:06.299
+astronomy
+large quantities of data need to be
+
+00:00:06.299 --> 00:00:10.769
+analyzed. This can involve large-scale
+and repetitive processes in long
+
+00:00:10.769 --> 00:00:15.240
+pipelines of different tools — referred to
+as workflows. It can be very
+
+00:00:15.240 --> 00:00:18.930
+time-consuming to run data for all these
+different tools by hand and convert
+
+00:00:18.930 --> 00:00:21.949
+outputs to various formats to make them
+compatible with the next step.
+
+00:00:21.949 --> 00:00:26.130
+Workflow management systems are designed
+to alleviate this problem by allowing
+
+00:00:26.130 --> 00:00:30.090
+these workflows to be expressed formally
+and providing infrastructure to set up.
+
+00:00:30.090 --> 00:00:34.290
+execute, and monitor them. This formal
+expression of workflows allows for
+
+00:00:34.290 --> 00:00:38.399
+scientists to easily share and reuse
+them. Crucially they can also be used to
+
+00:00:38.399 --> 00:00:43.110
+verify results of computation for
+published work. However there are many
+
+00:00:43.110 --> 00:00:46.579
+competing [ways] for describing
+workflows which is a barrier to this aim.
+
+00:00:46.579 --> 00:00:50.399
+Currently there are over a hundred
+different data analysis workflow systems
+
+00:00:50.399 --> 00:00:55.020
+with no interoperability between them.
+The need has arisen to have a single
+
+00:00:55.020 --> 00:00:58.469
+common standard and so the "Common
+Workflow Language" project was created: an
+
+00:00:58.469 --> 00:01:02.430
+open standard designed to express
+workflows and their tooling in groups of
+
+00:01:02.430 --> 00:01:05.539
+YAML structured text files.
diff --git a/assets/video/subtitles/es.vtt b/assets/video/subtitles/es.vtt
new file mode 100644
index 00000000..76fbcfff
--- /dev/null
+++ b/assets/video/subtitles/es.vtt
@@ -0,0 +1,71 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+En numerosos ámbitos científicos (como
+la bioinformática, las imágenes médicas y
+
+00:00:03.629 --> 00:00:06.299
+la astronomía) es preciso analizar
+una gran cantidad de datos;
+
+00:00:06.299 --> 00:00:10.769
+lo que puede suponer procesos repetitivos
+y a gran escala para largos
+
+00:00:10.769 --> 00:00:15.240
+flujos de trabajo de diversas herramientas —
+denominados «workflows»
+(flujos de trabajo en inglés).
+
+00:00:15.240 --> 00:00:18.930
+Puede requerir mucho tiempo ejecutar los
+datos a través de todas estas herramientas
+
+00:00:18.930 --> 00:00:21.949
+manualmente y convertir la salida de datos
+en varios formatos para que sean compatibles
+
+00:00:21.949 --> 00:00:26.130
+en el siguiente paso. Puede requerir mucho
+tiempo ejecutar los datos a través de todas
+
+00:00:26.130 --> 00:00:30.090
+estas herramientas manualmente y convertir
+la salida de datos en varios formatos
+
+00:00:30.090 --> 00:00:34.290
+para que sean compatibles en el siguiente paso.
+Esta expresión formal de los flujos de
+
+00:00:34.290 --> 00:00:38.399
+trabajo permite a los científicos compartirlos
+y reutilizarlos fácilmente. Fundamentalmente
+
+00:00:38.399 --> 00:00:43.110
+también se pueden emplear para
+verificar los resultados computacionales
+
+00:00:43.110 --> 00:00:46.579
+de trabajos publicados. Sin embargo, hay
+muchas maneras contrapuestas para describir
+
+00:00:46.579 --> 00:00:50.399
+los flujos de trabajo, lo que es una traba
+para este fin. Actualmente hay alrededor de
+
+00:00:50.399 --> 00:00:55.020
+un centenar de sistemas de análisis de datos de
+flujos de trabajo que no son interoperables entre ellos.
+
+00:00:55.020 --> 00:00:58.469
+Ha surgido la necesidad de tener un único
+estándar común. Por ello se creó el proyecto
+"Common Workflow Language"
+
+00:00:58.469 --> 00:01:02.430
+(Lenguaje de Flujo de trabajo Común, en inglés):
+Un estándar abierto diseñado para expresar
+
+00:01:02.430 --> 00:01:05.539
+los flujos de trabajo y sus herramientas en.
+grupos de archivos de texto YAML.
diff --git a/assets/video/subtitles/fi.vtt b/assets/video/subtitles/fi.vtt
new file mode 100644
index 00000000..ac41345d
--- /dev/null
+++ b/assets/video/subtitles/fi.vtt
@@ -0,0 +1,49 @@
+WEBVTT
+Kind: captions
+Language: fi
+
+00:00:00.000 --> 00:00:06.962
+Monet tieteenalat vaativat suurten tietomäärien analysointia (esim. bioinformatiikka, lääketieteellinen kuvantaminen, ja astronomia).
+
+00:00:06.962 --> 00:00:10.769
+Analysointi koostuu toistuvista ja raskaista, peräkkäin ajettavista laskentaprosesseista
+
+00:00:10.769 --> 00:00:15.240
+käsittäen erilaisten työkalujen hyödyntämistä - tätä prosessia kutsutaan työvuoksi.
+
+00:00:15.240 --> 00:00:18.930
+Näiden laskentaprosessien käsinajaminen työkalusta toiseen on usein hyvin työlästä,
+
+00:00:18.930 --> 00:00:21.548
+sillä yhden työkalun tulosteen on sovittava toisen työkalun syötteeksi, ja tämä tavallisesti vaatii tietorakenteen muokkaamista.
+
+00:00:21.548 --> 00:00:26.130
+Työvuonhallintaohjelmat on suunniteltu helpottamaan tätä taakkaa
+
+00:00:26.130 --> 00:00:30.090
+tarjoamalla rakenteellisen menetelmän kuvata työvuon kulun ja alustan, jonka avulla työvuo voidaan ajaa ja sen toimintaa seurata.
+
+00:00:30.090 --> 00:00:34.290
+Nämä rakenteelliset menetelmät kuvata työvoita mahdollistavat tutkijoita jakamaan
+
+00:00:34.290 --> 00:00:38.399
+ja uudelleenkäyttämään tutkimustietojaan paremmin.
+
+00:00:38.399 --> 00:00:43.110
+Tämä on erityisen tärkeää vahvistettaessa tutkimustiedon luotettavuutta tieteellisiä julkaisuja varten.
+
+00:00:43.110 --> 00:00:46.579
+Markkinoilla on tarjolla useita kilpailevia tapoja kuvata työvoita, joka voi olla myös haitaksi tiedon jakamiselle.
+
+00:00:46.579 --> 00:00:49.960
+Erilaisia työvuonhallintaohjelmia on saatavilla yli sata erilaista laatua,
+
+00:00:49.960 --> 00:00:53.574
+ja niiden välinen yhteensopivuus on puutteellista.
+
+00:00:53.574 --> 00:00:58.469
+Tämä on luonut tarpeen "Yhtenäiselle Työvuokielelle", jonka johdosta CWL projekti käynnistettiin.
+
+00:00:58.469 --> 00:01:05.519
+CWL:n tehtävänä on luoda yhtenäinen tapa kuvata työvoita YAML tiedostorakenteella.
+
diff --git a/assets/video/subtitles/fr.vtt b/assets/video/subtitles/fr.vtt
new file mode 100644
index 00000000..7bd484f0
--- /dev/null
+++ b/assets/video/subtitles/fr.vtt
@@ -0,0 +1,55 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+Dans de nombreux domaines scientifiques tels que
+bio-informatique, l'imagerie médicale, et
+
+00:00:03.629 --> 00:00:06.299
+l'astronomie
+de grandes quantités de données doivent être
+
+00:00:06.299 --> 00:00:10.769
+analysées. Celà peut impliquer des processus répétitifs
+et à grande échelle dans des enchaînements
+
+00:00:10.769 --> 00:00:15.240
+longs de différents outils - appelés workflows. Il peut être très long de traiter de telles données avec tous
+
+00:00:15.240 --> 00:00:18.930
+ces différents outils et convertir les données produites en divers formats, afin de les rendre compatibles avec
+
+00:00:18.930 --> 00:00:21.949
+l'étape suivante.
+
+00:00:21.949 --> 00:00:26.130
+Les systèmes de gestion de workflow sont conçus pour atténuer ce problème, en permettant de les définir
+
+00:00:26.130 --> 00:00:30.090
+formellement et de fournir des infrastructures pour les installer, les exécuter et de les monitorer.
+
+00:00:30.090 --> 00:00:34.290
+Cette formalisation des workflows permet aux scientifiques de les partager facilement et de les
+
+00:00:34.290 --> 00:00:38.399
+réutiliser. Leur utilisation est également très importante pour vérifier les résultats de calcul pour les travaux
+
+00:00:38.399 --> 00:00:43.110
+publiés. Cependant, il existe de nombreuses approches différentes pour décrire ces workflows, ce qui constitue
+
+00:00:43.110 --> 00:00:46.579
+un obstacle à ces objectifs.
+
+00:00:46.579 --> 00:00:50.399
+Actuellement, il y a plus d'une centaine de différents systèmes de workflow d'analyse des données
+
+00:00:50.399 --> 00:00:55.020
+non-interopérables.Le besoin d'une seule norme commune est apparu, et le projet
+
+00:00:55.020 --> 00:00:58.469
+« Common Language Workflow » a été créé pour y répondre: un standard ouvert, conçu pour décrire les
+
+00:00:58.469 --> 00:01:02.430
+workflows et les outils qu'ils utilisent, dans des groupes
+
+00:01:02.430 --> 00:01:05.539
+de fichiers texte structurés au format YAML.
diff --git a/assets/video/subtitles/it.vtt b/assets/video/subtitles/it.vtt
new file mode 100644
index 00000000..dc20bf26
--- /dev/null
+++ b/assets/video/subtitles/it.vtt
@@ -0,0 +1,59 @@
+WEBVTT
+Kind: captions
+Language: it
+
+00:00:00.000 --> 00:00:03.629
+In svariati ambiti scientifici, come per esempio la bioinformatica, la diagnostica per
+
+00:00:03.629 --> 00:00:06.299
+per immagini e l'astronomia, è necessario analizzare grandi moli di dati.
+
+00:00:06.299 --> 00:00:10.769
+Questa operazione può coinvolgere processi ripetitivi su larga scala,
+
+00:00:10.769 --> 00:00:15.240
+organizzati in lunghe catene di diversi strumenti software denominate workflow computazionali.
+
+00:00:15.240 --> 00:00:18.930
+Può essere necessario molto tempo per gestire manualmente il processamento dei dati da parte di tutti i diversi strumenti coinvolti,
+
+00:00:18.930 --> 00:00:21.949
+convertendo di volta in volta gli output in un formato compatibile con lo step successivo.
+
+00:00:21.949 --> 00:00:26.130
+I sistemi di gestione dei workflow (Workflow Management Systems) sono progettati per alleviare il problema, permettendo
+
+00:00:26.130 --> 00:00:30.090
+agli utenti di esprimere i workflow in maniera formalizzata e fornendo l'infrastruttura necessaria per
+
+00:00:30.090 --> 00:00:34.290
+inizializzarli, eseguirli e monitorarli.
+Workflow espressi in maniera formalizzata permettono agli scienziati
+
+00:00:34.290 --> 00:00:38.399
+di condividerli e riutilizzarli facilmente.
+Un altro aspetto cruciale è la possibilità di impiegarli per
+
+00:00:38.399 --> 00:00:43.110
+verificare i risultati delle computazioni descritte nelle pubblicazioni.
+Tuttavia, l' esistenza di diverse modalità tra loro in
+
+00:00:43.110 --> 00:00:46.579
+competizione per descrivere i workflow ostacola il raggiungimento di tali obiettivi.
+
+00:00:46.579 --> 00:00:50.399
+Al momento esistono più di cento diversi sistemi di workflow per l'analisi dei dati,
+
+00:00:50.399 --> 00:00:55.020
+senza alcuna interoperabilità tra di essi.
+La necessità di avere un unico formato comune ha motivato la
+
+00:00:55.020 --> 00:00:58.469
+creazione del progetto "Common Workflow Language",
+
+00:00:58.469 --> 00:01:02.430
+uno standard aperto progettato per esprimere i workflow e gli strumenti ad essi correlati in gruppi
+
+00:01:02.430 --> 00:01:05.539
+di file testuali strutturati basati su YAML.
+
diff --git a/assets/video/subtitles/ja.vtt b/assets/video/subtitles/ja.vtt
new file mode 100644
index 00000000..97e420f0
--- /dev/null
+++ b/assets/video/subtitles/ja.vtt
@@ -0,0 +1,53 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+バイオインフォマティクス、医療用画像、天文学など多くの科学分野で、
+
+00:00:03.629 --> 00:00:06.299
+大量のデータを分析する必要があります。
+
+00:00:06.299 --> 00:00:10.769
+データ分析では、
+
+00:00:10.769 --> 00:00:15.240
+ワークフローと呼ばれる複数のツールからなるパイプライン処理を大規模なデータに対して反復的に実行することがあります。
+
+00:00:15.240 --> 00:00:18.930
+データに対して異なるツールを手作業で実行することや、 各ツールの出力を次のツールの入力形式に変換する作業は、
+
+00:00:18.930 --> 00:00:21.949
+非常に時間がかかる作業です。
+
+00:00:21.949 --> 00:00:26.130
+ワークフロー管理システムは、ワークフローを形式的に表現し、
+
+00:00:26.130 --> 00:00:30.090
+ワークフローのセットアップ、実行、監視を行うことで、これらの問題を軽減します。
+
+00:00:30.090 --> 00:00:34.290
+ワークフローを形式的に表現することで、研究者の間でワークフローを共有、
+
+00:00:34.290 --> 00:00:38.399
+再利用することが簡単になります。
+さらに、この形式化されたワークフローは、
+
+00:00:38.399 --> 00:00:43.110
+論文で発表された計算結果の検証にも使用できます。
+
+00:00:43.110 --> 00:00:46.579
+しかしワークフローを記述する表現方法は数多くあるため、この目的は達成できていません。
+
+00:00:46.579 --> 00:00:50.399
+現在、数百種類以上のデータ解析ワークフローシステムがありますが、
+
+00:00:50.399 --> 00:00:55.020
+それらの間には相互運用性がありません。
+
+00:00:55.020 --> 00:00:58.469
+単一の共通の規格が必要なため、「Common Workflow Language」プロジェクトが始まりました:
+
+00:00:58.469 --> 00:01:02.430
+Common Workflow Language は、 YAML フォーマットのファイル群で
+
+00:01:02.430 --> 00:01:05.539
+ワークフローとツールを表現するオープンな規格です。
diff --git a/assets/video/subtitles/lt.vtt b/assets/video/subtitles/lt.vtt
new file mode 100644
index 00000000..8fa2d486
--- /dev/null
+++ b/assets/video/subtitles/lt.vtt
@@ -0,0 +1,52 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+Daugelyje mokslo sričių (bioinformatikos, medicinos vizualizacijos, astronomijos)
+
+00:00:03.629 --> 00:00:06.299
+prireikia analizuoti milžiniškus duomenų
+
+00:00:06.299 --> 00:00:10.769
+kiekius. Tam gali tekti kartoti ilgus procesus, išrikiuotus į įvairių įrankių sekas
+
+00:00:10.769 --> 00:00:15.240
+- vadinamuosius darbo srautus (workflows). Apdoroti
+
+00:00:15.240 --> 00:00:18.930
+duomenis skirtingais analizės įrankiais rankiniu būdu ir konvertuoti rezultatus į įvairius formatus tam,
+
+00:00:18.930 --> 00:00:21.949
+kad jie tiktų kitam žingsniui, gali užtrukti daug laiko.
+
+00:00:21.949 --> 00:00:26.130
+Šiai problemai spręsti kuriamos darbo srautų valdymo sistemos (workflow management systems),
+
+00:00:26.130 --> 00:00:30.090
+leidžiančios šiuos srautus formalizuoti ir siūlančios infrastruktūrą jiems išdėstyti,
+
+00:00:30.090 --> 00:00:34.290
+vykdyti ir stebėti. Tokia formalizuota išraiška leidžia
+
+00:00:34.290 --> 00:00:38.399
+mokslininkams lengvai dalintis savo darbo srautais ir pakartotinai juos naudoti.
+
+00:00:38.399 --> 00:00:43.110
+Svarbiausia, šitaip galima patikrinti skaičiavimų rezultatus prieš juos publikuojant. Vis dėlto egzistuoja
+
+00:00:43.110 --> 00:00:46.579
+daugybė tarpusavyje nesuderinamų darbo srautų aprašymo būdų ir tai yra kliūtis šiam tikslui pasiekti.
+
+00:00:46.579 --> 00:00:50.399
+Šiuo metu naudojama per šimtą įvairių duomenų analizės darbo srautų sistemų,
+
+00:00:50.399 --> 00:00:55.020
+kurios nėra tarpusavyje suderinamos. Reikalingas vienas bendras standartas,
+
+00:00:55.020 --> 00:00:58.469
+taigi taip ir prasidėjo “Bendros darbo srautų kalbos” projektas: siekiant sukurti atvirą standartą,
+
+00:00:58.469 --> 00:01:02.430
+leisiantį aprašyti darbo srautus ir jų įrankius tiek žmogui,
+
+00:01:02.430 --> 00:01:05.539
+tiek kompiuteriui suprantamų failų grupėmis.
diff --git a/assets/video/subtitles/nl.vtt b/assets/video/subtitles/nl.vtt
new file mode 100644
index 00000000..2ffc0289
--- /dev/null
+++ b/assets/video/subtitles/nl.vtt
@@ -0,0 +1,70 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+Voor veel wetenschapsgebieden (zoals bio-
+informatica, medische beeldvorming, en
+
+00:00:03.629 --> 00:00:06.299
+astronomie) moeten grote hoeveelheden
+data worden geanalyseerd. Dat kan
+
+00:00:06.299 --> 00:00:10.769
+grootschalige en herhalende processen betreffen
+in lange series van verschillende programma’s
+
+00:00:10.769 --> 00:00:15.240
+— dit worden "workflows" genoemd. Het kan
+veel tijd kosten om data handmatig met al
+
+00:00:15.240 --> 00:00:18.930
+deze programma’s te verwerken en de output om
+te zetten naar verschillende formaten om ze
+
+00:00:18.930 --> 00:00:21.949
+gedschikt te maken voor de volgende
+bewerkingsstap. Workflow management
+
+00:00:21.949 --> 00:00:26.130
+systemen zijn gemaakt om dit probleem te
+verminderen door het mogelijk te maken deze
+
+00:00:26.130 --> 00:00:30.090
+workflows formeel te beschrijven en
+infrastructuur te bieden om ze op te stellen,
+
+00:00:30.090 --> 00:00:34.290
+uit te voeren en in de gaten te houden. De
+formele beschrijving van workflows maakt het
+
+00:00:34.290 --> 00:00:38.399
+voor wetenschappers mogelijk om ze eenvoudig
+te delen en hergebruiken. Van groot belang is
+
+00:00:38.399 --> 00:00:43.110
+dat ze ook kunnen worden gebruikt om de
+uitkomst van berekeningen uit publicaties te
+verifiëren. Er zijn echter veel verschillende
+
+00:00:43.110 --> 00:00:46.579
+met elkaar concurrerende manieren om workflows
+te beschrijven, wat een hindernis oplevert om
+dit doel te bereiken.
+
+00:00:46.579 --> 00:00:50.399
+Op het moment zijn er meer dan honderd
+verschillende data analyse workflow systemen
+
+00:00:50.399 --> 00:00:55.020
+die niet samen kunnen werken. Er is een
+noodzaak om één gemeenschappelijke standaard
+
+00:00:55.020 --> 00:00:58.469
+te hebben, en daarom is het "Common Workflow
+Language" project ontstaan: een open
+
+00:00:58.469 --> 00:01:02.430
+standaard gemaakt om workflows en programma’s
+te beschrijven in groepen van tekst files
+
+00:01:02.430 --> 00:01:05.539
+in YAML formaat.
diff --git a/assets/video/subtitles/ro.vtt b/assets/video/subtitles/ro.vtt
new file mode 100644
index 00000000..4712a9fd
--- /dev/null
+++ b/assets/video/subtitles/ro.vtt
@@ -0,0 +1,54 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+În multe domenii științifice (bioinformatică, imagistică medicală și astronomie)
+
+00:00:03.629 --> 00:00:06.299
+este necesară analiza unor cantități mari de informații.
+
+00:00:06.299 --> 00:00:10.769
+Aceasta implică frecvent procesarea complexă și repetitivă a datelor în cadrul unor fluxuri de lucru
+
+00:00:10.769 --> 00:00:15.240
+(„workflows”) ce utilizează diferite instrumente software într-o anumită succesiune.
+
+00:00:15.240 --> 00:00:18.930
+Rularea manuală a datelor prin toate aceste instrumente și convertirea rezultatelor in formate compatibile cu
+
+00:00:18.930 --> 00:00:21.949
+etapele următoare sunt mari consumatoare de timp.
+
+00:00:21.949 --> 00:00:26.130
+Sistemele de management al fluxului de lucru („workflow management”) sunt concepute pentru
+
+00:00:26.130 --> 00:00:30.090
+a ameliora această problemă, prin exprimarea formală a acestor fluxuri de lucru și prin furnizarea infrastructurii
+
+00:00:30.090 --> 00:00:34.290
+necesare pentru a le configura, executa și monitoriza.
+Formalizarea fluxurilor de lucru permite cercetătorilor să
+
+00:00:34.290 --> 00:00:38.399
+le partajeze și să le reutilizeze cu ușurință și, în special, să verifice rezultatele publicate ale unor analize de date.
+
+00:00:38.399 --> 00:00:43.110
+Există însă mai multe alternative pentru a descrie fluxurile de analiză bioinformatică, aspect care limitează
+
+00:00:43.110 --> 00:00:46.579
+posibilitatea utilizării lor în scopurile menționate.
+
+00:00:46.579 --> 00:00:50.399
+În prezent, sunt peste o sută de sisteme de management al fluxurilor de lucru, cel mai frecvent
+
+00:00:50.399 --> 00:00:55.020
+fără interoperabilitate între ele.
+A apărut deci necesitatea de a avea un singur standard
+
+00:00:55.020 --> 00:00:58.469
+comun, fiind astfel creat proiectul „Common Workflow Language” (CWL - limbaj comun pentru fluxuri de lucru):
+
+00:00:58.469 --> 00:01:02.430
+un standard deschis, conceput pentru a descrie fluxurile și instrumentele lor de lucru în fișiere
+
+00:01:02.430 --> 00:01:05.539
+de text structurat YAML.
diff --git a/assets/video/subtitles/ru.vtt b/assets/video/subtitles/ru.vtt
new file mode 100644
index 00000000..7f749461
--- /dev/null
+++ b/assets/video/subtitles/ru.vtt
@@ -0,0 +1,52 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+В разных научных областях, таких, как биоинформатика, медицинская визуализация
+
+00:00:03.629 --> 00:00:06.299
+и астрономия, существует потребность в анализе больших объёмов данных.
+
+00:00:06.299 --> 00:00:10.769
+Такой анализ включает крупномасштабные и повторяющиеся процессы в длинных
+
+00:00:10.769 --> 00:00:15.240
+конвеерах разных инструментов, которые обобщаются как рабочие процессы.
+
+00:00:15.240 --> 00:00:18.930
+Запуск данных вручную через все инструменты и конвертация
+
+00:00:18.930 --> 00:00:21.949
+результатов в разные форматы для совместимости со следующим шагом может быть очень трудоёмкой задачей.
+
+00:00:21.949 --> 00:00:26.130
+Системы управления рабочими процессами разработаны для облегчения этой проблемы, предоставляя
+
+00:00:26.130 --> 00:00:30.090
+формальное выражение рабочих процессов, и также инфраструктуру для запуска,
+
+00:00:30.090 --> 00:00:34.290
+выполнения и их мониторинга. Такое формальное выражение рабочих процессов позволяет
+
+00:00:34.290 --> 00:00:38.399
+учёным легко ими делиться и использовать их повторно. Чрезвычайно важно то, что они также могут быть использованы для
+
+00:00:38.399 --> 00:00:43.110
+проверки результатов исчислений в опубликованных работах. Однако, существует много
+
+00:00:43.110 --> 00:00:46.579
+конкурирующих способов описания рабочих процессов, что является препяствием к этой цели.
+
+00:00:46.579 --> 00:00:50.399
+На данный момент, существует около сотни разных систем рабочих процессов для анализа данных,
+
+00:00:50.399 --> 00:00:55.020
+у которых отсуствует любое взаимодействие. Таким образом возникла потребность в едином
+
+00:00:55.020 --> 00:00:58.469
+общем стандарте, и так был создан проект "Общий Язык Рабочих Процессов" -
+
+00:00:58.469 --> 00:01:02.430
+открытый стандарт, разработанный для выражения рабочих процессов и их инструментов в группах
+
+00:01:02.430 --> 00:01:05.539
+структурированных текстовых файлов YAML.
diff --git a/assets/video/subtitles/srt/chinese_simplified.srt b/assets/video/subtitles/srt/chinese_simplified.srt
new file mode 100644
index 00000000..bef1f9a2
--- /dev/null
+++ b/assets/video/subtitles/srt/chinese_simplified.srt
@@ -0,0 +1,68 @@
+1
+00:00:00,000 --> 00:00:03,629
+在许多科学领域(例如生物信息学,医学成像和天文学)
+
+2
+00:00:03,629 --> 00:00:06,299
+中,需要分析大量的数据。
+
+3
+00:00:06,299 --> 00:00:10,769
+在很长的流水线中运用不同的工具会涉及许多大规模和重复性流程
+
+4
+00:00:10,769 --> 00:00:15,240
+(称为工作流程)。
+
+5
+00:00:15,240 --> 00:00:18,930
+手动导入数据到这些不同工具的数据,
+
+6
+00:00:18,930 --> 00:00:21,949
+并将其输出转换为不同的格式使其与下一步兼容,将会非常耗时。
+
+7
+00:00:21,949 --> 00:00:26,130
+工作流管理系统旨在通过允许这些工作流程有条理的表达并提供基础设施来设立,
+
+8
+00:00:26,130 --> 00:00:30,090
+执行和监视这些工作流来缓解此问题。
+
+9
+00:00:30,090 --> 00:00:34,290
+这种工作流的正式表达允许科学家轻松地共享和重用它们。
+
+10
+00:00:34,290 --> 00:00:38,399
+关键的是,它们也可用于去验证那些已发布工作的计算结果。
+
+11
+00:00:38,399 --> 00:00:43,110
+然而,
+
+12
+00:00:43,110 --> 00:00:46,579
+有许多相互争论的方法来描述工作流程,这是对目标实现的障碍。
+
+13
+00:00:46,579 --> 00:00:50,399
+目前,有超过一百种不同的数据分析工作流系统之间没有互操作性。
+
+14
+00:00:50,399 --> 00:00:55,020
+我们需要有一个共同的标准,
+
+15
+00:00:55,020 --> 00:00:58,469
+因此创建了“通用工作流程语言”项目:
+
+16
+00:00:58,469 --> 00:01:02,430
+一个开放标准,
+
+17
+00:01:02,430 --> 00:01:05,539
+旨在表达工作流程及其在YAML结构化文本文件组中的工具。
+
diff --git a/assets/video/subtitles/srt/english-auto-generated.srt b/assets/video/subtitles/srt/english-auto-generated.srt
new file mode 100644
index 00000000..080ea4ca
--- /dev/null
+++ b/assets/video/subtitles/srt/english-auto-generated.srt
@@ -0,0 +1,132 @@
+1
+00:00:00,000 --> 00:00:01,530
+in many scientific fields such as
+
+2
+00:00:01,530 --> 00:00:03,629
+bioinformatics medical imaging and
+
+3
+00:00:03,629 --> 00:00:04,380
+astronomy
+
+4
+00:00:04,380 --> 00:00:06,299
+large quantities of data need to be
+
+5
+00:00:06,299 --> 00:00:08,790
+analyzed this can involve large-scale
+
+6
+00:00:08,790 --> 00:00:10,769
+and repetitive processes in long
+
+7
+00:00:10,769 --> 00:00:12,630
+pipelines of different tools referred to
+
+8
+00:00:12,630 --> 00:00:15,240
+as workflows it can be very
+
+9
+00:00:15,240 --> 00:00:16,949
+time-consuming to run data for all these
+
+10
+00:00:16,949 --> 00:00:18,930
+different tools by hand and convert
+
+11
+00:00:18,930 --> 00:00:20,609
+outputs to various formats to make them
+
+12
+00:00:20,609 --> 00:00:21,949
+compatible with the next step
+
+13
+00:00:21,949 --> 00:00:24,090
+workflow management systems are designed
+
+14
+00:00:24,090 --> 00:00:26,130
+to alleviate this problem by allowing
+
+15
+00:00:26,130 --> 00:00:27,960
+these workflows to be expressed formally
+
+16
+00:00:27,960 --> 00:00:30,090
+and providing infrastructure to set up
+
+17
+00:00:30,090 --> 00:00:32,700
+execute and monitor them this formal
+
+18
+00:00:32,700 --> 00:00:34,290
+expression of workflows allows for
+
+19
+00:00:34,290 --> 00:00:35,760
+scientists to easily share and reuse
+
+20
+00:00:35,760 --> 00:00:38,399
+them crucially they can also be used to
+
+21
+00:00:38,399 --> 00:00:40,079
+verify results of computation for
+
+22
+00:00:40,079 --> 00:00:43,110
+published work however there are many
+
+23
+00:00:43,110 --> 00:00:44,730
+competing standards for describing
+
+24
+00:00:44,730 --> 00:00:46,579
+workflows which is a barrier to the same
+
+25
+00:00:46,579 --> 00:00:48,180
+currently there are over a hundred
+
+26
+00:00:48,180 --> 00:00:50,399
+different data analysis workflow systems
+
+27
+00:00:50,399 --> 00:00:52,649
+with no interoperability between them
+
+28
+00:00:52,649 --> 00:00:55,020
+the need has arisen to have a single
+
+29
+00:00:55,020 --> 00:00:56,730
+common standard and so the common
+
+30
+00:00:56,730 --> 00:00:58,469
+workflow language project was created an
+
+31
+00:00:58,469 --> 00:01:00,629
+open standard design to express
+
+32
+00:01:00,629 --> 00:01:02,430
+workflows in their tooling in groups of
+
+33
+00:01:02,430 --> 00:01:05,539
+llamó structured text files
+
diff --git a/assets/video/subtitles/srt/english.srt b/assets/video/subtitles/srt/english.srt
new file mode 100644
index 00000000..2dd776ab
--- /dev/null
+++ b/assets/video/subtitles/srt/english.srt
@@ -0,0 +1,84 @@
+1
+00:00:00,000 --> 00:00:03,629
+In many scientific fields such as
+bioinformatics, medical imaging, and
+
+2
+00:00:03,629 --> 00:00:06,299
+astronomy
+large quantities of data need to be
+
+3
+00:00:06,299 --> 00:00:10,769
+analyzed. This can involve large-scale
+and repetitive processes in long
+
+4
+00:00:10,769 --> 00:00:15,240
+pipelines of different tools — referred to
+as workflows. It can be very
+
+5
+00:00:15,240 --> 00:00:18,930
+time-consuming to run data for all these
+different tools by hand and convert
+
+6
+00:00:18,930 --> 00:00:21,949
+outputs to various formats to make them
+compatible with the next step.
+
+7
+00:00:21,949 --> 00:00:26,130
+Workflow management systems are designed
+to alleviate this problem by allowing
+
+8
+00:00:26,130 --> 00:00:30,090
+these workflows to be expressed formally
+and providing infrastructure to set up.
+
+9
+00:00:30,090 --> 00:00:34,290
+execute, and monitor them. This formal
+expression of workflows allows for
+
+10
+00:00:34,290 --> 00:00:38,399
+scientists to easily share and reuse
+them. Crucially they can also be used to
+
+11
+00:00:38,399 --> 00:00:43,110
+verify results of computation for
+published work. However there are many
+
+12
+00:00:43,110 --> 00:00:46,579
+competing [ways] for describing
+workflows which is a barrier to this aim.
+
+13
+00:00:46,579 --> 00:00:50,399
+Currently there are over a hundred
+different data analysis workflow systems
+
+14
+00:00:50,399 --> 00:00:55,020
+with no interoperability between them.
+The need has arisen to have a single
+
+15
+00:00:55,020 --> 00:00:58,469
+common standard and so the "Common
+Workflow Language" project was created: an
+
+16
+00:00:58,469 --> 00:01:02,430
+open standard designed to express
+workflows and their tooling in groups of
+
+17
+00:01:02,430 --> 00:01:05,539
+YAML structured text files.
+
diff --git a/assets/video/subtitles/srt/finnish.srt b/assets/video/subtitles/srt/finnish.srt
new file mode 100644
index 00000000..0386d65f
--- /dev/null
+++ b/assets/video/subtitles/srt/finnish.srt
@@ -0,0 +1,60 @@
+1
+00:00:00,000 --> 00:00:06,962
+Monet tieteenalat vaativat suurten tietomäärien analysointia (esim. bioinformatiikka, lääketieteellinen kuvantaminen, ja astronomia).
+
+2
+00:00:06,962 --> 00:00:10,769
+Analysointi koostuu toistuvista ja raskaista, peräkkäin ajettavista laskentaprosesseista
+
+3
+00:00:10,769 --> 00:00:15,240
+käsittäen erilaisten työkalujen hyödyntämistä - tätä prosessia kutsutaan työvuoksi.
+
+4
+00:00:15,240 --> 00:00:18,930
+Näiden laskentaprosessien käsinajaminen työkalusta toiseen on usein hyvin työlästä,
+
+5
+00:00:18,930 --> 00:00:21,548
+sillä yhden työkalun tulosteen on sovittava toisen työkalun syötteeksi, ja tämä tavallisesti vaatii tietorakenteen muokkaamista.
+
+6
+00:00:21,548 --> 00:00:26,130
+Työvuonhallintaohjelmat on suunniteltu helpottamaan tätä taakkaa
+
+7
+00:00:26,130 --> 00:00:30,090
+tarjoamalla rakenteellisen menetelmän kuvata työvuon kulun ja alustan, jonka avulla työvuo voidaan ajaa ja sen toimintaa seurata.
+
+8
+00:00:30,090 --> 00:00:34,290
+Nämä rakenteelliset menetelmät kuvata työvoita mahdollistavat tutkijoita jakamaan
+
+9
+00:00:34,290 --> 00:00:38,399
+ja uudelleenkäyttämään tutkimustietojaan paremmin.
+
+10
+00:00:38,399 --> 00:00:43,110
+Tämä on erityisen tärkeää vahvistettaessa tutkimustiedon luotettavuutta tieteellisiä julkaisuja varten.
+
+11
+00:00:43,110 --> 00:00:46,579
+Markkinoilla on tarjolla useita kilpailevia tapoja kuvata työvoita, joka voi olla myös haitaksi tiedon jakamiselle.
+
+12
+00:00:46,579 --> 00:00:49,960
+Erilaisia työvuonhallintaohjelmia on saatavilla yli sata erilaista laatua,
+
+13
+00:00:49,960 --> 00:00:53,574
+ja niiden välinen yhteensopivuus on puutteellista.
+
+14
+00:00:53,574 --> 00:00:58,469
+Tämä on luonut tarpeen "Yhtenäiselle Työvuokielelle", jonka johdosta CWL projekti käynnistettiin.
+
+15
+00:00:58,469 --> 00:01:05,519
+CWL:n tehtävänä on luoda yhtenäinen tapa kuvata työvoita YAML tiedostorakenteella.
+
diff --git a/assets/video/subtitles/srt/french.srt b/assets/video/subtitles/srt/french.srt
new file mode 100644
index 00000000..85f3218c
--- /dev/null
+++ b/assets/video/subtitles/srt/french.srt
@@ -0,0 +1,71 @@
+1
+00:00:00,000 --> 00:00:03,629
+Dans de nombreux domaines scientifiques tels que
+bio-informatique, l'imagerie médicale, et
+
+2
+00:00:03,629 --> 00:00:06,299
+l'astronomie
+de grandes quantités de données doivent être
+
+3
+00:00:06,299 --> 00:00:10,769
+analysées. Celà peut impliquer des processus répétitifs
+et à grande échelle dans des enchaînements
+
+4
+00:00:10,769 --> 00:00:15,240
+longs de différents outils - appelés workflows. Il peut être très long de traiter de telles données avec tous
+
+5
+00:00:15,240 --> 00:00:18,930
+ces différents outils et convertir les données produites en divers formats, afin de les rendre compatibles avec
+
+6
+00:00:18,930 --> 00:00:21,949
+l'étape suivante.
+
+7
+00:00:21,949 --> 00:00:26,130
+Les systèmes de gestion de workflow sont conçus pour atténuer ce problème, en permettant de les définir
+
+8
+00:00:26,130 --> 00:00:30,090
+formellement et de fournir des infrastructures pour les installer, les exécuter et de les monitorer.
+
+9
+00:00:30,090 --> 00:00:34,290
+Cette formalisation des workflows permet aux scientifiques de les partager facilement et de les
+
+10
+00:00:34,290 --> 00:00:38,399
+réutiliser. Leur utilisation est également très importante pour vérifier les résultats de calcul pour les travaux
+
+11
+00:00:38,399 --> 00:00:43,110
+publiés. Cependant, il existe de nombreuses approches différentes pour décrire ces workflows, ce qui constitue
+
+12
+00:00:43,110 --> 00:00:46,579
+un obstacle à ces objectifs.
+
+13
+00:00:46,579 --> 00:00:50,399
+Actuellement, il y a plus d'une centaine de différents systèmes de workflow d'analyse des données
+
+14
+00:00:50,399 --> 00:00:55,020
+non-interopérables.Le besoin d'une seule norme commune est apparu, et le projet
+
+15
+00:00:55,020 --> 00:00:58,469
+« Common Language Workflow » a été créé pour y répondre: un standard ouvert, conçu pour décrire les
+
+16
+00:00:58,469 --> 00:01:02,430
+workflows et les outils qu'ils utilisent, dans des groupes
+
+17
+00:01:02,430 --> 00:01:05,539
+de fichiers texte structurés au format YAML.
+
diff --git a/assets/video/subtitles/srt/japanese.srt b/assets/video/subtitles/srt/japanese.srt
new file mode 100644
index 00000000..d344a193
--- /dev/null
+++ b/assets/video/subtitles/srt/japanese.srt
@@ -0,0 +1,69 @@
+1
+00:00:00,000 --> 00:00:03,629
+バイオインフォマティクス、医療用画像、天文学など多くの科学分野で、
+
+2
+00:00:03,629 --> 00:00:06,299
+大量のデータを分析する必要があります。
+
+3
+00:00:06,299 --> 00:00:10,769
+データ分析では、
+
+4
+00:00:10,769 --> 00:00:15,240
+ワークフローと呼ばれる複数のツールからなるパイプライン処理を大規模なデータに対して反復的に実行することがあります。
+
+5
+00:00:15,240 --> 00:00:18,930
+データに対して異なるツールを手作業で実行することや、 各ツールの出力を次のツールの入力形式に変換する作業は、
+
+6
+00:00:18,930 --> 00:00:21,949
+非常に時間がかかる作業です。
+
+7
+00:00:21,949 --> 00:00:26,130
+ワークフロー管理システムは、ワークフローを形式的に表現し、
+
+8
+00:00:26,130 --> 00:00:30,090
+ワークフローのセットアップ、実行、監視を行うことで、これらの問題を軽減します。
+
+9
+00:00:30,090 --> 00:00:34,290
+ワークフローを形式的に表現することで、研究者の間でワークフローを共有、
+
+10
+00:00:34,290 --> 00:00:38,399
+再利用することが簡単になります。
+さらに、この形式化されたワークフローは、
+
+11
+00:00:38,399 --> 00:00:43,110
+論文で発表された計算結果の検証にも使用できます。
+
+12
+00:00:43,110 --> 00:00:46,579
+しかしワークフローを記述する表現方法は数多くあるため、この目的は達成できていません。
+
+13
+00:00:46,579 --> 00:00:50,399
+現在、数百種類以上のデータ解析ワークフローシステムがありますが、
+
+14
+00:00:50,399 --> 00:00:55,020
+それらの間には相互運用性がありません。
+
+15
+00:00:55,020 --> 00:00:58,469
+単一の共通の規格が必要なため、「Common Workflow Language」プロジェクトが始まりました:
+
+16
+00:00:58,469 --> 00:01:02,430
+Common Workflow Language は、 YAML フォーマットのファイル群で
+
+17
+00:01:02,430 --> 00:01:05,539
+ワークフローとツールを表現するオープンな規格です。
+
diff --git a/assets/video/subtitles/srt/lithuanian.srt b/assets/video/subtitles/srt/lithuanian.srt
new file mode 100644
index 00000000..84ed51b1
--- /dev/null
+++ b/assets/video/subtitles/srt/lithuanian.srt
@@ -0,0 +1,68 @@
+1
+00:00:00,000 --> 00:00:03,629
+Daugelyje mokslo sričių (bioinformatikos, medicinos vizualizacijos, astronomijos)
+
+2
+00:00:03,629 --> 00:00:06,299
+prireikia analizuoti milžiniškus duomenų
+
+3
+00:00:06,299 --> 00:00:10,769
+kiekius. Tam gali tekti kartoti ilgus procesus, išrikiuotus į įvairių įrankių sekas
+
+4
+00:00:10,769 --> 00:00:15,240
+- vadinamuosius darbo srautus (workflows). Apdoroti
+
+5
+00:00:15,240 --> 00:00:18,930
+duomenis skirtingais analizės įrankiais rankiniu būdu ir konvertuoti rezultatus į įvairius formatus tam,
+
+6
+00:00:18,930 --> 00:00:21,949
+kad jie tiktų kitam žingsniui, gali užtrukti daug laiko.
+
+7
+00:00:21,949 --> 00:00:26,130
+Šiai problemai spręsti kuriamos darbo srautų valdymo sistemos (workflow management systems),
+
+8
+00:00:26,130 --> 00:00:30,090
+leidžiančios šiuos srautus formalizuoti ir siūlančios infrastruktūrą jiems išdėstyti,
+
+9
+00:00:30,090 --> 00:00:34,290
+vykdyti ir stebėti. Tokia formalizuota išraiška leidžia
+
+10
+00:00:34,290 --> 00:00:38,399
+mokslininkams lengvai dalintis savo darbo srautais ir pakartotinai juos naudoti.
+
+11
+00:00:38,399 --> 00:00:43,110
+Svarbiausia, šitaip galima patikrinti skaičiavimų rezultatus prieš juos publikuojant. Vis dėlto egzistuoja
+
+12
+00:00:43,110 --> 00:00:46,579
+daugybė tarpusavyje nesuderinamų darbo srautų aprašymo būdų ir tai yra kliūtis šiam tikslui pasiekti.
+
+13
+00:00:46,579 --> 00:00:50,399
+Šiuo metu naudojama per šimtą įvairių duomenų analizės darbo srautų sistemų,
+
+14
+00:00:50,399 --> 00:00:55,020
+kurios nėra tarpusavyje suderinamos. Reikalingas vienas bendras standartas,
+
+15
+00:00:55,020 --> 00:00:58,469
+taigi taip ir prasidėjo “Bendros darbo srautų kalbos” projektas: siekiant sukurti atvirą standartą,
+
+16
+00:00:58,469 --> 00:01:02,430
+leisiantį aprašyti darbo srautus ir jų įrankius tiek žmogui,
+
+17
+00:01:02,430 --> 00:01:05,539
+tiek kompiuteriui suprantamų failų grupėmis.
+
diff --git a/assets/video/subtitles/srt/romanian.srt b/assets/video/subtitles/srt/romanian.srt
new file mode 100644
index 00000000..cb9cbe7a
--- /dev/null
+++ b/assets/video/subtitles/srt/romanian.srt
@@ -0,0 +1,70 @@
+1
+00:00:00,000 --> 00:00:03,629
+În multe domenii științifice (bioinformatică, imagistică medicală și astronomie)
+
+2
+00:00:03,629 --> 00:00:06,299
+este necesară analiza unor cantități mari de informații.
+
+3
+00:00:06,299 --> 00:00:10,769
+Aceasta implică frecvent procesarea complexă și repetitivă a datelor în cadrul unor fluxuri de lucru
+
+4
+00:00:10,769 --> 00:00:15,240
+(„workflows”) ce utilizează diferite instrumente software într-o anumită succesiune.
+
+5
+00:00:15,240 --> 00:00:18,930
+Rularea manuală a datelor prin toate aceste instrumente și convertirea rezultatelor in formate compatibile cu
+
+6
+00:00:18,930 --> 00:00:21,949
+etapele următoare sunt mari consumatoare de timp.
+
+7
+00:00:21,949 --> 00:00:26,130
+Sistemele de management al fluxului de lucru („workflow management”) sunt concepute pentru
+
+8
+00:00:26,130 --> 00:00:30,090
+a ameliora această problemă, prin exprimarea formală a acestor fluxuri de lucru și prin furnizarea infrastructurii
+
+9
+00:00:30,090 --> 00:00:34,290
+necesare pentru a le configura, executa și monitoriza.
+Formalizarea fluxurilor de lucru permite cercetătorilor să
+
+10
+00:00:34,290 --> 00:00:38,399
+le partajeze și să le reutilizeze cu ușurință și, în special, să verifice rezultatele publicate ale unor analize de date.
+
+11
+00:00:38,399 --> 00:00:43,110
+Există însă mai multe alternative pentru a descrie fluxurile de analiză bioinformatică, aspect care limitează
+
+12
+00:00:43,110 --> 00:00:46,579
+posibilitatea utilizării lor în scopurile menționate.
+
+13
+00:00:46,579 --> 00:00:50,399
+În prezent, sunt peste o sută de sisteme de management al fluxurilor de lucru, cel mai frecvent
+
+14
+00:00:50,399 --> 00:00:55,020
+fără interoperabilitate între ele.
+A apărut deci necesitatea de a avea un singur standard
+
+15
+00:00:55,020 --> 00:00:58,469
+comun, fiind astfel creat proiectul „Common Workflow Language” (CWL - limbaj comun pentru fluxuri de lucru):
+
+16
+00:00:58,469 --> 00:01:02,430
+un standard deschis, conceput pentru a descrie fluxurile și instrumentele lor de lucru în fișiere
+
+17
+00:01:02,430 --> 00:01:05,539
+de text structurat YAML.
+
diff --git a/assets/video/subtitles/srt/russian.srt b/assets/video/subtitles/srt/russian.srt
new file mode 100644
index 00000000..34e96ac1
--- /dev/null
+++ b/assets/video/subtitles/srt/russian.srt
@@ -0,0 +1,68 @@
+1
+00:00:00,000 --> 00:00:03,629
+В разных научных областях, таких, как биоинформатика, медицинская визуализация
+
+2
+00:00:03,629 --> 00:00:06,299
+и астрономия, существует потребность в анализе больших объёмов данных.
+
+3
+00:00:06,299 --> 00:00:10,769
+Такой анализ включает крупномасштабные и повторяющиеся процессы в длинных
+
+4
+00:00:10,769 --> 00:00:15,240
+конвеерах разных инструментов, которые обобщаются как рабочие процессы.
+
+5
+00:00:15,240 --> 00:00:18,930
+Запуск данных вручную через все инструменты и конвертация
+
+6
+00:00:18,930 --> 00:00:21,949
+результатов в разные форматы для совместимости со следующим шагом может быть очень трудоёмкой задачей.
+
+7
+00:00:21,949 --> 00:00:26,130
+Системы управления рабочими процессами разработаны для облегчения этой проблемы, предоставляя
+
+8
+00:00:26,130 --> 00:00:30,090
+формальное выражение рабочих процессов, и также инфраструктуру для запуска,
+
+9
+00:00:30,090 --> 00:00:34,290
+выполнения и их мониторинга. Такое формальное выражение рабочих процессов позволяет
+
+10
+00:00:34,290 --> 00:00:38,399
+учёным легко ими делиться и использовать их повторно. Чрезвычайно важно то, что они также могут быть использованы для
+
+11
+00:00:38,399 --> 00:00:43,110
+проверки результатов исчислений в опубликованных работах. Однако, существует много
+
+12
+00:00:43,110 --> 00:00:46,579
+конкурирующих способов описания рабочих процессов, что является препяствием к этой цели.
+
+13
+00:00:46,579 --> 00:00:50,399
+На данный момент, существует около сотни разных систем рабочих процессов для анализа данных,
+
+14
+00:00:50,399 --> 00:00:55,020
+у которых отсуствует любое взаимодействие. Таким образом возникла потребность в едином
+
+15
+00:00:55,020 --> 00:00:58,469
+общем стандарте, и так был создан проект "Общий Язык Рабочих Процессов" -
+
+16
+00:00:58,469 --> 00:01:02,430
+открытый стандарт, разработанный для выражения рабочих процессов и их инструментов в группах
+
+17
+00:01:02,430 --> 00:01:05,539
+структурированных текстовых файлов YAML.
+
diff --git a/assets/video/subtitles/srt/ukranian.srt b/assets/video/subtitles/srt/ukranian.srt
new file mode 100644
index 00000000..6705d7f1
--- /dev/null
+++ b/assets/video/subtitles/srt/ukranian.srt
@@ -0,0 +1,68 @@
+1
+00:00:00,000 --> 00:00:03,629
+У багатьох наукових областях, таких, як біоінформатика, медична візуалізація
+
+2
+00:00:03,629 --> 00:00:06,299
+й астрономія, обробляються великі масиви даних.
+
+3
+00:00:06,299 --> 00:00:10,769
+Обробка може включати великомасштабні та повторювані процеси
+
+4
+00:00:10,769 --> 00:00:15,240
+у довгих "конвеєрах" - робочих процесах, - які складаються з різних інструментів.
+
+5
+00:00:15,240 --> 00:00:18,930
+Запуск даних вручну для усіх цих різних інструментів та конвертація результатів
+
+6
+00:00:18,930 --> 00:00:21,949
+у різні формати для сумісності з наступним кроком можуть бути дуже трудомісткими.
+
+7
+00:00:21,949 --> 00:00:26,130
+Системи управління робочими процесами створені, щоб полегшити цю проблему. Вони дозволяють
+
+8
+00:00:26,130 --> 00:00:30,090
+формальне вираження для цих робочих процесів та надають інфраструктуру для їх підготовки,
+
+9
+00:00:30,090 --> 00:00:34,290
+виконання та моніторингу. Це формальне вираження робочих процесів дозволяє
+
+10
+00:00:34,290 --> 00:00:38,399
+науковцям легко поширювати та використовувати їх. Надзвичайно важливо те, що вони також можуть використовуватися
+
+11
+00:00:38,399 --> 00:00:43,110
+для перевірки результатів обчислень в опублікованих роботах. Однак, існує багато
+
+12
+00:00:43,110 --> 00:00:46,579
+конкуруючих способів опису робочих процесів, що є перешкодою на шляху до цієї цілі.
+
+13
+00:00:46,579 --> 00:00:50,399
+На даний час існує близько сотні різних систем робочих процесів для аналізу даних
+
+14
+00:00:50,399 --> 00:00:55,020
+без жодної взаємодії між ними. Виросла потреба у єдиному
+
+15
+00:00:55,020 --> 00:00:58,469
+спільному стандарті, тож було створено проект "Спільна Мова Робочих Процесів" -
+
+16
+00:00:58,469 --> 00:01:02,430
+відкритий стандарт, розроблений для вираження робочих процесів та їх інструментів групами
+
+17
+00:01:02,430 --> 00:01:05,539
+структурованих текстових файлів YAML.
+
diff --git a/assets/video/subtitles/srt/urdu.srt b/assets/video/subtitles/srt/urdu.srt
new file mode 100644
index 00000000..cb3a0b49
--- /dev/null
+++ b/assets/video/subtitles/srt/urdu.srt
@@ -0,0 +1,68 @@
+1
+00:00:00,000 --> 00:00:03,629
+بہت سے سائنسی شعبوں (جیسے بایو انفارمیٹکس، طبی امیجنگ، اور فلکیات) میں
+
+2
+00:00:03,629 --> 00:00:06,299
+ڈیٹا کی بڑی مقدار کا تجزیہ کیا جانے کی ضرورت ہے.
+
+3
+00:00:06,299 --> 00:00:10,769
+اس میں مختلف ٹولز سے بڑے پیمانے پر اور بار بار عمل کو شامل کیا جاتا ہے -
+
+4
+00:00:10,769 --> 00:00:15,240
+جسے ورکفلو کہتے ھیں۔
+
+5
+00:00:15,240 --> 00:00:18,930
+ان مختلف ٹولز کے زریعے ڈیٹا کو خود سے چلانے اور نتائج کو ہم آہنگ بنانے کے لئے
+
+6
+00:00:18,930 --> 00:00:21,949
+مختلف شکل میں تبدیل کرنے کی ضرورت ہوتی ھے، جس میں بہت زیادہ وقت درکار ہوتا ہے۔
+
+7
+00:00:21,949 --> 00:00:26,130
+ورکفلو مےنیجمنٹ سیسٹم (ورکفلو کے نظام کا انتظام) کو اس مسعلے کو ختم کرنے کے لئے بنایا گیا ہے
+
+8
+00:00:26,130 --> 00:00:30,090
+تاکے ورکفلوز کو باضابطہ طور پر بنایا جا سکے اور ایسا ڈھانچا بھی مہیا لیا جائے، جس سے ان ورکفلوز کی نگرانی
+
+9
+00:00:30,090 --> 00:00:34,290
+اور عملدرآمد بھی گیا جا سکے. اس طرح سے ورکفلوز کے رسمی اظہار سے
+
+10
+00:00:34,290 --> 00:00:38,399
+ساءنسدان ان کو آسانی سے اشتراک اور دوبارہ استعمال کر سکتے ھیں۔ اہم طور پر ورکفلو مےنیجمنٹ سیسٹم (ورکفلو کے نظام کا انتظام)
+
+11
+00:00:38,399 --> 00:00:43,110
+کو کمپیوٹیشن کے شاءع نتاءج کی تصدیق کرنے کے لئے بھی استعمال کیا جا سکتا ھے۔ البتہ بہت سے طریقوں سے
+
+12
+00:00:43,110 --> 00:00:46,579
+ورکفلوز کو بنایا جا سکتا ھے، جو کہ اس کام میں رکاوٹ ہے۔
+
+13
+00:00:46,579 --> 00:00:50,399
+فیالحال کوئ سو کے قریب ورکفلو مےنیجمنٹ سیسٹم (ورکفلو کے نظام کا انتظام) موجود ھیں
+
+14
+00:00:50,399 --> 00:00:55,020
+جن کے درمیان کوئی انٹرآپربلٹی نہیں۔ چنانچہ اس بات کی ضرورت پیدا ہوتی ھے کہ
+
+15
+00:00:55,020 --> 00:00:58,469
+کوئی معیار بنایا جئے اور اسی لئے عام ورکفلو زبان کو بنایا گیا:
+
+16
+00:00:58,469 --> 00:01:02,430
+ایک ایسا کھلا (اوپن) معیار جسے ورکفلوز اور ٹولز کو یامل ساختہ ٹیکسٹ فاءلوں
+
+17
+00:01:02,430 --> 00:01:05,539
+کی صورت میں بنایا جا سکتا ھے۔
+
diff --git a/assets/video/subtitles/uk.vtt b/assets/video/subtitles/uk.vtt
new file mode 100644
index 00000000..d56adb13
--- /dev/null
+++ b/assets/video/subtitles/uk.vtt
@@ -0,0 +1,52 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+У багатьох наукових областях, таких, як біоінформатика, медична візуалізація
+
+00:00:03.629 --> 00:00:06.299
+й астрономія, обробляються великі масиви даних.
+
+00:00:06.299 --> 00:00:10.769
+Обробка може включати великомасштабні та повторювані процеси
+
+00:00:10.769 --> 00:00:15.240
+у довгих "конвеєрах" - робочих процесах, - які складаються з різних інструментів.
+
+00:00:15.240 --> 00:00:18.930
+Запуск даних вручну для усіх цих різних інструментів та конвертація результатів
+
+00:00:18.930 --> 00:00:21.949
+у різні формати для сумісності з наступним кроком можуть бути дуже трудомісткими.
+
+00:00:21.949 --> 00:00:26.130
+Системи управління робочими процесами створені, щоб полегшити цю проблему. Вони дозволяють
+
+00:00:26.130 --> 00:00:30.090
+формальне вираження для цих робочих процесів та надають інфраструктуру для їх підготовки,
+
+00:00:30.090 --> 00:00:34.290
+виконання та моніторингу. Це формальне вираження робочих процесів дозволяє
+
+00:00:34.290 --> 00:00:38.399
+науковцям легко поширювати та використовувати їх. Надзвичайно важливо те, що вони також можуть використовуватися
+
+00:00:38.399 --> 00:00:43.110
+для перевірки результатів обчислень в опублікованих роботах. Однак, існує багато
+
+00:00:43.110 --> 00:00:46.579
+конкуруючих способів опису робочих процесів, що є перешкодою на шляху до цієї цілі.
+
+00:00:46.579 --> 00:00:50.399
+На даний час існує близько сотні різних систем робочих процесів для аналізу даних
+
+00:00:50.399 --> 00:00:55.020
+без жодної взаємодії між ними. Виросла потреба у єдиному
+
+00:00:55.020 --> 00:00:58.469
+спільному стандарті, тож було створено проект "Спільна Мова Робочих Процесів" -
+
+00:00:58.469 --> 00:01:02.430
+відкритий стандарт, розроблений для вираження робочих процесів та їх інструментів групами
+
+00:01:02.430 --> 00:01:05.539
+структурованих текстових файлів YAML.
diff --git a/assets/video/subtitles/ur.vtt b/assets/video/subtitles/ur.vtt
new file mode 100644
index 00000000..d62df8ed
--- /dev/null
+++ b/assets/video/subtitles/ur.vtt
@@ -0,0 +1,52 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+بہت سے سائنسی شعبوں (جیسے بایو انفارمیٹکس، طبی امیجنگ، اور فلکیات) میں
+
+00:00:03.629 --> 00:00:06.299
+ڈیٹا کی بڑی مقدار کا تجزیہ کیا جانے کی ضرورت ہے.
+
+00:00:06.299 --> 00:00:10.769
+اس میں مختلف ٹولز سے بڑے پیمانے پر اور بار بار عمل کو شامل کیا جاتا ہے -
+
+00:00:10.769 --> 00:00:15.240
+جسے ورکفلو کہتے ھیں۔
+
+00:00:15.240 --> 00:00:18.930
+ان مختلف ٹولز کے زریعے ڈیٹا کو خود سے چلانے اور نتائج کو ہم آہنگ بنانے کے لئے
+
+00:00:18.930 --> 00:00:21.949
+مختلف شکل میں تبدیل کرنے کی ضرورت ہوتی ھے، جس میں بہت زیادہ وقت درکار ہوتا ہے۔
+
+00:00:21.949 --> 00:00:26.130
+ورکفلو مےنیجمنٹ سیسٹم (ورکفلو کے نظام کا انتظام) کو اس مسعلے کو ختم کرنے کے لئے بنایا گیا ہے
+
+00:00:26.130 --> 00:00:30.090
+تاکے ورکفلوز کو باضابطہ طور پر بنایا جا سکے اور ایسا ڈھانچا بھی مہیا لیا جائے، جس سے ان ورکفلوز کی نگرانی
+
+00:00:30.090 --> 00:00:34.290
+اور عملدرآمد بھی گیا جا سکے. اس طرح سے ورکفلوز کے رسمی اظہار سے
+
+00:00:34.290 --> 00:00:38.399
+ساءنسدان ان کو آسانی سے اشتراک اور دوبارہ استعمال کر سکتے ھیں۔ اہم طور پر ورکفلو مےنیجمنٹ سیسٹم (ورکفلو کے نظام کا انتظام)
+
+00:00:38.399 --> 00:00:43.110
+کو کمپیوٹیشن کے شاءع نتاءج کی تصدیق کرنے کے لئے بھی استعمال کیا جا سکتا ھے۔ البتہ بہت سے طریقوں سے
+
+00:00:43.110 --> 00:00:46.579
+ورکفلوز کو بنایا جا سکتا ھے، جو کہ اس کام میں رکاوٹ ہے۔
+
+00:00:46.579 --> 00:00:50.399
+فیالحال کوئ سو کے قریب ورکفلو مےنیجمنٹ سیسٹم (ورکفلو کے نظام کا انتظام) موجود ھیں
+
+00:00:50.399 --> 00:00:55.020
+جن کے درمیان کوئی انٹرآپربلٹی نہیں۔ چنانچہ اس بات کی ضرورت پیدا ہوتی ھے کہ
+
+00:00:55.020 --> 00:00:58.469
+کوئی معیار بنایا جئے اور اسی لئے عام ورکفلو زبان کو بنایا گیا:
+
+00:00:58.469 --> 00:01:02.430
+ایک ایسا کھلا (اوپن) معیار جسے ورکفلوز اور ٹولز کو یامل ساختہ ٹیکسٹ فاءلوں
+
+00:01:02.430 --> 00:01:05.539
+کی صورت میں بنایا جا سکتا ھے۔
diff --git a/assets/video/subtitles/zh-Hans.vtt b/assets/video/subtitles/zh-Hans.vtt
new file mode 100644
index 00000000..3d933b4e
--- /dev/null
+++ b/assets/video/subtitles/zh-Hans.vtt
@@ -0,0 +1,52 @@
+WEBVTT
+
+00:00:00.000 --> 00:00:03.629
+在许多科学领域(例如生物信息学,医学成像和天文学)
+
+00:00:03.629 --> 00:00:06.299
+中,需要分析大量的数据。
+
+00:00:06.299 --> 00:00:10.769
+在很长的流水线中运用不同的工具会涉及许多大规模和重复性流程
+
+00:00:10.769 --> 00:00:15.240
+(称为工作流程)。
+
+00:00:15.240 --> 00:00:18.930
+手动导入数据到这些不同工具的数据,
+
+00:00:18.930 --> 00:00:21.949
+并将其输出转换为不同的格式使其与下一步兼容,将会非常耗时。
+
+00:00:21.949 --> 00:00:26.130
+工作流管理系统旨在通过允许这些工作流程有条理的表达并提供基础设施来设立,
+
+00:00:26.130 --> 00:00:30.090
+执行和监视这些工作流来缓解此问题。
+
+00:00:30.090 --> 00:00:34.290
+这种工作流的正式表达允许科学家轻松地共享和重用它们。
+
+00:00:34.290 --> 00:00:38.399
+关键的是,它们也可用于去验证那些已发布工作的计算结果。
+
+00:00:38.399 --> 00:00:43.110
+然而,
+
+00:00:43.110 --> 00:00:46.579
+有许多相互争论的方法来描述工作流程,这是对目标实现的障碍。
+
+00:00:46.579 --> 00:00:50.399
+目前,有超过一百种不同的数据分析工作流系统之间没有互操作性。
+
+00:00:50.399 --> 00:00:55.020
+我们需要有一个共同的标准,
+
+00:00:55.020 --> 00:00:58.469
+因此创建了“通用工作流程语言”项目:
+
+00:00:58.469 --> 00:01:02.430
+一个开放标准,
+
+00:01:02.430 --> 00:01:05.539
+旨在表达工作流程及其在YAML结构化文本文件组中的工具。
diff --git a/code-of-conduct/index.html b/code-of-conduct/index.html
new file mode 100644
index 00000000..d6065f99
--- /dev/null
+++ b/code-of-conduct/index.html
@@ -0,0 +1,253 @@
+
+
+
Code of Conduct | Common Workflow Language (CWL)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+