{ "version": 3, "sources": ["../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/webpack/universalModuleDefinition", "../../../node_modules/clappr/dist/webpack:/Clappr/webpack/bootstrap", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/array/from.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/get-iterator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/json/stringify.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/object/assign.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/object/create.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/object/define-property.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/object/keys.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/object/set-prototype-of.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/symbol.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/core-js/symbol/iterator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/helpers/classCallCheck.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/helpers/createClass.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/helpers/extends.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/helpers/inherits.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/helpers/possibleConstructorReturn.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/helpers/toConsumableArray.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/babel-runtime/helpers/typeof.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/clappr-zepto/zepto.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/array/from.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/get-iterator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/json/stringify.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/object/assign.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/object/create.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/object/define-property.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/object/get-own-property-descriptor.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/object/keys.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/object/set-prototype-of.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/symbol/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/fn/symbol/iterator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_a-function.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_add-to-unscopables.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_an-object.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_array-includes.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_classof.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_cof.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_core.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_create-property.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_ctx.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_defined.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_descriptors.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_dom-create.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_enum-bug-keys.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_enum-keys.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_export.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_fails.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_global.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_has.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_hide.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_html.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_ie8-dom-define.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_iobject.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_is-array-iter.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_is-array.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_is-object.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_iter-call.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_iter-create.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_iter-define.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_iter-detect.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_iter-step.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_iterators.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_keyof.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_library.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_meta.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-assign.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-create.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-dp.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-dps.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-gopd.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-gopn-ext.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-gopn.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-gops.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-gpo.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-keys-internal.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-keys.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-pie.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_object-sap.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_property-desc.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_redefine.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_set-proto.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_set-to-string-tag.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_shared-key.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_shared.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_string-at.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_to-index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_to-integer.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_to-iobject.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_to-length.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_to-object.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_to-primitive.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_uid.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_wks-define.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_wks-ext.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/_wks.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/core.get-iterator-method.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/core.get-iterator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.array.from.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.array.iterator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.object.assign.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.object.create.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.object.define-property.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.object.keys.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.object.set-prototype-of.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.string.iterator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es6.symbol.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es7.symbol.async-iterator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/es7.symbol.observable.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/core-js/library/modules/web.dom.iterable.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/container/public/style.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/core/public/style.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/base_flash_playback/public/flash.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html5_video/public/style.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html_img/public/style.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/no_op/public/style.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/closed_captions/public/closed_captions.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/dvr_controls/public/dvr_controls.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/error_screen/public/error_screen.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/media_control/public/media-control.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/poster/public/poster.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/seek_time/public/seek_time.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/spinner_three_bounce/public/spinner.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/watermark/public/watermark.scss", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/css-loader/lib/css-base.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/css-loader/lib/url/escape.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/hls.js/dist/hls.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/node-libs-browser/node_modules/process/browser.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/style-loader/lib/addStyles.js", "../../../node_modules/clappr/dist/webpack:/Clappr/node_modules/style-loader/lib/urls.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/base_object.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/container_plugin.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/core_plugin.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/error_mixin.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/events.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/media.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/playback.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/polyfills.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/styler.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/svg_icons.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/template.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/ui_container_plugin.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/ui_core_plugin.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/ui_object.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/base/utils.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/browser/browser.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/browser/browser_data.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/browser/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/browser/os_data.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/container/container.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/container/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/container/public/style.scss?95d1", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/container_factory/container_factory.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/container_factory/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/core/core.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/core/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/core/public/Roboto.ttf", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/core/public/fonts.css", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/core/public/style.scss?8953", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/core_factory/core_factory.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/core_factory/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/error/error.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/error/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/loader/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/loader/loader.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/mediator.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/player.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/components/player_info.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/01-play.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/02-pause.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/03-stop.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/04-volume.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/05-mute.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/06-expand.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/07-shrink.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/08-hd.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/09-cc.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/icons/10-reload.svg", "../../../node_modules/clappr/dist/webpack:/Clappr/src/main.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/base_flash_playback/base_flash_playback.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/base_flash_playback/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/base_flash_playback/public/flash.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/base_flash_playback/public/flash.scss?755c", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/flash/flash.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/flash/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/flash/public/Player.swf", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/flashls/flashls.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/flashls/flashls_events.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/flashls/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/flashls/public/HLSPlayer.swf", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/hls/hls.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/hls/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html5_audio/html5_audio.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html5_audio/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html5_video/html5_video.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html5_video/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html5_video/public/style.scss?2192", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html5_video/public/tracks.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html_img/html_img.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html_img/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/html_img/public/style.scss?714a", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/no_op/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/no_op/no_op.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/no_op/public/error.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/playbacks/no_op/public/style.scss?94d5", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/click_to_pause/click_to_pause.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/click_to_pause/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/closed_captions/closed_captions.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/closed_captions/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/closed_captions/public/closed_captions.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/closed_captions/public/closed_captions.scss?7ec4", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/dvr_controls/dvr_controls.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/dvr_controls/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/dvr_controls/public/dvr_controls.scss?4e38", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/dvr_controls/public/index.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/end_video.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/error_screen/error_screen.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/error_screen/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/error_screen/public/error_screen.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/error_screen/public/error_screen.scss?538d", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/favicon/favicon.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/favicon/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/google_analytics/google_analytics.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/google_analytics/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/log/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/log/log.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/media_control/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/media_control/media_control.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/media_control/public/closed-hand.cur", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/media_control/public/media-control.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/media_control/public/media-control.scss?c915", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/poster/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/poster/poster.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/poster/public/poster.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/poster/public/poster.scss?0aad", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/seek_time/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/seek_time/public/seek_time.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/seek_time/public/seek_time.scss?97b9", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/seek_time/seek_time.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/sources.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/spinner_three_bounce/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/spinner_three_bounce/public/spinner.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/spinner_three_bounce/public/spinner.scss?9c79", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/spinner_three_bounce/spinner_three_bounce.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/stats/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/stats/stats.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/strings.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/watermark/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/watermark/public/watermark.html", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/watermark/public/watermark.scss?093c", "../../../node_modules/clappr/dist/webpack:/Clappr/src/plugins/watermark/watermark.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/vendor/index.js", "../../../node_modules/clappr/dist/webpack:/Clappr/src/vendor/kibo.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/webpack/universalModuleDefinition", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/clappr.min.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/webpack/bootstrap 9e9368ed93ef0f43e043", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/main.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/events.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/events.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/utils.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/utils/logger.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/errors.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/clappr-zepto/zepto.min.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/playback.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/styler.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/template.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/css-loader/lib/css-base.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/browser.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/event-handler.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/base_object.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/ui_object.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash.find/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/mediator.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/(webpack)/buildin/module.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/container_plugin.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/core_plugin.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/ui_container_plugin.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/player_info.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html5_video/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/base/ui_core_plugin.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/base_flash_playback/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/log/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/vendor/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/icons/01-play.svg", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/events/events.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/demux/adts.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/demux/demuxer-inline.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/helper/buffer-helper.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._baseiteratee/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._stringtopath/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/process/browser.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/container/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/core/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/loader/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/media_control/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/flash/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/flashls/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/hls/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html5_audio/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html_img/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/no_op/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/poster/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/icons/02-pause.svg", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/media_control/public/closed-hand.cur", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/controller/abr-controller.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/controller/buffer-controller.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/controller/cap-level-controller.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/controller/ewma-bandwidth-estimator.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/controller/level-controller.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/controller/stream-controller.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/controller/timeline-controller.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/crypt/aes.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/crypt/aes128-decrypter.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/crypt/decrypter.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/demux/aacdemuxer.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/demux/demuxer-worker.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/demux/demuxer.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/demux/exp-golomb.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/demux/id3.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/demux/tsdemuxer.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/helper/level-helper.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/hls.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/loader/fragment-loader.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/loader/key-loader.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/loader/playlist-loader.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/remux/mp4-generator.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/remux/mp4-remuxer.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/remux/passthrough-remuxer.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/utils/attr-list.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/utils/binary-search.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/utils/cea-708-interpreter.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/utils/ewma.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/utils/url.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/hls.js/lib/utils/xhr-loader.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._baseeach/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._basefind/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._basefindindex/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._baseuniq/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._createset/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._root/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash._stringtopath/~/lodash._basetostring/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash.before/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash.isplainobject/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash.once/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash.result/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/lodash.uniqby/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/~/webworkify-webpack/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/container/container.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/container_factory/container_factory.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/container_factory/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/core/core.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/core_factory/core_factory.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/core_factory/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/loader/loader.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/media_control/media_control.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/player.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/base_flash_playback/base_flash_playback.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/flash/flash.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/flashls/flashls.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/flashls/flashls_events.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/hls/hls.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html5_audio/html5_audio.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html5_video/html5_video.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html_img/html_img.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/no_op/no_op.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/click_to_pause/click_to_pause.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/click_to_pause/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/dvr_controls/dvr_controls.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/dvr_controls/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/end_video.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/favicon/favicon.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/favicon/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/google_analytics/google_analytics.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/google_analytics/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/log/log.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/poster/poster.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/seek_time/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/seek_time/seek_time.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/sources.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/spinner_three_bounce/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/spinner_three_bounce/spinner_three_bounce.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/stats/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/stats/stats.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/watermark/index.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/watermark/watermark.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/vendor/kibo.js", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/container/public/style.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/core/public/style.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/media_control/public/media-control.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/base_flash_playback/public/flash.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html5_video/public/style.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html_img/public/style.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/no_op/public/style.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/dvr_controls/public/dvr_controls.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/poster/public/poster.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/seek_time/public/seek_time.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/spinner_three_bounce/public/spinner.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/watermark/public/watermark.scss", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/media_control/public/media-control.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/base_flash_playback/public/flash.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/html5_video/public/index.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/no_op/public/error.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/dvr_controls/public/index.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/poster/public/poster.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/seek_time/public/seek_time.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/spinner_three_bounce/public/spinner.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/plugins/watermark/public/watermark.html", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/icons/03-stop.svg", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/icons/04-volume.svg", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/icons/05-mute.svg", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/icons/06-expand.svg", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/icons/07-shrink.svg", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/icons/08-hd.svg", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/components/core/public/Roboto.ttf", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/flash/public/Player.swf", "../../../node_modules/clappr-video360/node_modules/clappr/dist/webpack:/src/playbacks/flashls/public/HLSPlayer.swf", "../../../node_modules/clappr-video360/dist/clappr-video360.min.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../../node_modules/stimulus-textarea-autogrow/dist/stimulus-textarea-autogrow.mjs", "../../javascript/controllers/accordion_controller.ts", "../../javascript/controllers/assessment_form_controller.ts", "../../javascript/controllers/ce_course.ts", "../../javascript/controllers/company_form_controller.ts", "../../javascript/controllers/confirm_controller.ts", "../../javascript/controllers/confirm_dialog_controller.ts", "../../javascript/controllers/content_selection_modal_controller.ts", "../../javascript/controllers/course_readings.ts", "../../javascript/controllers/enrollment.ts", "../../javascript/controllers/expand_controller.ts", "../../javascript/controllers/nav_controller.ts", "../../javascript/controllers/pdf_controller.ts", "../../javascript/controllers/question_form_controller.ts", "../../../node_modules/sortablejs/modular/sortable.esm.js", "../../javascript/controllers/quiz_form_controller.ts", "../../javascript/controllers/reading_form_controller.ts", "../../javascript/controllers/redirect_controller.ts", "../../javascript/controllers/scorm_form_controller.ts", "../../javascript/controllers/scorm_rte_controller.ts", "../../javascript/controllers/sign_up_controller.ts", "../../javascript/controllers/skill_form_controller.ts", "../../javascript/controllers/sortable_controller.ts", "../../../node_modules/stimulus-use/dist/index.js", "../../javascript/controllers/submit_on_change.ts", "../../javascript/controllers/tags_controller.ts", "../../../node_modules/trix/src/trix/config/attachments.js", "../../../node_modules/trix/src/trix/config/block_attributes.js", "../../../node_modules/trix/src/trix/config/browser.js", "../../../node_modules/trix/src/trix/config/lang.js", "../../../node_modules/trix/src/trix/config/file_size_formatting.js", "../../../node_modules/trix/src/trix/constants.js", "../../../node_modules/trix/src/trix/core/helpers/extend.js", "../../../node_modules/trix/src/trix/core/helpers/dom.js", "../../../node_modules/trix/src/trix/config/input.js", "../../../node_modules/trix/src/trix/config/key_names.js", "../../../node_modules/trix/src/trix/config/parser.js", "../../../node_modules/trix/src/trix/config/text_attributes.js", "../../../node_modules/trix/src/trix/config/toolbar.js", "../../../node_modules/trix/src/trix/config/undo.js", "../../../node_modules/trix/src/trix/config/css.js", "../../../node_modules/trix/src/trix/core/basic_object.js", "../../../node_modules/trix/src/trix/core/utilities/utf16_string.js", "../../../node_modules/trix/src/trix/core/object.js", "../../../node_modules/trix/src/trix/core/helpers/arrays.js", "../../../node_modules/trix/src/trix/core/helpers/bidi.js", "../../../node_modules/trix/src/trix/core/helpers/config.js", "../../../node_modules/trix/src/trix/core/helpers/custom_elements.js", "../../../node_modules/trix/src/trix/core/helpers/events.js", "../../../node_modules/trix/src/trix/core/helpers/functions.js", "../../../node_modules/trix/src/trix/core/helpers/objects.js", "../../../node_modules/trix/src/trix/core/helpers/ranges.js", "../../../node_modules/trix/src/trix/observers/selection_change_observer.js", "../../../node_modules/trix/src/trix/core/helpers/strings.js", "../../../node_modules/trix/src/trix/core/collections/hash.js", "../../../node_modules/trix/src/trix/core/collections/object_group.js", "../../../node_modules/trix/src/trix/core/collections/object_map.js", "../../../node_modules/trix/src/trix/core/collections/element_store.js", "../../../node_modules/trix/src/trix/core/utilities/operation.js", "../../../node_modules/trix/src/trix/views/object_view.js", "../../../node_modules/trix/src/trix/views/attachment_view.js", "../../../node_modules/trix/src/trix/views/previewable_attachment_view.js", "../../../node_modules/trix/src/trix/views/piece_view.js", "../../../node_modules/trix/src/trix/views/text_view.js", "../../../node_modules/trix/src/trix/views/block_view.js", "../../../node_modules/trix/src/trix/views/document_view.js", "../../../node_modules/trix/src/trix/models/piece.js", "../../../node_modules/trix/src/trix/operations/image_preload_operation.js", "../../../node_modules/trix/src/trix/models/attachment.js", "../../../node_modules/trix/src/trix/models/attachment_piece.js", "../../../node_modules/trix/src/trix/models/string_piece.js", "../../../node_modules/trix/src/trix/models/splittable_list.js", "../../../node_modules/trix/src/trix/models/text.js", "../../../node_modules/trix/src/trix/models/block.js", "../../../node_modules/trix/src/trix/models/document.js", "../../../node_modules/trix/src/trix/models/html_sanitizer.js", "../../../node_modules/trix/src/trix/models/html_parser.js", "../../../node_modules/trix/src/trix/core/serialization.js", "../../../node_modules/trix/src/trix/models/managed_attachment.js", "../../../node_modules/trix/src/trix/models/attachment_manager.js", "../../../node_modules/trix/src/trix/models/line_break_insertion.js", "../../../node_modules/trix/src/trix/models/composition.js", "../../../node_modules/trix/src/trix/models/undo_manager.js", "../../../node_modules/trix/src/trix/filters/filter.js", "../../../node_modules/trix/src/trix/filters/attachment_gallery_filter.js", "../../../node_modules/trix/src/trix/models/editor.js", "../../../node_modules/trix/src/trix/models/location_mapper.js", "../../../node_modules/trix/src/trix/models/point_mapper.js", "../../../node_modules/trix/src/trix/models/selection_manager.js", "../../../node_modules/trix/src/trix/controllers/attachment_editor_controller.js", "../../../node_modules/trix/src/trix/controllers/composition_controller.js", "../../../node_modules/trix/src/trix/controllers/controller.js", "../../../node_modules/trix/src/trix/observers/mutation_observer.js", "../../../node_modules/trix/src/trix/operations/file_verification_operation.js", "../../../node_modules/trix/src/trix/models/flaky_android_keyboard_detector.js", "../../../node_modules/trix/src/trix/controllers/input_controller.js", "../../../node_modules/trix/src/trix/controllers/level_0_input_controller.js", "../../../node_modules/trix/src/trix/controllers/level_2_input_controller.js", "../../../node_modules/trix/src/trix/controllers/toolbar_controller.js", "../../../node_modules/trix/src/trix/controllers/editor_controller.js", "../../../node_modules/trix/src/trix/elements/trix_toolbar_element.js", "../../../node_modules/trix/src/trix/elements/trix_editor_element.js", "../../../node_modules/trix/src/trix/trix.js", "../../javascript/controllers/text_editor_controller.ts", "../../javascript/controllers/track_role_toggle.ts", "../../javascript/controllers/update_checklist_controller.ts", "../../javascript/controllers/upload_preview.ts", "../../javascript/controllers/upload_progress_controller.ts", "../../javascript/controllers/vendor_form.ts", "../../javascript/controllers/video_controller.ts", "../../../node_modules/tailwindcss-stimulus-components/dist/tailwindcss-stimulus-components.module.js", "../../javascript/controllers/index.ts", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js", "../../../node_modules/turbo_power/dist/turbo_power.js", "../../javascript/application.ts"], "sourcesContent": ["export default {\n logger: typeof console !== \"undefined\" ? console : undefined,\n WebSocket: typeof WebSocket !== \"undefined\" ? WebSocket : undefined,\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n// ActionCable.logger.enabled = true\n//\n// Example:\n//\n// import * as ActionCable from '@rails/actioncable'\n//\n// ActionCable.logger.enabled = true\n// ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now())\n adapters.logger.log(\"[ActionCable]\", ...messages)\n }\n },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this)\n this.connection = connection\n this.reconnectAttempts = 0\n }\n\n start() {\n if (!this.isRunning()) {\n this.startedAt = now()\n delete this.stoppedAt\n this.startPolling()\n addEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n }\n }\n\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now()\n this.stopPolling()\n removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n logger.log(\"ConnectionMonitor stopped\")\n }\n }\n\n isRunning() {\n return this.startedAt && !this.stoppedAt\n }\n\n recordPing() {\n this.pingedAt = now()\n }\n\n recordConnect() {\n this.reconnectAttempts = 0\n this.recordPing()\n delete this.disconnectedAt\n logger.log(\"ConnectionMonitor recorded connect\")\n }\n\n recordDisconnect() {\n this.disconnectedAt = now()\n logger.log(\"ConnectionMonitor recorded disconnect\")\n }\n\n // Private\n\n startPolling() {\n this.stopPolling()\n this.poll()\n }\n\n stopPolling() {\n clearTimeout(this.pollTimeout)\n }\n\n poll() {\n this.pollTimeout = setTimeout(() => {\n this.reconnectIfStale()\n this.poll()\n }\n , this.getPollInterval())\n }\n\n getPollInterval() {\n const { staleThreshold, reconnectionBackoffRate } = this.constructor\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n const jitter = jitterMax * Math.random()\n return staleThreshold * 1000 * backoff * (1 + jitter)\n }\n\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n this.reconnectAttempts++\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n } else {\n logger.log(\"ConnectionMonitor reopening\")\n this.connection.reopen()\n }\n }\n }\n\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt\n }\n\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n }\n\n disconnectedRecently() {\n return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n }\n\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout(() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n this.connection.reopen()\n }\n }\n , 200)\n }\n }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n \"message_types\": {\n \"welcome\": \"welcome\",\n \"disconnect\": \"disconnect\",\n \"ping\": \"ping\",\n \"confirmation\": \"confirm_subscription\",\n \"rejection\": \"reject_subscription\"\n },\n \"disconnect_reasons\": {\n \"unauthorized\": \"unauthorized\",\n \"invalid_request\": \"invalid_request\",\n \"server_restart\": \"server_restart\",\n \"remote\": \"remote\"\n },\n \"default_mount_path\": \"/cable\",\n \"protocols\": [\n \"actioncable-v1-json\",\n \"actioncable-unsupported\"\n ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this)\n this.consumer = consumer\n this.subscriptions = this.consumer.subscriptions\n this.monitor = new ConnectionMonitor(this)\n this.disconnected = true\n }\n\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data))\n return true\n } else {\n return false\n }\n }\n\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n return false\n } else {\n const socketProtocols = [...protocols, ...this.consumer.subprotocols || []]\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${socketProtocols}`)\n if (this.webSocket) { this.uninstallEventHandlers() }\n this.webSocket = new adapters.WebSocket(this.consumer.url, socketProtocols)\n this.installEventHandlers()\n this.monitor.start()\n return true\n }\n }\n\n close({allowReconnect} = {allowReconnect: true}) {\n if (!allowReconnect) { this.monitor.stop() }\n // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n if (this.isOpen()) {\n return this.webSocket.close()\n }\n }\n\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n if (this.isActive()) {\n try {\n return this.close()\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error)\n }\n finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n setTimeout(this.open, this.constructor.reopenDelay)\n }\n } else {\n return this.open()\n }\n }\n\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol\n }\n }\n\n isOpen() {\n return this.isState(\"open\")\n }\n\n isActive() {\n return this.isState(\"open\", \"connecting\")\n }\n\n triedToReconnect() {\n return this.monitor.reconnectAttempts > 0\n }\n\n // Private\n\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n }\n\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0\n }\n\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase()\n }\n }\n }\n return null\n }\n\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this)\n this.webSocket[`on${eventName}`] = handler\n }\n }\n\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {}\n }\n }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) { return }\n const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n switch (type) {\n case message_types.welcome:\n if (this.triedToReconnect()) {\n this.reconnectAttempted = true\n }\n this.monitor.recordConnect()\n return this.subscriptions.reload()\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`)\n return this.close({allowReconnect: reconnect})\n case message_types.ping:\n return this.monitor.recordPing()\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier)\n if (this.reconnectAttempted) {\n this.reconnectAttempted = false\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: true})\n } else {\n return this.subscriptions.notify(identifier, \"connected\", {reconnected: false})\n }\n case message_types.rejection:\n return this.subscriptions.reject(identifier)\n default:\n return this.subscriptions.notify(identifier, \"received\", message)\n }\n },\n\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n this.disconnected = false\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n return this.close({allowReconnect: false})\n }\n },\n\n close(event) {\n logger.log(\"WebSocket onclose event\")\n if (this.disconnected) { return }\n this.disconnected = true\n this.monitor.recordDisconnect()\n return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n },\n\n error() {\n logger.log(\"WebSocket onerror event\")\n }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n// connected() {\n// // Called once the subscription has been successfully completed\n// },\n//\n// disconnected({ willAttemptReconnect: boolean }) {\n// // Called when the client has disconnected with the server.\n// // The object will have an `willAttemptReconnect` property which\n// // says whether the client has the intention of attempting\n// // to reconnect.\n// },\n//\n// appear() {\n// this.perform('appear', {appearing_on: this.appearingOn()})\n// },\n//\n// away() {\n// this.perform('away')\n// },\n//\n// appearingOn() {\n// $('main').data('appearing-on')\n// }\n// })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n// class AppearanceChannel < ApplicationActionCable::Channel\n// def subscribed\n// current_user.appear\n// end\n//\n// def unsubscribed\n// current_user.disappear\n// end\n//\n// def appear(data)\n// current_user.appear on: data['appearing_on']\n// end\n//\n// def away\n// current_user.away\n// end\n// end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key]\n object[key] = value\n }\n }\n return object\n}\n\nexport default class Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer\n this.identifier = JSON.stringify(params)\n extend(this, mixin)\n }\n\n // Perform a channel action with the optional data passed as an attribute\n perform(action, data = {}) {\n data.action = action\n return this.send(data)\n }\n\n send(data) {\n return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n }\n\n unsubscribe() {\n return this.consumer.subscriptions.remove(this)\n }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions\n this.pendingSubscriptions = []\n }\n\n guarantee(subscription) {\n if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n this.pendingSubscriptions.push(subscription) \n }\n else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n }\n this.startGuaranteeing()\n }\n\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n }\n\n startGuaranteeing() {\n this.stopGuaranteeing()\n this.retrySubscribing()\n }\n \n stopGuaranteeing() {\n clearTimeout(this.retryTimeout)\n }\n\n retrySubscribing() {\n this.retryTimeout = setTimeout(() => {\n if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n this.pendingSubscriptions.map((subscription) => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n this.subscriptions.subscribe(subscription)\n })\n }\n }\n , 500)\n }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n constructor(consumer) {\n this.consumer = consumer\n this.guarantor = new SubscriptionGuarantor(this)\n this.subscriptions = []\n }\n\n create(channelName, mixin) {\n const channel = channelName\n const params = typeof channel === \"object\" ? channel : {channel}\n const subscription = new Subscription(this.consumer, params, mixin)\n return this.add(subscription)\n }\n\n // Private\n\n add(subscription) {\n this.subscriptions.push(subscription)\n this.consumer.ensureActiveConnection()\n this.notify(subscription, \"initialized\")\n this.subscribe(subscription)\n return subscription\n }\n\n remove(subscription) {\n this.forget(subscription)\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\")\n }\n return subscription\n }\n\n reject(identifier) {\n return this.findAll(identifier).map((subscription) => {\n this.forget(subscription)\n this.notify(subscription, \"rejected\")\n return subscription\n })\n }\n\n forget(subscription) {\n this.guarantor.forget(subscription)\n this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n return subscription\n }\n\n findAll(identifier) {\n return this.subscriptions.filter((s) => s.identifier === identifier)\n }\n\n reload() {\n return this.subscriptions.map((subscription) =>\n this.subscribe(subscription))\n }\n\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription) =>\n this.notify(subscription, callbackName, ...args))\n }\n\n notify(subscription, callbackName, ...args) {\n let subscriptions\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription)\n } else {\n subscriptions = [subscription]\n }\n\n return subscriptions.map((subscription) =>\n (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n }\n\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription)\n }\n }\n\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`)\n this.findAll(identifier).map((subscription) =>\n this.guarantor.forget(subscription))\n }\n\n sendCommand(subscription, command) {\n const {identifier} = subscription\n return this.consumer.send({command, identifier})\n }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n// App = {}\n// App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n// App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n// App.cable.disconnect()\n//\n// and to restart the connection:\n//\n// App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n constructor(url) {\n this._url = url\n this.subscriptions = new Subscriptions(this)\n this.connection = new Connection(this)\n this.subprotocols = []\n }\n\n get url() {\n return createWebSocketURL(this._url)\n }\n\n send(data) {\n return this.connection.send(data)\n }\n\n connect() {\n return this.connection.open()\n }\n\n disconnect() {\n return this.connection.close({allowReconnect: false})\n }\n\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open()\n }\n }\n\n addSubProtocol(subprotocol) {\n this.subprotocols = [...this.subprotocols, subprotocol]\n }\n}\n\nexport function createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url()\n }\n\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\")\n a.href = url\n // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n a.href = a.href\n a.protocol = a.protocol.replace(\"http\", \"ws\")\n return a.href\n } else {\n return url\n }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n Connection,\n ConnectionMonitor,\n Consumer,\n INTERNAL,\n Subscription,\n Subscriptions,\n SubscriptionGuarantor,\n adapters,\n createWebSocketURL,\n logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url)\n}\n\nexport function getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n if (element) {\n return element.getAttribute(\"content\")\n }\n}\n", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Clappr\"] = factory();\n\telse\n\t\troot[\"Clappr\"] = factory();\n})(window, function() {\nreturn ", " \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/main.js\");\n", "module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };", "module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };", "\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n (0, _defineProperty2.default)(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _assign = require(\"../core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _assign2.default || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && ((typeof call === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(call)) === \"object\" || typeof call === \"function\") ? call : self;\n};", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _from = require(\"../core-js/array/from\");\n\nvar _from2 = _interopRequireDefault(_from);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return (0, _from2.default)(arr);\n }\n};", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _iterator = require(\"../core-js/symbol/iterator\");\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _symbol = require(\"../core-js/symbol\");\n\nvar _symbol2 = _interopRequireDefault(_symbol);\n\nvar _typeof = typeof _symbol2.default === \"function\" && typeof _iterator2.default === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj; };\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = typeof _symbol2.default === \"function\" && _typeof(_iterator2.default) === \"symbol\" ? function (obj) {\n return typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n} : function (obj) {\n return obj && typeof _symbol2.default === \"function\" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? \"symbol\" : typeof obj === \"undefined\" ? \"undefined\" : _typeof(obj);\n};", "/* Zepto v1.2.0 - zepto ajax callbacks deferred event ie selector - zeptojs.com/license */\n\n\nvar Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1>$2>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /\n * \n * ```\n * Now, create the player:\n * ```html\n *
\n * \n * \n * \n * ```\n */\nexport default class Player extends BaseObject {\n\n set loader(loader) { this._loader = loader }\n get loader() {\n if (!this._loader)\n this._loader = new Loader(this.options.plugins || {}, this.options.playerId)\n\n return this._loader\n }\n\n /**\n * Determine if the playback has ended.\n * @property ended\n * @type Boolean\n */\n get ended() {\n return this.core.activeContainer.ended\n }\n\n /**\n * Determine if the playback is having to buffer in order for\n * playback to be smooth.\n * (i.e if a live stream is playing smoothly, this will be false)\n * @property buffering\n * @type Boolean\n */\n get buffering() {\n return this.core.activeContainer.buffering\n }\n\n /*\n * determine if the player is ready.\n * @property isReady\n * @type {Boolean} `true` if the player is ready. ie PLAYER_READY event has fired\n */\n get isReady() {\n return !!this._ready\n }\n\n /**\n * An events map that allows the user to add custom callbacks in player's options.\n * @property eventsMapping\n * @type {Object}\n */\n get eventsMapping() {\n return {\n onReady: Events.PLAYER_READY,\n onResize: Events.PLAYER_RESIZE,\n onPlay: Events.PLAYER_PLAY,\n onPause: Events.PLAYER_PAUSE,\n onStop: Events.PLAYER_STOP,\n onEnded: Events.PLAYER_ENDED,\n onSeek: Events.PLAYER_SEEK,\n onError: Events.PLAYER_ERROR,\n onTimeUpdate: Events.PLAYER_TIMEUPDATE,\n onVolumeUpdate: Events.PLAYER_VOLUMEUPDATE,\n onSubtitleAvailable: Events.PLAYER_SUBTITLE_AVAILABLE\n }\n }\n\n /**\n * @typedef {Object} PlaybackConfig\n * @prop {boolean} disableContextMenu\n * disables the context menu (right click) on the video element if a HTML5Video playback is used.\n * @prop {boolean} preload\n * video will be preloaded according to `preload` attribute options **default**: `'metadata'`\n * @prop {boolean} controls\n * enabled/disables displaying controls\n * @prop {boolean} crossOrigin\n * enables cross-origin capability for media-resources\n * @prop {boolean} playInline\n * enables in-line video elements\n * @prop {boolean} audioOnly\n * enforce audio-only playback (when possible)\n * @prop {Object} externalTracks\n * pass externaly loaded track to playback\n * @prop {Number} [maxBufferLength]\n * The default behavior for the **HLS playback** is to keep buffering indefinitely, even on VoD.\n * This replicates the behavior for progressive download, which continues buffering when pausing the video, thus making the video available for playback even on slow networks.\n * To change this behavior use `maxBufferLength` where **value is in seconds**.\n * @prop {Number} [maxBackBufferLength]\n * After how much distance of the playhead data should be pruned from the buffer (influences memory consumption\n * of adaptive media-engines like Hls.js or Shaka)\n * @prop {Number} [minBufferLength]\n * After how much data in the buffer at least we attempt to consume it (influences QoS-related behavior\n * of adaptive media-engines like Hls.js or Shaka). If this is too low, and the available bandwidth is varying a lot\n * and too close to the streamed bitrate, we may continuously hit under-runs.\n * @prop {Number} [initialBandwidthEstimate]\n * define an initial bandwidth \"guess\" (or previously stored/established value) for underlying adaptive-bitreate engines\n * of adaptive playback implementations, like Hls.js or Shaka\n * @prop {Number} [maxAdaptiveBitrate]\n * Limits the streamed bitrate (for adaptive media-engines in underlying playback implementations)\n * @prop {Object} [maxAdaptiveVideoDimensions]\n * Limits the video dimensions in adaptive media-engines. Should be a literal object with `height` and `width`.\n * @prop {Boolean}[enableAutomaticABR] **default**: `true`\n * Allows to enable/disable automatic bitrate switching in adaptive media-engines\n * @prop {String} [preferredTextLanguage] **default**: `'pt-BR'`\n * Allows to set a preferred text language, that may be enabled by the media-engine if available.\n * @prop {String} [preferredAudioLanguage] **default**: `'pt-BR'`\n * Allows to set a preferred audio language, that may be enabled by the media-engine if available.\n */\n\n /**\n * ## Player's constructor\n *\n * You might pass the options object to build the player.\n * ```javascript\n * var options = {source: \"http://example.com/video.mp4\", param1: \"val1\"};\n * var player = new Clappr.Player(options);\n * ```\n *\n * @method constructor\n * @param {Object} options Data\n * options to build a player instance\n * @param {Number} [options.width]\n * player's width **default**: `640`\n * @param {Number} [options.height]\n * player's height **default**: `360`\n * @param {String} [options.parentId]\n * the id of the element on the page that the player should be inserted into\n * @param {Object} [options.parent]\n * a reference to a dom element that the player should be inserted into\n * @param {String} [options.source]\n * The media source URL, or {source: <