{"version":3,"sources":["webpack://SVP/webpack/bootstrap","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/defineProperty.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/regenerator/index.js","webpack://SVP/./player/playback/config/status-codes.js","webpack://SVP/./player/config/translations.js","webpack://SVP/./player/config.js","webpack://SVP/./player/config/jw-keys.js","webpack://SVP/./player/config/production.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/promise.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/asyncToGenerator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/assign.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/classCallCheck.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_core.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/createClass.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/get-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/possibleConstructorReturn.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/inherits.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_export.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_global.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_wks.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/typeof.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/toConsumableArray.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-dp.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_an-object.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_is-object.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_descriptors.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_ctx.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_to-iobject.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_hide.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/helpers/slicedToArray.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_fails.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_has.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_iterators.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_to-object.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.string.iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/json/stringify.js","webpack://SVP/./utils/module-loader.js","webpack://SVP/./utils/script-loader.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/web.dom.iterable.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_cof.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_a-function.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_property-desc.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_set-to-string-tag.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_for-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-pie.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_library.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_to-length.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_uid.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_classof.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-gops.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-sap.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_meta.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/define-property.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/get-iterator.js","webpack://SVP/./icons/play.svg","webpack://SVP/./icons/pause.svg","webpack://SVP/./icons/audio.svg","webpack://SVP/./icons/audio-muted.svg","webpack://SVP/./icons/chevron-right.svg","webpack://SVP/./icons/close.svg","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_iobject.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_defined.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_iter-define.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_dom-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_to-primitive.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_to-integer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_shared-key.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_shared.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_enum-bug-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/core.get-iterator-method.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_an-instance.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_new-promise-capability.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_redefine-all.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_wks-ext.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_wks-define.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-gopn.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-gopd.js","webpack://SVP/./icons/captions.svg","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_iter-step.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_redefine.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-keys-internal.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_html.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-gpo.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_iter-call.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_is-array-iter.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_species-constructor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_task.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_perform.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_promise-resolve.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_set-species.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_iter-detect.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_is-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_validate-collection.js","webpack://SVP/./icons/error.svg","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/freeze.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/values.js","webpack://SVP/./player/playback/ads/homad-lib.js","webpack://SVP/./icons/audio-half.svg","webpack://SVP/./icons/fullscreen-off.svg","webpack://SVP/./icons/fullscreen-on.svg","webpack://SVP/./icons/settings.svg","webpack://SVP/./icons/share.svg","webpack://SVP/./icons/info.svg","webpack://SVP/./icons/av-button.svg","webpack://SVP/./icons/defs.svg","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/reflect/own-keys.js","webpack://SVP/./player/plugins/pause.html","webpack://SVP/./player/plugins/countdown.html","webpack://SVP/./player/plugins/recommended/recommended.html","webpack://SVP/./player/plugins/recommended/next-asset.html","webpack://SVP/./player/plugins/recommended/grid.html","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/whatwg-fetch/fetch.js","webpack://SVP/./svp-player.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/regenerator-runtime/runtime-module.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/regenerator-runtime/runtime.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/is-iterable.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/is-iterable.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.array.iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_add-to-unscopables.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_iter-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-dps.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_array-includes.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_to-absolute-index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_string-at.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/core.is-iterable.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/get-iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/core.get-iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/promise.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.promise.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_invoke.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_microtask.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es7.promise.finally.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es7.promise.try.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/define-property.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.object.define-property.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/assign.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.object.assign.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-assign.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.object.keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/symbol/iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/symbol/iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/symbol.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/symbol/index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.symbol.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_enum-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-gopn-ext.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es7.symbol.async-iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es7.symbol.observable.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/array/from.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/array/from.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.array.from.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_create-property.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/json/stringify.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/freeze.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.object.freeze.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/values.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es7.object.values.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_object-to-array.js","webpack://SVP/./icons/playlist.svg","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/get-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.object.get-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/set-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/set-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.object.set-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_set-proto.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/babel-runtime/core-js/object/create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.object.create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/object/get-own-property-descriptor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/reflect/own-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.reflect.own-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_own-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/fn/map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es6.map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_collection-strong.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_collection.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_array-methods.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_array-species-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_array-species-constructor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es7.map.to-json.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_collection-to-json.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_array-from-iterable.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es7.map.of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_set-collection-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/es7.map.from.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.14.5/node_modules/core-js/library/modules/_set-collection-from.js","webpack://SVP/./utils/underscore.js","webpack://SVP/./utils/backbone.events.js","webpack://SVP/./utils/device.js","webpack://SVP/./utils/merge.js","webpack://SVP/./utils/utils.js","webpack://SVP/./utils/logger.js","webpack://SVP/./utils/server-time.js","webpack://SVP/./utils/model.js","webpack://SVP/./player/model/category.js","webpack://SVP/./player/model/asset.js","webpack://SVP/./player/services/api.js","webpack://SVP/./utils/image.js","webpack://SVP/./player/services/api/series.js","webpack://SVP/./player/services/api/related.js","webpack://SVP/./player/services/api/asset/mock.js","webpack://SVP/./player/services/api/asset.js","webpack://SVP/./player/model/stream.js","webpack://SVP/./player/model/excluded-assets.js","webpack://SVP/./player/model/recommended/related.js","webpack://SVP/./player/model/next-asset.js","webpack://SVP/./player/model/locale.js","webpack://SVP/./utils/string.js","webpack://SVP/./player/model/domain.js","webpack://SVP/./player/model/token.js","webpack://SVP/./player/playback/ads/appnexus-tag-builder.js","webpack://SVP/./player/playback/ads/appnexus-jw-config.js","webpack://SVP/./player/playback/ads/appnexus.js","webpack://SVP/./player/playback/config/playlist.js","webpack://SVP/./player/playback/config/sharing.js","webpack://SVP/./player/playback/config/playback.js","webpack://SVP/./player/playback/youbora.js","webpack://SVP/./player/playback/config.js","webpack://SVP/./player/playback/config/captions.js","webpack://SVP/./player/playback/config/jw-youbora.js","webpack://SVP/./player/playback/config/keys.js","webpack://SVP/./player/playback/viewport.js","webpack://SVP/./player/playback/ads/homad.js","webpack://SVP/./player/playback/ads/homad-skin.js","webpack://SVP/./player/playback/ads/homad-jw.js","webpack://SVP/./player/playback/config/autoplay.js","webpack://SVP/./player/playback/ads/prevent-seeking.js","webpack://SVP/./utils/style-loader.js","webpack://SVP/./player/playback/skin/icons-loader.js","webpack://SVP/./player/playback/skin/settings-menu.js","webpack://SVP/./utils/clipboard.js","webpack://SVP/./player/playback/skin/sharing-box.js","webpack://SVP/./player/playback/skin/container-class.js","webpack://SVP/./player/playback/skin.js","webpack://SVP/./player/playback/skin/config-button.js","webpack://SVP/./player/playback/skin/fullscreen-button.js","webpack://SVP/./player/playback/skin/levels-icon.js","webpack://SVP/./player/playback/provider.js","webpack://SVP/./utils/eventable.js","webpack://SVP/./utils/mixin.js","webpack://SVP/./player/plugins/model.js","webpack://SVP/./player/plugins.js","webpack://SVP/./player/playback/ads/appnexus-ast.js","webpack://SVP/./player/plugins/pause.js","webpack://SVP/./player/plugins/age-limit.js","webpack://SVP/./player/plugins/countdown.js","webpack://SVP/./player/model/recommended/list.js","webpack://SVP/./player/model/recommended.js","webpack://SVP/./player/plugins/recommended.js","webpack://SVP/./player/plugins/svp-stats/tracker.js","webpack://SVP/./player/plugins/svp-stats.js","webpack://SVP/./player/plugins/pulse-stats/tracker.js","webpack://SVP/./player/plugins/pulse-stats/ad-events.js","webpack://SVP/./player/plugins/pulse-stats/session.js","webpack://SVP/./player/plugins/pulse-stats/playback-events.js","webpack://SVP/./player/plugins/pulse-stats/ui-events.js","webpack://SVP/./player/model/category-tree.js","webpack://SVP/./player/plugins/pulse-stats.js","webpack://SVP/./player/player.js","webpack://SVP/./utils/adblock-detect.js","webpack://SVP/./index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_defineProperty2","obj","default","_interopRequireDefault","configurable","writable","ACTIVE","ACTIVE_PREVIEW","NOT_ACTIVE","NOT_ACTIVE_GEOBLOCKED","NOT_FOUND","NOT_ACTIVE_PAST","GENERAL_ERROR","NETWORK_ERROR","TOKEN_FETCH_ERROR","statusMessages","babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default","_statusMessages","__webpack_exports__","errorCode","translations","en","Video will start at","Video will start in","ageLimit-0","months","defineProperty_default","_en","codeToString","STATUS_CODES","admessage","cuetext","skipmessage","skiptext","podmessage","no","_no","player","play","playback","pause","volume","prev","next","cast","airplay","fullscreen","playlist","hd","cc","audioTracks","playbackRates","replay","buffer","more","liveBroadcast","loadingAd","rewind","nextUp","nextUpClose","related","close","settings","unmute","copied","se","_se","config","version","__BUILD_VERSION__","keys","100sport","ab","adressa","altaposten","ap","bt","brandstudio","folkebladet","fvn","harstad","itromso","podcast","rbnett","riks","ridenews","sa","schibsted","smp","svd","tronderavisa","vgtv","vgtvs","api","url","tokenUrl","thumbnailsUrl","vendor","identifier","getUrl","endpoint","joiner","indexOf","this","cb","Math","random","ads","homad","global","client","appnexus","vmap","ast","debug","cdn","svp","pollyfils","youbora","time","images","servers","sizes","poster","autoHeight","autoWidth","skins","about","link","text","sharing","sites","code","domains","blacklist","whitelist","preview","locale","_promise2","fn","gen","apply","arguments","resolve","reject","step","arg","info","error","done","then","err","instance","Constructor","TypeError","core","__e","defineProperties","target","props","length","descriptor","protoProps","staticProps","_typeof3","self","ReferenceError","_setPrototypeOf2","_create2","subClass","superClass","constructor","__proto__","ctx","hide","$export","type","source","own","out","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","IS_WRAP","W","expProto","undefined","C","a","b","Function","virtual","R","U","window","__g","store","uid","USE_SYMBOL","_iterator2","_symbol2","_typeof","_from2","arr","Array","isArray","arr2","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","e","isObject","it","aFunction","that","IObject","defined","createDesc","_isIterable3","_getIterator3","_arr","_n","_d","_e","_s","_i","push","sliceIterator","exec","$keys","enumBugKeys","$at","String","iterated","_t","point","index","loadModule","moduleSrc","root","define","amd","babel_runtime_core_js_promise__WEBPACK_IMPORTED_MODULE_0___default","require","scriptLoader","path","onSuccess","onError","script","document","createElement","callback","src","async","onreadystatechange","onload","readyState","onerror","body","appendChild","loadScript","Iterators","TO_STRING_TAG","DOMIterables","split","NAME","Collection","proto","toString","slice","bitmap","def","has","TAG","tag","stat","isArrayIter","toLength","getIterFn","BREAK","RETURN","iterable","entries","ITERATOR","iterator","result","iterFn","propertyIsEnumerable","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","contentWindow","open","write","lt","Properties","toInteger","min","id","px","concat","cof","ARG","T","tryGet","callee","getOwnPropertySymbols","fails","KEY","exp","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","NEED","fastKey","getWeak","onFreeze","LIBRARY","redefine","$iterCreate","setToStringTag","getPrototypeOf","BUGGY","returnThis","Base","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","values","is","val","valueOf","ceil","floor","isNaN","shared","classof","getIteratorMethod","forbiddenField","promise","$$resolve","$$reject","safe","wksExt","$Symbol","charAt","hiddenKeys","getOwnPropertyNames","pIE","toIObject","gOPD","getOwnPropertyDescriptor","arrayIndexOf","names","documentElement","toObject","ObjectProto","ret","ArrayProto","SPECIES","D","defer","channel","port","invoke","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","data","args","nextTick","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","set","clear","v","newPromiseCapability","x","promiseCapability","DESCRIPTORS","SAFE_CLOSING","riter","from","skipClosing","iter","TYPE","isLoaded","exportz","conf","k","u","g","round","fromCharCode","A","h","q","charCodeAt","toLowerCase","j","fireEvent","createEvent","state","initCustomEvent","dispatchEvent","track","M","isEnabled","encodeURIComponent","homad_url_prefix_alias","homad_track_key","homad_track_value","message","V","J","I","K","H","L","N","X","z","abs","Date","navigator","appCodeName","appName","appVersion","userAgent","platform","language","parseInt","reverse","match","y","startPlayer","eval","fp_error","hd_ready","head","firstChild","insertBefore","setInterval","clearTimeout","getElementsByTagName","parentNode","getElementsByClassName","top","hasChildNodes","lastChild","homad_url_suffix_base64","homad_url_suffix","homad_hash_guessed","enabled","server","replace","getTime","XMLHttpRequest","status","JSON","parse","responseText","substr","setRequestHeader","send","location","hostname","onFailure","globalConfig","clientConfig","clearInterval","Headers","Request","Response","DOMException","fetch","support","searchParams","blob","Blob","formData","arrayBuffer","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","test","normalizeValue","iteratorFor","items","shift","headers","map","forEach","append","header","consumed","bodyUsed","Promise","fileReaderReady","reader","readBlobAsArrayBuffer","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","isDataView","_bodyArrayBuffer","rejected","Error","readAsText","readBlobAsText","chars","join","readArrayBufferAsText","decode","json","oldValue","thisArg","input","options","credentials","method","signal","upcased","toUpperCase","normalizeMethod","referrer","form","trim","bytes","decodeURIComponent","bodyInit","ok","statusText","clone","response","redirectStatuses","redirect","RangeError","stack","init","request","aborted","xhr","abortXhr","abort","rawHeaders","line","parts","parseHeaders","getAllResponseHeaders","responseURL","ontimeout","onabort","withCredentials","responseType","removeEventListener","polyfill","loadSvpLibrary","SVP","preInitialize","postInitialize","loadJwPlayer","PLAYER_LIB","moduleLoader","jwplayer","_ref","babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2___default","babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default","mark","_callee","onReady","wrap","_context","onSvpPlayerReady","library","_library","babel_runtime_helpers_slicedToArray__WEBPACK_IMPORTED_MODULE_1___default","initEvent","stop","_x2","hadRuntime","regeneratorRuntime","oldRuntime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","inModule","runtime","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","getProto","NativeIteratorPrototype","Gp","GeneratorFunctionPrototype","Generator","GeneratorFunction","displayName","isGeneratorFunction","genFun","ctor","setPrototypeOf","awrap","__await","defineIteratorMethods","AsyncIterator","innerFn","outerFn","tryLocsList","pop","Context","reset","skipTempReset","sent","_sent","delegate","tryEntries","resetTryEntry","rootRecord","completion","rval","dispatchException","exception","context","handle","loc","caught","record","entry","tryLoc","hasCatch","hasFinally","catchLoc","finallyLoc","abrupt","finallyEntry","complete","afterLoc","finish","catch","thrown","delegateYield","resultName","nextLoc","protoGenerator","generator","_invoke","doneResult","delegateResult","maybeInvokeDelegate","tryCatch","makeInvokeMethod","previousPromise","callInvokeWithMethodAndArg","unwrapped","return","pushTryEntry","locs","iteratorMethod","addToUnscopables","_k","Arguments","getKeys","toAbsoluteIndex","IS_INCLUDES","$this","el","fromIndex","max","TO_STRING","pos","isIterable","getIterator","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","anInstance","forOf","speciesConstructor","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","$Promise","isNode","empty","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","notify","isReject","chain","_c","_v","reaction","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_w","$resolve","wrapper","executor","onFulfilled","onRejected","capability","all","remaining","$index","alreadyCalled","race","un","macrotask","Observer","MutationObserver","WebKitMutationObserver","last","flush","parent","toggle","node","createTextNode","observe","characterData","finally","onFinally","isFunction","try","callbackfn","$Object","desc","assign","gOPS","$assign","aLen","getSymbols","isEnum","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$DP","gOPN","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","setter","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperty","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","for","keyFor","useSetter","useSimple","replacer","$replacer","symbols","windowNames","getWindowNames","createProperty","arrayLike","mapfn","mapping","freeze","$freeze","$values","isEntries","$getPrototypeOf","check","buggy","Reflect","ownKeys","Map","strong","validate","getEntry","redefineAll","$iterDefine","setSpecies","SIZE","_f","getConstructor","IS_MAP","ADDER","_l","delete","setStrong","each","common","IS_WEAK","IS_ADDER","size","asc","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","res","original","toJSON","COLLECTION","of","mapFn","nextItem","idCounter","_","MAX_ARRAY_INDEX","pow","getLength","isEmpty","collection","isArrayLike","isString","isArguments","uniqueId","prefix","Events","eventSplitter","eventsApi","iteratee","events","opts","typeof_default","on","internalOn","listening","_events","onApi","_listeners","listenTo","_listenId","listeningTo","_listeningTo","thisId","objId","count","handlers","off","offApi","listeners","stopListening","ids","_callback","once","onceMap","listenToOnce","offer","trigger","triggerApi","objEvents","allEvents","triggerEvents","ev","a1","a2","a3","unbind","userAgentMatch","regex","lazyUserAgentMatch","isFF","isIETrident","isIPad","isEdge","isAndroid","device","isIOS","isAppleIOS","isIPhone","isSafari","isAndroidNative","isChrome","isFirefox","isIE","isDesktop","isMobile","isTablet","isSamsungInternet","isWindowsPhone","getChromeVersion","raw","getPixelRatio","devicePixelRatio","getFlashVersion","flash","plugins","description","parseFloat","ActiveXObject","GetVariable","getDeviceType","canAutoplay","isMergeableObject","cloneIfNecessary","optionsArgument","deepmerge","emptyTarget","defaultArrayMerge","destination","array","arrayMerge","keys_default","mergeObject","reduce","jwUtils","utils","jwUnderscore","extend","merge","ajax","isUndefined","isNumber","omit","memoize","createNode","addStyleSheet","addClass","removeClass","throttle","template","cache","tmpl","str","getElementById","innerHTML","shareTimeToSeconds","hours","minutes","seconds","compact","hasFlash","number","zeroPad","escape","escapeMap","&","<",">","\"","'","`","string","getTimeFormatted","timestamp","inherit","model","child","Surrogate","__super__","getScrollSnapPrefix","scrollSnapSupport","promise_default","jsonToUrl","startsWith","searchString","position","counters","log","_console","_len","_key","logger","block","_console2","_len2","_key2","itemKey","localStorage","getItem","_len3","_key3","unshift","ServerTime","_time","_responseTime","resolveRequest","SimpleModel","attr","attributes","oldVal","Category","initialize","additional","background","main","image","logo","playerLogo","playerLogoImage","relatedExperiments","start","experiment","_experiment$split","_experiment$split2","slicedToArray_default","traffic","end","item","parseRelatedExperiments","metadata","getRelatedExperiments","isSeries","getLastAsset","Model","handleErrors","Asset","getVendor","unifyTimestamp","startIndexPoint","ageLimit","sourceFiles","series","season","seasonNumber","episode","episodeNumber","flightTimes","created","published","updated","category","chapters","chapter","timeline","nextAsset","tags","_embedded","_fetch","_this","assign_default","destroy","getAgeLimit","getNextAssetId","getNextAssetSource","getChapter","chapterIndex","getChapters","getThumbnail","getTitle","getCategory","requestNumber","currentServerId","getServer","getImageTransform","serversAmount","getEndpoint","categoryId","getNextFromEpisodeList","assetId","assets","findIndex","getNextEpisode","asyncToGenerator_default","regenerator_default","_ref2","_x","limit","engine","getList","_ref2$limit","_ref2$engine","VIDEO","getAssetEndpoint","getListEndpoint","_ref$params","params","_ref$filters","filters","queryParams","api_asset","getById","_ref3","getByIds","_ref4","_callee2","_ref5","_context2","getClosestAsset","_ref6","_callee3","_ref7","_response$_embedded$a","order","publishedDate","_context3","_x3","getMockAsset","streamType","streamUrls","hls","URL","createObjectURL","streamConfiguration","properties","imageId","width","height","pixelRatio","cacheKey","transform","maxDimension","idLen","transformType","transformSizes","dimensions","getImageQuality","normalizeTransformSize","curr","getClosestSize","getImageSrc","extension","Stream","title","streams","hds","mp4","mediaType","assetType","snapshots","captions","begin","externalId","duration","is360","pseudostreaming","audioStream","audio","showAds","cuePoints","getId","hasProperty","getDuration","getCuePoints","isSecure","isMock","isGeoblocked","isLive","wasLive","isActive","isPast","isFuture","hasHds","hasPlayableSource","getTimeToStart","isOnHttp","protocol","streamUrl","getPoster","getPosterSrc","containerWidth","getSnapshots","hasSnapshots","getCaptions","hasMp4Streams","hasAudioOnlyStream","getMp4Streams","stream","streamData","bitrate","getPlaybackTime","hasCreatives","getExternalId","getDisplayType","hasAdsDisabled","getKey","EXCLUDED_ASSETS_KEY","ExcludedAssets","add","getAll","splice","getStorage","setItem","stringify_default","recommended_related","excludedAssets","useMlEngine","experimentsList","seed","experimentVariant","experimentName","randomIndex","element","find","getExperimentName","createResponse","hasPlayNext","asset","includeCategory","hasNextInCategory","fetchNextFromSeries","seriesService","fetchNextFromCategory","_this2","assetService","fetchNextById","_this3","fetchNextFromRelatedEngine","_this4","_ref5$source","_callee4","_context4","relatedService","relatedHelpers","getNext","_this5","_callee5","nextAssetId","fetchNextParams","experiments","_context5","t0","fetchNext","_this6","_callee6","_context6","model_locale","translate","substitute","setTranslations","getMonthName","date","getMonth","objectToString","prop","isDomainInArray","origin","domainBeginning","len","Domain","na","vendors","getPermissions","isBlacklisted","fetchToken","isFetching","expire","Token","maxBitrate","classCallCheck_default","configuration","isValid","query","expiry","appnexus_tag_builder","getVmapTag","queryObject","getAstConfig","tagOptions","globalOptions","getDefaultParams","countryCode","getCountryCode","supplyType","publisherName","slotIds","preroll","midroll","postroll","JwAdsConfig","setParams","adSlotConfig","offset","adLabel","appnexusTag","getConfig","getParams","memberId","member","getJwAdSchedule","adSlots","adConfig","adsConfig","hasNext","cuePoint","getAdsConfig","schedule","getAdPlacements","adPlacements","globalParams","placements","placementId","appnexusTagBuilder","parseAdPlacements","getClientConfig","adn","svpAdConfig","svpPlayer","adSchedule","adOptions","getLiveMidrollTag","maxDuration","vmaxduration","createMidroll","startTime","hasEntered","onEnterCallback","setTime","onEnter","getPlaylist","addPlaylistMetadata","playlistItem","mediaId","mediaid","starttime","addProgressiveMediaSources","mp4Stream","sources","label","file","addSnapshots","tracks","addCaptions","caption","add3dSupport","stereomode","advertising","autoplayMuted","autoplayadsmuted","vpaidcontrols","preloadAds","adschedule","addAppnexusAds","_ref$globals","globals","defaults","heading","canAutostart","autoplay","preload","autostart","mute","skin","values_default","some","slot","hasPreroll","autopause","autoPause","viewability","youboraSdk","load","Plugin","setAdapter","adapters","JWPlayer","Config","env","token","jwDefaults","primary","hlshtml","base","flashplayer","wmode","getMaxBitrate","setStream","getRaw","rawOptions","dump","prettier","js_beautify","playerContainer","container","clientWidth","clientHeight","getToken","hasValidToken","getStreamUrl","isStreamPlayable","getSettings","getJwConfig","abouttext","aboutlink","localization","jwConfig","addPlaylist","getPlaylistSettings","addSharing","native","renderCaptionsNatively","setCaptions","setPlaybackOptions","content.resource","content.isLive","content.title","content.duration","content.cdn","content.metadata","content_id","owner","extraparam.1","extraparam.2","extraparam.3","extraparam.4","addYoubora","setKey","jw","hasRecommended","getRecommended","permissions","freeze_default","Viewport","current","labels","update","newIndex","compare","comp","binarySearch","newBreakpoint","getViewportByIndex","currentBreakpoint","getTagUrl","potOffset","getAdPotTag","SvpPlayer","Player","isHomadLoaded","homadConfig","skipable","skipAdOnContextChange","runInsideContainer","adjustAdVolumeToContentPlayer","postrollUseCompleteEvent","muteButton","audioIcon","unmuteButton","audioMuted","playButton","playIcon","pauseButton","pauseIcon","skipableButton","adMessages","skipButton","innerWarpper.style","prerollAdTag","midrollAdTag","postrollAdTag","aabConfig","details","detail","containerId","getEvents","playerId","removeEvents","createHomadSkin","adPlayer","adPlayerContainer","getContainer","appendControl","controlsContainer","querySelector","domNode","getControlsContainer","fullScreenButton","fullscreenButton","cloneNode","onClick","handleClick","createFullscreenButton","jwPlayer","setFullscreen","toggleFullscreen","seekBar","remove","progressLoader","setProgress","createProgressBar","currentTime","_getPlaybackState","playerClassList","classList","adStarted","useClasses","toConsumableArray_default","setAdPlaying","setAdComplete","getPlaybackState","volumeBtn","float","adjustVolumePosition","HomadAds","adPosition","adPlaying","adId","impression","impressionURL","eventName","hasAdBlocked","adPlayerLoading","pauseReason","getCurrentTime","adposition","mutations","mutation","nodes","addedNodes","video","childList","getAdPlayer","initializeAdPlayer","canDeviceAutoplay","supposedCurrentTime","onSeeking","onTimeUpdate","seeking","videoElement","getVideo","loadedStylesheets","style_loader","href","rel","loadStylesheet","iconsMap",".jw-svg-icon-play",".jw-svg-icon-pause",".jw-skip-icon .jw-svg-icon-next","chevronRight",".jw-svg-icon-settings",".jw-svg-icon-sharing","share",".jw-svg-icon-cc-on",".jw-svg-icon-cc-off",".jw-svg-icon-volume-0",".jw-svg-icon-volume-50","audioHalf",".jw-svg-icon-volume-100",".jw-svg-icon-fullscreen-on","fullscreenOn",".jw-svg-icon-fullscreen-off","fullscreenOff","avButton","defsLoaded","icons_loader","customIcon","selector","icons","querySelectorAll","icon","svpIcon","setAttribute","getAttribute","replaceChild","loadIcons","settings_menu","contains","submenu","right","offsetWidth","offsetLeft","submenuHandler","copyToClipboard","left","focus","select","execCommand","hasMediaId","getSharingLink","updateElement","previousSibling","innerText","replaceElement","sourceEl","newEl","sharing_box","updateSharingBox","getStream","container_class","svpPlayerModel","handleAppnexusClass","loader","skinLoader","styleLoader","playback_skin","defs","loadDefs","settingsMenu","infoNode","dataset","tip","isPrettierLoaded","configButton","getIcon","sharingBox","containerClass","levels","handleLevelSettingsIcon","getLevelSettingsIcon","levelsIcon","PlayerModel","isInitalized","isStopped","viewport","onViewportChange","forwardEvent","getAdPosition","slotId","pre","mid","post","setup","svpSkin","preventAdSeeking","onPlaylistItemLoad","onPlay","onPause","onComplete","eventData","onTime","onPlayerResize","onViewable","onAutostartNotAllowed","onMeta","onMetadataCueParsed","getCaptionsList","sequence","xml","adSelector","adData","podcount","parseAdData","playNext","togglePlayback","streamPoster","playbackType","getVolume","setVolume","getMute","setMute","seek","getState","nextStream","isAdPlaying","loadStream","force","_this7","getPosition","getAdBlock","getProvider","provider","playerCaptions","setCurrentCaptions","captionsIndex","_this8","playlistItemId","onFirstFrameLoad","playbackEndTime","playbackEnd","accountCode","enableAnalytics","_this9","viewable","currentViewport","previousViewport","slotDuration","_this10","onTimeChange","t1","t2","t3","adTag","_this11","playAd","content","skipAd","TXXX","playReason","forwardedMethods","warn","HomadAdsJw","proxyMethod","sourceMethod","Eventable","BackboneEvents","copyProperties","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","get_iterator_default","own_keys_default","get_own_property_descriptor_default","define_property_default","PluginModel","possibleConstructorReturn_default","get_prototype_of_default","Plugins","register","plugin","getName","CustomPluginModel","_PluginModel","inherits_default","createPluginClass","scripts","loadPlugin","pluginSrc","apntag","firstLoad","defineTag","tagId","tagConfig","targetId","loadTags","onEvent","showTag","refreshTag","refresh","resizeTag","dimmensions","resizeAd","offEvent","PausePlugin","maxDisplays","displayCounter","withAdTag","adPlacement","withCounter","getBoundingClientRect","appnexusAdId","creativeId","isAdTagLoaded","show","timerId","onSeek","onResumeClick","render","adTagOptions","appnexusAdContainerId","pauseTemplate","closeIcon","closeButton","stopPropagation","AgeLimitPlugin","leadingZeros","numValue","numLen","num","CountdownPlugin","liveDOM","countdownDOM","countdownTemplate","intervalId","getDateData","repaint","liveDate","isCountdownActive","sec","currentState","getDate","getHours","getMinutes","endDate","diff","dateData","years","days","mapResponse","getEngine","list","fetchByIds","fetchFromRelatedEngine","Recommended","ml","recommendedList","nextAssetSource","getThumbnailUrl","onInitialize","fetchDuration","recommended","getAsset","gridItemsReady","grid","getItems","getNextAsset","onPlaybackComplete","scrollSnapPrefix","gridItem","getByClass","onTimeNextVisible","countdownTime","onPlayNextVisible","timeout","transitionDuration","onNextAssetReady","Image","nextAssetTemplate","countdown","nextIcon","onGridItemsReady","gridTemplate","onGridVisible","onAssetReplay","RecommendedPlugin","className","previousEl","recommendedTemplate","ClickTracker","trackMediaEvent","sendRequest","trackStreamEvent","queryString","apiUrl","getApiUrl","hypen","SvpStatsPlugin","trackingInterval","getTrackingInterval","initialStartTime","playerTime","adSlot","PulseTrackerLoader","providers","pulse","PROVIDER_TRACKER_ID","TRACKER_ID","tracker","AdEvents","beforeUnload","onAdSlotComplete","onAdSlotStart","onAdStarted","onAdProgress","onAdPause","onAdPlay","onPauseAdVisible","slotData","_window","previousPosition","_window2","_window3","session","PlaybackEvents","watchData","previousTime","createSession","beforePlaybackStarted","onBeforeUnload","playMethod","onPlaylistItem","onInitialPlay","onAssetPlay","onPlayNext","onLiveTime","onRecommendedPlay","eventInterval","beforeStreamStart","wasViewed","previousAssetId","eventTime","trackTimeEvent","playbackSource","onRecommendedVisible","CategoryTree","categories","map_default","parentId","instances","getMediaAssetId","PulseStatsPlugin","decorator","embed","categoryPath","categoryTree","getPath","getTracker","getCategoryPath","playerAsset","resolveTracker","PulseTracker","adEvents","playbackEvents","uiEvents","UiEvents","onAdEvent","onPlaybackEvent","onUiEvent","intent","trackingData","@type","@id","muted","fullScreen","getFullscreen","capitalizeFirstLetter","mediaAssetId","slotNumber","accessControl","access","getTags","stories","getStories","originAssetId","destroyPlugin","clearError","previousErrorNode","translatedMessage","statusCode","errorDetails","errorIcon","posterSrc","errorNode","isCompleted","onPlayerEvent","_trigger","callFunction","player_onPlaylistItem","onceConfigReady","Provider","SvpPlugins","pluginConfig","addPlugin","setAsset","onAssetReady","NextAsset","pulseConfig","onAssetError","isPlayNextAvailable","serverTime","getCurrentQuartile","getCurrentCaptions","setCaptionsStyles","styles","setPlayer","getPlugin","hasAdblock","detected","bait","offsetParent","offsetHeight","offsetTop","getComputedStyle","baitTemp","getPropertyValue","index_preInitialize","index_postInitialize","__defaults","aab","setLocale","svpYoubora","loadYoubora"],"mappings":"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AG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,IAAK,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,GAAI,IAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,EA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","file":"player.min.js","sourcesContent":[" \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 = \"//cdn.svp.schibsted.io/player/3.14.5/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 114);\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 (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","module.exports = require(\"regenerator-runtime\");\n","export const ACTIVE = 12000;\nexport const ACTIVE_PREVIEW = 12001;\n\nexport const NOT_ACTIVE = 14001;\nexport const NOT_ACTIVE_GEOBLOCKED = 14002;\nexport const NOT_FOUND = 14003;\nexport const NOT_ACTIVE_PAST = 14004;\n\nexport const GENERAL_ERROR = 15000;\nexport const NETWORK_ERROR = 15101;\nexport const TOKEN_FETCH_ERROR = 15102;\n\nconst statusMessages = {\n [ACTIVE]: 'Stream active',\n [ACTIVE_PREVIEW]: 'Preview mode',\n [NOT_ACTIVE]: 'Stream is not active',\n [NOT_ACTIVE_GEOBLOCKED]: 'Stream failed to play due to geoblock restrictions',\n [NOT_FOUND]: 'Stream not found',\n [NOT_ACTIVE_PAST]: 'Stream has been unpublished',\n [GENERAL_ERROR]: 'General error',\n [NETWORK_ERROR]: 'Network error',\n [TOKEN_FETCH_ERROR]: 'Token fetch error'\n};\n\n/**\n * Get localized messages\n */\nexport default (errorCode) => statusMessages[errorCode] || statusMessages[GENERAL_ERROR];\n","/* eslint-disable max-len */\nimport codeToString, * as STATUS_CODES from '../playback/config/status-codes';\n\n// translation configuration for different locales\nconst translations = {\n en: {\n // Countdown plugin\n 'Video will start at': 'Video will start at',\n 'Video will start in': 'Video will start in',\n\n 'ageLimit-0': 'A',\n\n // months is special case for translating month to human readable form\n months: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ],\n // general troubles, we don't know exactly what had happen\n [codeToString(STATUS_CODES.GENERAL_ERROR)]: 'Sorry. An error occured. Try again later.',\n // stream is available only in certain areas/countries\n [codeToString(STATUS_CODES.NOT_ACTIVE_GEOBLOCKED)]: 'The video failed to play due to geoblock restrictions.',\n // stream is 404 (wrong/deleted from akamai)\n [codeToString(STATUS_CODES.NOT_FOUND)]: 'Sorry. This video is unavailable.',\n // asset is not active\n [codeToString(STATUS_CODES.NOT_ACTIVE)]: 'Sorry. This video is not active.',\n // asset's flight times are in the past\n [codeToString(STATUS_CODES.NOT_ACTIVE_PAST)]: 'Sorry. This video is unavailable.',\n // network error while playing live stream\n [codeToString(STATUS_CODES.NETWORK_ERROR)]: 'Network issues. Please check your internet connection',\n // token can not be retrieved\n [codeToString(STATUS_CODES.TOKEN_FETCH_ERROR)]: 'Sorry. An error occured. Try again later.',\n\n // sharing box heading\n Sharing: 'Share this video',\n 'Live button': 'Live',\n\n // error message\n 'Error code': 'Error code',\n\n // closed captions\n en_GB: 'English',\n es_ES: 'Español',\n nb_NO: 'Bokmål',\n sv_SE: 'Swedish',\n\n 'Audio video switch': 'Audio video switch',\n 'Playing audio only': 'Playing audio only',\n\n ads: {\n // jw ad messages\n admessage: 'The ad will end in xx seconds',\n cuetext: 'Advertisement',\n skipmessage: 'Skip ad in xx',\n skiptext: 'Skip',\n podmessage: 'Ad __AD_POD_CURRENT__ of __AD_POD_LENGTH__'\n },\n\n adblock: {\n admessage: 'The ad will end in [time]s'\n },\n player: {}\n },\n no: {\n // Countdown plugin\n 'Video will start at': 'Videoen starter',\n 'Video will start in': 'Videoen starter om',\n\n 'ageLimit-0': 'A',\n\n // months is special case for translating month to human readable form\n months: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'Mai', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Des'\n ],\n // general troubles, we don't know exactly what had happen\n [codeToString(STATUS_CODES.GENERAL_ERROR)]: 'Beklager, en feil oppstod. Prøv å spill av videoen senere',\n // stream is available only in certain areas/countries\n [codeToString(STATUS_CODES.NOT_ACTIVE_GEOBLOCKED)]: 'Denne videoen er kun tilgjengelig i Norge',\n // stream is 404 (wrong/deleted from akamai)\n [codeToString(STATUS_CODES.NOT_FOUND)]: 'Beklager, videoen er ikke tilgjengelig',\n // asset is not active\n [codeToString(STATUS_CODES.NOT_ACTIVE)]: 'Beklager, videoen er ikke tilgjengelig',\n // asset's flight times are in the past\n [codeToString(STATUS_CODES.NOT_ACTIVE_PAST)]: 'Beklager, vi har ikke rettigheter til å vise videoen lenger',\n // network error while playing live stream\n [codeToString(STATUS_CODES.NETWORK_ERROR)]: 'Kunne ikke spille av video, venligst sjekk internettforbindelsen din',\n // token can not be retrieved\n [codeToString(STATUS_CODES.TOKEN_FETCH_ERROR)]: 'Beklager, en feil oppstod. Prøv å spill av videoen senere',\n\n // jw player error messages\n 'This video cannot be played because of a technical error.': 'Kunne ikke spille av video på grunn av en teknisk feil',\n 'Sorry, the video player failed to load.': 'Kunne ikke spille av video, venligst sjekk
internettforbindelsen din',\n 'This video file cannot be played.': 'Kunne ikke spille av video',\n 'The live stream is either down or has ended.': 'Livesendingen er nede eller er avsluttet',\n 'There was a problem providing access to protected content.': 'Kunne ikke spille av video, venligst sjekk
internettforbindelsen din',\n 'This video cannot be played because of a problem with your internet connection.': 'Kunne ikke spille av video, venligst sjekk
internettforbindelsen din',\n\n // sharing box heading\n Sharing: 'Del denne videoen',\n 'Live button': 'Direkte',\n\n // error message\n 'Error code': 'Feilkode',\n\n // closed captions\n en_GB: 'English',\n es_ES: 'Español',\n nb_NO: 'Bokmål',\n sv_SE: 'Svensk',\n\n // av button\n 'Audio video switch': 'Kun lyd',\n 'Playing audio only': 'Spiller kun lyd',\n\n ads: {\n admessage: 'Annonsen slutter om xx',\n cuetext: 'Annonse',\n skipmessage: 'Hopp over om xx',\n skiptext: 'Hopp over',\n podmessage: 'Annonse __AD_POD_CURRENT__ av __AD_POD_LENGTH__'\n },\n\n adblock: {\n admessage: 'Annonsen slutter om [time]'\n },\n player: {\n player: 'Videospiller',\n play: 'Spill',\n playback: 'Start avspilling',\n pause: 'Pause',\n volume: 'Volum',\n prev: 'Forrige',\n next: 'Neste',\n cast: 'Chromecast',\n airplay: 'AirPlay',\n fullscreen: 'Fullskjerm',\n playlist: 'Spilleliste',\n hd: 'Kvalitet',\n cc: 'Undertekster',\n audioTracks: 'Lydspor',\n playbackRates: 'Avspillingshastighet',\n replay: 'Spill igjen',\n buffer: 'Laster inn',\n more: 'Mer',\n liveBroadcast: 'Liveopptak',\n loadingAd: 'Laster annonse',\n rewind: 'Spol tilbake 10 sekunder',\n nextUp: \"Neste' video\",\n nextUpClose: 'Lukk neste',\n related: 'Relaterte videoer',\n close: 'Lukk',\n settings: ' Innstillinger',\n unmute: 'Slå på lyd',\n copied: 'Kopiert'\n }\n },\n\n se: {\n // Countdown plugin\n 'Video will start at': 'Videon är tillgänglig',\n 'Video will start in': 'Videon är tillgänglig om',\n\n 'ageLimit-0': 'A',\n\n // months is special case for translating month to human readable form\n months: [\n 'Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'\n ],\n // general troubles, we don't know exactly what had happen\n [codeToString(STATUS_CODES.GENERAL_ERROR)]: 'Något gick fel. Försök igen senare.',\n // stream is available only in certain areas/countries\n [codeToString(STATUS_CODES.NOT_ACTIVE_GEOBLOCKED)]: 'Vi har tyvärr endast rättigheter att spela detta innehåll i Sverige',\n // stream is 404 (wrong/deleted from akamai)\n [codeToString(STATUS_CODES.NOT_FOUND)]: 'Videon är inte tillgänglig',\n // asset is not active\n [codeToString(STATUS_CODES.NOT_ACTIVE)]: 'Videon är inte tillgänglig',\n // asset's flight times are in the past\n [codeToString(STATUS_CODES.NOT_ACTIVE_PAST)]: 'Videon är inte tillgänglig',\n // network error while playing live stream\n [codeToString(STATUS_CODES.NETWORK_ERROR)]: 'Något gick fel. Kolla gärna din internet koppling och försök lite senare',\n // token can not be retrieved\n [codeToString(STATUS_CODES.TOKEN_FETCH_ERROR)]: 'Token kunde inte hämtas',\n\n // jw player error messages\n 'This video cannot be played because of a technical error.': 'Den här videon kan inte spelas på grund av ett tekniskt fel',\n 'Sorry, the video player failed to load.': 'Något gick fel. Försök igen senare',\n 'This video file cannot be played.': 'Det gick inte att spela videon',\n 'The live stream is either down or has ended.': 'Live överföring är antingen nere eller har slutat',\n 'There was a problem providing access to protected content.': 'Något gick fel. Kolla gärna din internet koppling och försök lite senare',\n 'This video cannot be played because of a problem with your internet connection.': 'Något gick fel. Kolla gärna din internet koppling och försök lite senare',\n\n // sharing box heading\n Sharing: 'Dela',\n 'Live button': 'Live',\n\n // error message\n 'Error code': 'Felkod',\n\n // closed captions\n en_GB: 'English',\n es_ES: 'Español',\n nb_NO: 'Bokmål',\n sv_SE: 'Sverige',\n\n // av button\n 'Audio video switch': 'Endas ljud',\n 'Playing audio only': 'Spelar bara ljud',\n\n ads: {\n admessage: 'Annonsen tar slut om xx sekunder',\n cuetext: 'Annons',\n skipmessage: 'Skippa annons om xx',\n skiptext: 'Skippa',\n podmessage: 'Annons __AD_POD_CURRENT__ av __AD_POD_LENGTH__'\n },\n\n adblock: {\n admessage: 'Annonsen tar slut om [time] sekunder'\n },\n\n player: {\n player: 'Videospelare',\n play: 'Spela',\n playback: 'Spela video',\n pause: 'Pausa',\n volume: 'Volym',\n prev: 'Förra',\n next: 'Nästa',\n cast: 'Chromecast',\n airplay: 'AirPlay',\n fullscreen: 'Fullskärm',\n playlist: 'Spellista',\n hd: 'Kvalitet',\n cc: 'Undertexter',\n audioTracks: 'Ljudspår',\n playbackRates: 'Uppspelningshastighet',\n replay: 'Spela igen',\n buffer: 'Laddar',\n more: 'Mer',\n liveBroadcast: 'Live',\n loadingAd: 'Laddar annons',\n rewind: 'Spola tillbaka 10 sekunder',\n nextUp: 'Nästa',\n nextUpClose: 'Stäng',\n related: 'Fler videos',\n close: 'Stäng',\n settings: 'Inställningar',\n unmute: 'Slå på ljud',\n copied: 'Kopierad'\n }\n }\n};\n\n/**\n * Get single locale translations hash map\n */\nexport default function (locale) {\n return translations[locale];\n}\n","/* global __BUILD_VERSION__ */\nimport translations from './config/translations';\nimport jwKeys from './config/jw-keys';\n\nconst VERSION = __BUILD_VERSION__;\n\nconst config = {\n version: VERSION,\n player: {\n keys: jwKeys\n },\n /**\n * SVP API configuration\n */\n api: {\n url: '//svp.vg.no/svp/api/v1/',\n tokenUrl: '//svp.vg.no/svp/token/v1/',\n thumbnailsUrl: '//svp.vg.no/svp/thumbnails/v1/',\n\n vendor: null,\n /**\n * API identifier\n */\n identifier: 'svp-player',\n\n /**\n * Get full endpoint url to requested resource\n *\n * @param vendor\n * @param endpoint\n * @returns {string}\n */\n getUrl(vendor, endpoint) {\n const joiner = (endpoint.indexOf('?') > -1) ? '&' : '?';\n let url = `${this.url + vendor + endpoint + joiner}appName=${this.identifier}`;\n\n // enable cachebreaking in preview mode\n if (this.cb === true) {\n url += `&cb=${Math.random() * 10000}`;\n }\n\n return url;\n }\n },\n\n ads: {\n homad: {\n global: 'https://s3.amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json',\n client: '/homad-config.json'\n },\n\n appnexus: {\n vmap: 'https://ib.adnxs.com/vmap',\n ast: 'https://acdn.adnxs.com/ast/ast.js',\n debug: false\n }\n },\n\n cdn: {\n svp: `//cdn.svp.schibsted.io/player/${VERSION}`,\n player: '//cdn.svp.schibsted.io/jw/jwplayer-8.9.3',\n pollyfils: '//svp.vgc.no/pollyfils/es6-promise.min.js',\n youbora: 'https://smartplugin.youbora.com/v6/js/adapters/jwplayer/6.4.4/sp.min.js'\n },\n\n time: '//svp.vg.no/svp/api/v1/time',\n\n /**\n * Imbo images server\n */\n images: {\n servers: ['imbo', 'imbo01', 'imbo02', 'imbo03'],\n\n sizes: {\n poster: {\n autoHeight: [\n 380, 480, 580, 680, 780, 800, 980, 1080, 1440, 2048\n ],\n autoWidth: [\n 452, 613, 740, 900, 1080, 1440\n ]\n }\n\n }\n },\n\n /**\n * Default skins for providers\n */\n skins: {\n default: {\n url: `//cdn.svp.schibsted.io/player/${VERSION}/css/player.css`,\n name: 'svp-default jw-skin-seven'\n }\n },\n\n about: {\n vgtv: {\n link: 'http://www.vgtv.no/',\n text: 'VGTV'\n }\n },\n\n sharing: {\n global: {\n sites: ['facebook', 'twitter']\n },\n\n vgtv: {\n link: 'http://www.vgtv.no/#!/MEDIAID',\n // eslint-disable-next-line max-len\n code: ''\n }\n },\n\n domains: {\n blacklist: {\n global: [],\n ab: ['*avpixlat.info', '*exponerat.net']\n },\n\n whitelist: {\n global: [\n '*localhost', '*schibsted.io', '*schibsted.media', '*schibsted.ws', '*schibsted.se', '*smp.no',\n '*plan3dev.se', '*plan3.se',\n '*vg.no', '*vgtv.no', '*vgnett.no',\n '*aftonbladet.se',\n '*aftenposten.no', '*ap.no',\n '*sa.no', '*aftenbladet.no',\n '*vglive.no',\n\n // stream cluster\n '*pubops.net',\n\n '*adresseavisen.no',\n '*polarismedia.no',\n '*adressa.no',\n '*bt.no',\n '*fvn.no',\n\n '*htmlinstant.com',\n '*ht.no',\n '*rbnett.no',\n '*itromso.no',\n '*folkebladet.no',\n '*framtidinord.no',\n '*osloby.no',\n '*av-avis.no',\n '*medianorge.no',\n '*herokuapp.com',\n '*bergenstidende.no',\n '*bonansa.no',\n '*sysla.no',\n '*bygdanytt.no',\n '*vestnytt.no',\n '*strilen.no',\n '*snd.no', '*fedrelandsvennen.no', '*lister24.no', '*l-a.no', '*lindesnesfyr.no',\n\n // Polaris related newspapers\n // addressa.no\n '*adressa.no', '*avisa-st.no', '*banett.no', '*fosna-folket.no', '*hitra-froya.no', '*innherred.no',\n '*mb.no', '*bladet.no', '*opdalingen.no', '*tronderbladet.no',\n // rbnett\n '*rbnett.no', '*andalsnes-avis.no', '*driva.no',\n // smp newspaper\n '*smp.no', '*dolen.no', '*fjordabladet.no', '*fjt.no', '*fjordingen.no', '*fjuken.no', '*heroynytt.no',\n '*morenytt.no', '*sunnmoringen.no', '*vigga.no', '*vikebladet.no',\n // itromso.no\n '*itromso.no', '*framtidinord.no',\n // ht.no\n '*ht.no', '*vol.no',\n // t-a.no\n '*t-a.no', '*namdalsavisa.no',\n // other polaris newspapers\n '*altaposten.no', '*folkebladet.no',\n '*svd.se',\n // marketplaces\n '*finn.no',\n '*familieklubben.no',\n '*tek.no',\n\n // testing env\n '*mylocal.com'\n ]\n },\n\n preview: {\n global: [\n '*vgnett.no', '*svp.schibsted.io', '*cms.schibsted.media', '*localhost', '*pubops.net'\n ]\n }\n },\n\n translations: translations\n};\n\nexport default config;\n","\nexport default {\n default: 'OjqkBWp9VpYP8utpWdzBZ+eZIJhcfOW5U9g4/w==',\n //\n '100sport': 'Uq5GO7mRz+oxp7pVh3bZEvDEBzEYRTG4h3sr1Q==',\n ab: 'qK+optxkJTV2KblAIiLdoWze6AAGxX5Qxeb57A==',\n adressa: 'BQs7m1EiK0wlK8xAZQgJwU1a4OskbKgoYRSEfA==',\n altaposten: 'Y0grkUQ6BaCat409fP7mPqr1SbDS+LntWrQIpg==',\n ap: 'ElscszbjUK+A0En7My3UPpJ/4MlOUOn+fiU2/w==',\n bt: 'wgmdmAfgbneZjUBt8ZxqiKTxVCpriTwcC06hzQ==',\n brandstudio: 'uXOJWRxZaxOSRhIisAGWsEbzn3PIhbTlCn99IQ==',\n folkebladet: 'kGoJc75y4Uq1r2kw2n883oYzGk+SrEJ2GEDQUQ==',\n fvn: '88vcnFV8g4crXq1P8jrGz8D7XqMwawGvwFmhJg==',\n harstad: 'C8hK/HIbIL3k9h4dN4xY3lHAPdjLyx7B4WGM/w==',\n itromso: 'QAPvDWM3mHi3lYOZCLqOwHZMstixgFefhc/d1Q==',\n podcast: 'X2K7i+dwWXsIR0BKyX+3C+8s4y9VOWcYgtjeJA==',\n rbnett: 'y7Z4M5Ah6dOyDH7/ZrCQjHZPb3E3xnctwkixbw==',\n riks: 'a5kTQmkeGHV+P2wOaTQvAuXEdivj2lbXoAxTbw==',\n ridenews: '6s5IkHj1LiODLxDOaYr1ze6F7F1Cun92UFuOpA==',\n sa: 'dWpue+L8nJKbDFqh9Ps3o2mxqr92MY2G9tQohg==',\n schibsted: 'Cn+pnRPeR7dlwUgy+QwoSwyu0NXoGUtxD/LVqA==',\n smp: 'eZ34FUhLc6cW3MypHSgtbYwRgbDxKLV/iaABmQ==',\n svd: 'Olwljnb5W0VdUf38yWyv3kjowR9JamQYw4RndA==',\n tronderavisa: '7azVhGsMlCm9EuRPr4EJ8RY6cyVbmAgeS1MkKw==',\n vgtv: 'edF0bFyKcM68omCq24JsMWw/CO/f6cAgS91oiQ==',\n vgtvs: 'D/kRElM9UDSgZxbEqPBESxIKamNBql5PeIabpg=='\n};\n","import config from '../config';\n\nconfig.env = 'production';\nexport default config;\n","module.exports = { \"default\": require(\"core-js/library/fn/promise\"), __esModule: true };","\"use strict\";\n\nexports.__esModule = true;\n\nvar _promise = require(\"../core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new _promise2.default(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return _promise2.default.resolve(value).then(function (value) {\n step(\"next\", value);\n }, function (err) {\n step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n};","module.exports = { \"default\": require(\"core-js/library/fn/object/assign\"), __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};","var core = module.exports = { version: '2.5.1' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\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}();","module.exports = { \"default\": require(\"core-js/library/fn/object/get-prototype-of\"), __esModule: true };","\"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 _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};","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && key in exports) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","\"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};","module.exports = { \"default\": require(\"core-js/library/fn/object/keys\"), __esModule: true };","\"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};","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nvar _isIterable2 = require(\"../core-js/is-iterable\");\n\nvar _isIterable3 = _interopRequireDefault(_isIterable2);\n\nvar _getIterator2 = require(\"../core-js/get-iterator\");\n\nvar _getIterator3 = _interopRequireDefault(_getIterator2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if ((0, _isIterable3.default)(Object(arr))) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","module.exports = {};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/json/stringify\"), __esModule: true };","import scriptLoader from './script-loader';\n\nconst loadModule = (moduleSrc) => {\n const root = window;\n\n if (root.define && root.define.amd) {\n return new Promise((resolve) => {\n root.require([moduleSrc], resolve);\n });\n }\n\n return scriptLoader(moduleSrc);\n};\n\nexport default loadModule;\n","function loadScript(path, onSuccess, onError) {\n var script = document.createElement(\"script\"),\n done = false;\n\n const callback = onSuccess || function () {};\n\n script.type = \"text/javascript\";\n script.src = path;\n script.async = true;\n script.onreadystatechange = script.onload = function() {\n if ( !done && (!this.readyState ||\n this.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n done = true;\n callback();\n\n // Handle memory leak in IE\n script.onload = script.onreadystatechange = null;\n }\n };\n\n script.onerror = onError;\n\n document.body.appendChild(script);\n}\n\nexport default (path) => {\n return new Promise((resolve, reject) => loadScript(path, resolve, reject));\n}","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","exports.f = {}.propertyIsEnumerable;\n","module.exports = true;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","exports.f = Object.getOwnPropertySymbols;\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/define-property\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/get-iterator\"), __esModule: true };","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function (key) {\n return store[key] || (store[key] = {});\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","exports.f = require('./_wks');\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","module.exports = \"\"","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","module.exports = require('./_hide');\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","module.exports = \"\"","module.exports = { \"default\": require(\"core-js/library/fn/object/freeze\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/object/values\"), __esModule: true };","/* jshint ignore:start */\n/* eslint-disable */\n\nvar isLoaded = false;\nvar exportz = {};\n\nexport default function (conf) {\n if (!isLoaded) {\n isLoaded = true;\n\n (function(k) {\n k = k || {}; (function(l) {\n function b() { this.u = 'setup'; }l.g = b; b.prototype = {\n c: function(a) { a = a && typeof a === 'number' && a > 0 ? Math.round(a) : 10; for (var g = '', e = 0; e < a; e++)g += String.fromCharCode((Math.random() < 0.5 ? 65 : 97) + Math.floor(26 * Math.random())); return g; },\n A: function(a) {\n function g(d) {\n var a = '';\n var c;\n var g;\n for (c = 7; c >= 0; c--)g = d >>> 4 * c & 15, a += g.toString(16);return a;\n }function e(d, a) { return d << a | d >>> 32 - a; }\n var c;\n var h;\n var b = Array(80);\n var l = 1732584193;\n var q = 4023233417;\n var p = 2562383102;\n var k = 271733878;\n var t = 3285377520;\n var f;\n var m;\n var n;\n var r;\n var d;\n a = a && typeof a === 'string'\n ? a : '';f = a.length;var u = [];for (c = 0; c < f - 3; c += 4)h = a.charCodeAt(c) << 24 | a.charCodeAt(c + 1) << 16 | a.charCodeAt(c + 2) << 8 | a.charCodeAt(c + 3), u.push(h);switch (f % 4) { case 0: c = 2147483648; break; case 1: c = a.charCodeAt(f - 1) << 24 | 8388608; break; case 2: c = a.charCodeAt(f - 2) << 24 | a.charCodeAt(f - 1) << 16 | 32768; break; case 3: c = a.charCodeAt(f - 3) << 24 | a.charCodeAt(f - 2) << 16 | a.charCodeAt(f - 1) << 8 | 128; }for (u.push(c); u.length % 16 != 14;)u.push(0);u.push(f >>> 29);u.push(f << 3 & 4294967295);for (a = 0; a < u.length; a += 16) {\n for (c = 0; c < 16; c++)b[c] = u[a + c]; for (c = 16; c <= 79; c++)b[c] = e(b[c - 3] ^ b[c - 8] ^ b[c - 14] ^ b[c - 16], 1); h = l; f = q; m = p; n = k; r = t; for (c = 0; c <= 19; c++)d = e(h, 5) + (f & m | ~f & n) + r + b[c] + 1518500249 & 4294967295, r = n, n = m, m = e(f, 30), f = h, h = d; for (c = 20; c <= 39; c++)d = e(h, 5) + (f ^ m ^ n) + r + b[c] + 1859775393 & 4294967295, r = n, n = m, m = e(f, 30), f = h, h = d; for (c = 40; c <= 59; c++)d = e(h, 5) + (f & m | f & n | m & n) + r + b[c] + 2400959708 & 4294967295, r = n, n = m, m = e(f, 30), f = h, h = d; for (c = 60; c <= 79; c++)d = e(h, 5) + (f ^ m ^ n) + r + b[c] + 3395469782 & 4294967295, r = n, n = m, m = e(f, 30), f = h, h = d; l = l + h & 4294967295; q = q + f & 4294967295; p = p + m & 4294967295; k = k + n\n & 4294967295; t = t + r & 4294967295;\n }return (g(l) + g(q) + g(p) + g(k) + g(t)).toLowerCase();\n },\n j: function(a) {\n for (var g = '', e, c, b, l, k, q, p = 0; p < a.length;) {\n e = a.charCodeAt(p++), c = a.charCodeAt(p++), b = a.charCodeAt(p++), l = e >> 2, e = (e & 3) << 4 | c >> 4, k = (c & 15) << 2 | b >> 6, q = b & 63, isNaN(c) ? k = q = 64 : isNaN(b) && (q = 64), g = g + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.charAt(l) + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.charAt(e) + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.charAt(k)\n + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.charAt(q);\n } return g;\n },\n fireEvent: function(a, g, b) {\n var c = this.u;\n var h = document.createEvent('CustomEvent');\n b.state = c;h.initCustomEvent(g, !1, !1, b);a.dispatchEvent(h);\n },\n l: function(a, g, b) { g || (g = 'hdEvent'); b || (b = window); this.fireEvent(b, g, a); },\n track: function(a, b, e) {\n if (e) {\n if (!homad || !homad.M)window.setTimeout(function() { this.track(a, b, e); }.bind(this), 500); else if (homad.isEnabled) {\n var c = `${homad.T()}?homad_track_key=${encodeURIComponent(a)}&homad_track_value=${\n encodeURIComponent(b)}`; homad.o(c, !0); c = homad.o(c, !0); c.data.homad_url_prefix_alias = ''; c.data.homad_track_key = encodeURIComponent(a); c.data.homad_track_value = encodeURIComponent(b); homad.P(c, function() {});\n }\n }\n }\n };\n }(k)); var v = k.g || v; new v(); var w = new v(); (function(l) {\n function b(a) { this.data = a || {}; }l.f = b; b.S = function(a, b) {\n var e = {};\n var c;\n for (c in b)e[c] = b[c];for (c in a)e[c] = a[c];return e;\n }; b.w = { code: '1000', type: 'penalty', message: '' }; b.V = { code: '1001', type: 'mediaerror', message: '' }; b.C = { code: '1002', type: 'vpaid', message: '' };\n b.O = { code: '1003', type: 'emptyVast', message: '' }; b.F = { code: '1004', type: 'malformattedXML' }; b.J = { code: '1005', type: 'adStart' }; b.G = { code: '1006', type: 'adFirstQuartile' }; b.I = { code: '1007', type: 'adMidPoint' }; b.K = { code: '1008', type: 'adThirdQuartile' }; b.i = { code: '1009', type: 'adComplete' }; b.H = { code: '1010', type: 'adImpressionsCalled' }; b.B = { code: '1011', type: 'vastLoadingFailed' }; b.U = { code: '1012', type: 'noCreative' }; b.R = { code: '1013', type: 'emptyVastFromHomadServerEvent', message: '' }; b.D = {\n code: '1014',\n type: 'wrapperLimitReached',\n message: ''\n }; b.L = { code: '1015', type: 'clickthrough', message: '' }; b.N = { code: '1016', type: 'continueContent', message: '' }; b.X = { code: '1017', type: 'variableDeletedEvent', message: '' }; b.W = { code: '1018', type: 'noVariableSettingEvent', message: '' }; b.prototype = {};\n }(k)); var z = k.f || z; (function(l) {\n function b() {}l.h = b; b.prototype = {\n s: function(a) {\n var b = 0;\n var e;\n var c;\n var h;\n if (a.length == 0) return b;e = 0;for (h = a.length; e < h; e++)c = a.charCodeAt(e), b = (b << 5) - b + c, b |= 0;return Math.abs(b);\n },\n m: function() {\n return Math.round(Date.now() / 1E3 / 3600 / 24) + navigator.appCodeName\n + navigator.appName + navigator.appVersion + navigator.userAgent + navigator.platform + (navigator.language || navigator.i || 'x');\n },\n a: function(a) { a = parseInt(a); if (a >= 65 && a <= 90 || a >= 97 && a <= 122) return String.fromCharCode(a); if (a <= 0) return ''; if (a < 65) return this.a(a + 65); if (a > 90) return this.a(Math.round(a / 2)); },\n reverse: function(a) { for (var b = '', e = a.length - 1, b = ''; e >= 0; b += a[e--]);return b; },\n b: function() {\n for (var a = this.s(`${this.m()}`), a = (`${a}${this.reverse(`${a}`)}`).match(/.{1,2}/g), b = '', e = 0; e < a.length; e++)b += this.a(a[e]); b.length == 0\n && (b = 'zork'); return b;\n },\n v: function() { return `${this.b()}2`; }\n };\n }(k)); var y = k.h || y; (function() {\n function l() {\n if (p)conf.startPlayer && eval(conf.startPlayer), document.fp_error = !0, document.hd_ready = !0; else {\n var d = document.createElement('script');d.type = 'text/javascript';d.src = `https://hgc-cf-cache-1.svonm.com/hd-main.js?cache=${w.c(10)}`;d.onerror = e;document.head.firstChild ? document.head.insertBefore(d, document.head.firstChild) : document.head.appendChild(d);\n var d = new y();\n var a = document.createEvent('CustomEvent');\n conf.version = '20170704_0930_802';a.initCustomEvent(d.b(), !1, !1, conf);window.setInterval(function() { window.dispatchEvent(a); }, 500);b();\n }\n }function b() { var d = new y(); r = window.setTimeout(function() { a(); }, 15E3); window.addEventListener(d.v(), function() { window.clearTimeout(r); }); }function a() {\n for (var d = document.getElementsByTagName('video'), a = 0; a < d.length; a++) { try { d[a] && d[a].pause && typeof d[a].pause === 'function' && d[a].pause(); } catch (b) {}d[a].parentNode.removeChild(d[a]); }d = document.getElementsByTagName('object'); for (a = 0; a < d.length; a++)d[a].parentNode.removeChild(d[a]);\n d = document.getElementsByClassName('video-wrapper'); for (a = 0; a < d.length; a++)d[a] && d[a].parentNode && d[a].parentNode.removeChild(d[a]); d = document.getElementsByClassName('videoplayer'); for (a = 0; a < d.length; a++)d[a] && d[a].parentNode && d[a].parentNode.removeChild(d[a]); if (window.self != window.top) for (d = window.document; d.hasChildNodes();)d.removeChild(d.lastChild);\n }function g() {\n if (t) {\n var d = `fail-init-100.gif${v()}`; k(t, function() {}, function() {}, {\n homad_url_prefix_alias: f,\n homad_url_suffix_base64: w.j(d),\n homad_url_suffix: d,\n homad_hash_guessed: 'true'\n });\n }w.l(z.w); x && typeof x === 'function' ? x() : (a(), window.setInterval(a, 500), window.setTimeout(a, 1500));\n }function e() { var a = document.createElement('script'); a.type = 'text/javascript'; a.src = `https://s3.amazonaws.com/homad-global-configs.schneevonmorgen.com/hd-main.js?cache=${w.c(10)}`; a.onerror = g; document.head.firstChild ? document.head.insertBefore(a, document.head.firstChild) : document.head.appendChild(a); }function c(a) { p || (p = !q(a.enabled)); l(); }function h(a) {\n a && a.server && a.server[0]\n && (t = (`${a.server[1]}`).replace('[hash]', w.A(`${(new Date()).getTime()}`)), f = 'homadvastimpressions'); p ? l() : (p = !q(a.enabled)) ? l() : k(a.config, c, l);\n }function k(a, b, c, e) {\n var f = new XMLHttpRequest(); f.onreadystatechange = function() { if (b && f.readyState == 4 && f.status == 200) { var a = {}; try { a = JSON.parse(f.responseText); } catch (d) { a.enabled = 'false'; }b(a); }c && f.readyState == 4 && f.status != 200 && c(f); }; try {\n if (e) {\n f.open('POST', a, !0); a = e; e = ''; for (var g in a)e += `&${g}=${encodeURIComponent(a[g])}`; e = e.substr(1); f.setRequestHeader('Content-type',\n 'application/x-www-form-urlencoded'); f.send(e);\n } else f.open('GET', a, !0), f.send();\n } catch (h) { c && c(f); }\n }function v() { var a = '?c=unknown'; window && window.location && window.location.hostname && (a = `?c=${window.location.hostname}`); return a; }function q(a) { return a == 'True' || a == 'true' || a == 1 || a == '1' || a == 1; }\n var p = !1;\n var x = conf.onFailure;\n var t = '';\n var f = '';\n var m = !1;\n var n = 0;\n var r = !1;\n k(conf.globalConfig, function(a) { p ? l() : p = !q(a.enabled); });typeof conf.clientConfig === 'string' ? k(conf.clientConfig, h, function() {\n window.setTimeout(function() {\n k(conf.clientConfig,\n h, function() { window.setTimeout(g, 1500); });\n }, 500);\n }) : m = window.setInterval(function() { var a = ''; try { a = conf.clientConfig(), n++, a ? (h(a), window.clearInterval(m)) : n >= 50 && (window.clearInterval(m), g()); } catch (b) {} }, 100);\n }());\n }).call(exportz, exportz);\n }\n}\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = { \"default\": require(\"core-js/library/fn/object/get-own-property-descriptor\"), __esModule: true };","module.exports = { \"default\": require(\"core-js/library/fn/reflect/own-keys\"), __esModule: true };","module.exports = \"
\\n
\\\">
\\n\\n
\\n \\n \\n \\n
\\n\\n \\n
\"","module.exports = \"
\\n
\\n
\\n \\n \\n
\\n
\\n \\n
\\n
\\n
\\n\"","module.exports = \"\\n\"","module.exports = \"\\n <%= closeIcon %>\\n\\n\\n <%= next.getTitle() %>\\n ');\\\">\\n s\\\">\\n Next <%= nextIcon %>\\n );\\\">\\n \\n\\n\"","module.exports = \"\\n\"","module.exports = { \"default\": require(\"core-js/library/fn/map\"), __esModule: true };","var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.onabort = function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n self.fetch = fetch\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n}\n","import config from 'player/config';\nimport moduleLoader from 'utils/module-loader';\n\n// eslint-disable-next-line\nconst loadSvpLibrary = () => {\n return import(/* webpackMode: \"eager\" */ './index').then((SVP) => [\n SVP.default,\n SVP.preInitialize,\n SVP.postInitialize\n ]);\n};\n\nconst loadJwPlayer = (root) => {\n const PLAYER_LIB = `${config.cdn.player}/jwplayer.js`;\n\n return moduleLoader(PLAYER_LIB).then((jwplayer = root.jwplayer) => {\n root.jwplayer = jwplayer;\n });\n};\n\n(async function (root) {\n const onReady = root.onSvpPlayerReady;\n\n // onSvpPlayerReady is required callback to handle due to SDK async loading\n loadJwPlayer(root)\n .then(loadSvpLibrary)\n .then((library) => {\n const [SVP, preInitialize, postInitialize] = library;\n\n if ((root && !root.SVP) || (root.SVP && root.SVP.isLoaded !== true)) {\n root.SVP = SVP;\n root.SVP.isLoaded = true;\n\n preInitialize();\n\n if (window.dispatchEvent) {\n const event = document.createEvent('Event');\n event.initEvent('onSvpPlayerReady', false, true);\n window.dispatchEvent(event);\n }\n\n if (onReady) {\n onReady();\n }\n\n postInitialize();\n }\n });\n}(window));\n","// This method of obtaining a reference to the global object needs to be\n// kept identical to the way it is obtained in runtime.js\nvar g = (function() { return this })() || Function(\"return this\")();\n\n// Use `getOwnPropertyNames` because not all browsers support calling\n// `hasOwnProperty` on the global `self` object in a worker. See #183.\nvar hadRuntime = g.regeneratorRuntime &&\n Object.getOwnPropertyNames(g).indexOf(\"regeneratorRuntime\") >= 0;\n\n// Save the old regeneratorRuntime in case it needs to be restored later.\nvar oldRuntime = hadRuntime && g.regeneratorRuntime;\n\n// Force reevalutation of runtime.js.\ng.regeneratorRuntime = undefined;\n\nmodule.exports = require(\"./runtime\");\n\nif (hadRuntime) {\n // Restore the original runtime.\n g.regeneratorRuntime = oldRuntime;\n} else {\n // Remove the global property added by runtime.js.\n try {\n delete g.regeneratorRuntime;\n } catch(e) {\n g.regeneratorRuntime = undefined;\n }\n}\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n runtime.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration. If the Promise is rejected, however, the\n // result for this iteration will be rejected with the same\n // reason. Note that rejections of yielded Promises are not\n // thrown back into the generator function, as is the case\n // when an awaited Promise is rejected. This difference in\n // behavior between yield and await is important, because it\n // allows the consumer to decide what to do with the yielded\n // rejection (swallow it and continue, manually .throw it back\n // into the generator, abandon iteration, whatever). With\n // await, by contrast, there is no opportunity to examine the\n // rejection reason outside the generator function, so the\n // only option is to throw it from the await expression, and\n // let the generator function handle the exception.\n result.value = unwrapped;\n resolve(result);\n }, reject);\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n runtime.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n if (delegate.iterator.return) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n})(\n // In sloppy mode, unbound `this` refers to the global object, fallback to\n // Function constructor if we're in global strict mode. That is sadly a form\n // of indirect eval which violates Content Security Policy.\n (function() { return this })() || Function(\"return this\")()\n);\n","module.exports = { \"default\": require(\"core-js/library/fn/is-iterable\"), __esModule: true };","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function () { /* empty */ };\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value);\n if (domain) domain.exit();\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n if (promise._h == 1) return false;\n var chain = promise._a || promise._c;\n var i = 0;\n var reaction;\n while (chain.length > i) {\n reaction = chain[i++];\n if (reaction.fail || !isUnhandled(reaction.promise)) return false;\n } return true;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver\n } else if (Observer) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n var promise = Promise.resolve();\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol/iterator\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n require('./_object-gops').f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n if (it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n replacer = args[1];\n if (typeof replacer == 'function') $replacer = replacer;\n if ($replacer || !isArray(replacer)) replacer = function (key, value) {\n if ($replacer) value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","module.exports = { \"default\": require(\"core-js/library/fn/array/from\"), __esModule: true };","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","require('../../modules/es6.object.freeze');\nmodule.exports = require('../../modules/_core').Object.freeze;\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","require('../../modules/es7.object.values');\nmodule.exports = require('../../modules/_core').Object.values;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $values = require('./_object-to-array')(false);\n\n$export($export.S, 'Object', {\n values: function values(it) {\n return $values(it);\n }\n});\n","var getKeys = require('./_object-keys');\nvar toIObject = require('./_to-iobject');\nvar isEnum = require('./_object-pie').f;\nmodule.exports = function (isEntries) {\n return function (it) {\n var O = toIObject(it);\n var keys = getKeys(O);\n var length = keys.length;\n var i = 0;\n var result = [];\n var key;\n while (length > i) if (isEnum.call(O, key = keys[i++])) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n } return result;\n };\n};\n","module.exports = \"\"","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","module.exports = { \"default\": require(\"core-js/library/fn/object/set-prototype-of\"), __esModule: true };","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/object/create\"), __esModule: true };","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","require('../../modules/es6.reflect.own-keys');\nmodule.exports = require('../../modules/_core').Reflect.ownKeys;\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// all object keys, includes non-enumerable and symbols\nvar gOPN = require('./_object-gopn');\nvar gOPS = require('./_object-gops');\nvar anObject = require('./_an-object');\nvar Reflect = require('./_global').Reflect;\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = gOPN.f(anObject(it));\n var getSymbols = gOPS.f;\n return getSymbols ? keys.concat(getSymbols(it)) : keys;\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.map');\nrequire('../modules/es7.map.to-json');\nrequire('../modules/es7.map.of');\nrequire('../modules/es7.map.from');\nmodule.exports = require('../modules/_core').Map;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Map', { toJSON: require('./_collection-to-json')('Map') });\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.of\nrequire('./_set-collection-of')('Map');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-map.from\nrequire('./_set-collection-from')('Map');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","/* jshint ignore:start */\n\n var idCounter = 0;\n\n // we do not include underscore as it is our hard dependency\n var _ = jwplayer._,\n property = function (key) {\n return function (obj) {\n return obj == null ? void 0 : obj[key];\n };\n },\n MAX_ARRAY_INDEX = Math.pow(2, 53) - 1,\n getLength = property('length'),\n isArrayLike = function (collection) {\n var length = getLength(collection);\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\n };\n\n _.isEmpty = function (obj) {\n if (obj == null) return true;\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\n return _.keys(obj).length === 0;\n };\n\n _.uniqueId = function(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n };\n\n export default _;\n\n/* jshint ignore:end */\n","/* jshint ignore:start */\nimport _ from './underscore';\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n return internalOn(this, name, callback, context);\n };\n\n // Guard the `listening` argument from the public API.\n var internalOn = function(obj, name, callback, context, listening) {\n obj._events = eventsApi(onApi, obj._events || {}, name, callback, {\n context: context,\n ctx: obj,\n listening: listening\n });\n\n if (listening) {\n var listeners = obj._listeners || (obj._listeners = {});\n listeners[listening.id] = listening;\n }\n\n return obj;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n var thisId = this._listenId || (this._listenId = _.uniqueId('l'));\n listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};\n }\n\n // Bind callbacks on obj, and keep track of them on listening.\n internalOn(obj, name, callback, this, listening);\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({ callback: callback, context: context, ctx: context || ctx, listening: listening });\n }\n return events;\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var i = 0, listening;\n var context = options.context, listeners = options.listeners;\n\n // Delete all events listeners and \"drop\" events.\n if (!name && !callback && !context) {\n var ids = _.keys(listeners);\n for (; i < ids.length; i++) {\n listening = listeners[ids[i]];\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n return;\n }\n\n var names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Replace events if there are any remaining. Otherwise, clean up.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n listening = handler.listening;\n if (listening && --listening.count === 0) {\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n }\n }\n\n // Update tail event if the list has any events. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n if (_.size(events)) return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));\n return this.on(events, void 0, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, cb, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n export default Events;\n\n","\n \n var userAgent = navigator.userAgent;\n\n function userAgentMatch(regex) {\n return userAgent.match(regex) !== null;\n }\n\n function lazyUserAgentMatch(regex) {\n return function () {\n return userAgentMatch(regex);\n };\n }\n\n var isFF = lazyUserAgentMatch(/gecko\\//i);\n var isIETrident = lazyUserAgentMatch(/trident\\/.+rv:\\s*11/i);\n var isIPad = lazyUserAgentMatch(/iPad/i);\n var isIPhone = lazyUserAgentMatch(/iPhone/i);\n// Check for Facebook App Version to see if it's Facebook\n\n function isEdge() {\n return userAgentMatch(/\\sEdge\\/\\d+/i);\n }\n\n function isMSIE() {\n return userAgentMatch(/msie/i);\n }\n\n function isChrome() {\n return userAgentMatch(/\\s(?:Chrome|CriOS)\\//i) && !isEdge();\n }\n\n function isIE() {\n return isEdge() || isIETrident() || isMSIE();\n }\n\n function isSafari() {\n return userAgentMatch(/safari/i) && !userAgentMatch(/(?:Chrome|CriOS|chromium|android)/i);\n }\n\n /** Matches iOS devices **/\n function isIOS(version) {\n var isAppleIOS = userAgentMatch(/iP(hone|ad|od)/i),\n result = null;\n\n // check if version matches\n if(isAppleIOS && version) {\n result = /OS ([._\\d]+)/.exec(userAgent);\n\n // get version and parse it\n if(result && parseInt(result[1], 10) === version) {\n return true;\n } else {\n // didn't match version\n return false;\n }\n }\n\n return isAppleIOS;\n }\n\n function isAndroid() {\n return userAgentMatch(/Android/i);\n }\n\n /** Matches Android devices **/\n function isAndroidNative() {\n // Android Browser appears to include a user-agent string for Chrome/18\n if (userAgentMatch(/chrome\\/[123456789]/i) && !userAgentMatch(/chrome\\/18/i) && !isFF()) {\n return false;\n }\n return isAndroid();\n }\n\n /**\n * If the browser has flash capabilities, return the flash version\n */\n function flashVersion() {\n if (isAndroid()) {\n return 0;\n }\n\n var plugins = navigator.plugins;\n var flash;\n\n if (plugins) {\n flash = plugins['Shockwave Flash'];\n if (flash && flash.description) {\n return parseFloat(flash.description.replace(/\\D+(\\d+\\.?\\d*).*/, '$1'));\n }\n }\n\n if (typeof window.ActiveXObject !== 'undefined') {\n try {\n flash = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash');\n if (flash) {\n return parseFloat(flash.GetVariable('$version').split(' ')[1].replace(/\\s*,\\s*/, '.'));\n }\n } catch (e) {\n return 0;\n }\n\n return flash;\n }\n return 0;\n }\n\n export default {\n isIOS: isIOS,\n isIPhone: isIPhone,\n isIPad: isIPad,\n isSafari: isSafari,\n\n isAndroid: isAndroid,\n isAndroidNative: isAndroidNative,\n isChrome: isChrome,\n\n isFirefox: isFF,\n\n isEdge: isEdge,\n isIE: isIE,\n\n isDesktop: function () {\n return !this.isMobile() && !this.isTablet();\n },\n\n isSamsungInternet: function () {\n return userAgent.indexOf('SamsungBrowser') !== -1;\n },\n\n isTablet: function () {\n var isTablet = isIPad() || false;\n\n // android tables are when\n if (this.isAndroid() && (userAgent.indexOf('Mobile') === -1)) {\n isTablet = true;\n }\n\n return isTablet;\n },\n\n isMobile: function () {\n return userAgent.match(/(iPhone|iPod|Android(?=.*Mobile).*|HTC|Fennec|IEMobile|BlackBerry|SymbianOS(?=.*AppleWebKit).*|Opera Mobi|Symbian|SonyEricsson|Nokia|SAMSUNG|LG)/i) === null ? false : true;\n },\n\n isWindowsPhone: function () {\n return userAgent.match(/Windows Phone/i) !== null;\n },\n\n getChromeVersion: function () {\n var raw = userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\n\n return raw ? parseInt(raw[2], 10) : false;\n },\n\n getPixelRatio: function () {\n var devicePixelRatio = window.devicePixelRatio || 1;\n\n if (devicePixelRatio > 1) {\n devicePixelRatio = 2;\n }\n\n return devicePixelRatio;\n },\n\n getFlashVersion: flashVersion,\n\n\n /**\n * Tracking is divided by device type\n *\n * @returns {*}\n */\n getDeviceType: function () {\n if (this.isTablet()) {\n return 'tablet';\n }\n\n if (this.isMobile()) {\n return 'phone';\n }\n\n return 'desktop';\n },\n\n canAutoplay: function () {\n var canAutoplay = 'always';\n\n // default is muted for never ios systems\n if (this.isIOS()) {\n canAutoplay = 'muted';\n }\n\n // iOS 8 and 9 can not autoplay any kind of stream\n // also Android Devices are lacking this\n if (this.isIOS(9) || this.isIOS(8) || (this.isAndroid())) {\n canAutoplay = 'never';\n }\n\n // chrome android can autoplay muted\n if (this.isAndroid() && !this.isSamsungInternet() && this.getChromeVersion() >= 53) {\n canAutoplay = 'muted';\n }\n\n return canAutoplay;\n }\n };\n\n","/* jshint ignore:start */\n\n function isMergeableObject(val) {\n var nonNullObject = val && typeof val === 'object'\n\n return nonNullObject\n && Object.prototype.toString.call(val) !== '[object RegExp]'\n && Object.prototype.toString.call(val) !== '[object Date]'\n }\n\n function emptyTarget(val) {\n return Array.isArray(val) ? [] : {}\n }\n\n function cloneIfNecessary(value, optionsArgument) {\n var clone = optionsArgument && optionsArgument.clone === true\n return (clone && isMergeableObject(value)) ? deepmerge(emptyTarget(value), value, optionsArgument) : value\n }\n\n function defaultArrayMerge(target, source, optionsArgument) {\n var destination = target.slice()\n source.forEach(function(e, i) {\n if (typeof destination[i] === 'undefined') {\n destination[i] = cloneIfNecessary(e, optionsArgument)\n } else if (isMergeableObject(e)) {\n destination[i] = deepmerge(target[i], e, optionsArgument)\n } else if (target.indexOf(e) === -1) {\n destination.push(cloneIfNecessary(e, optionsArgument))\n }\n })\n return destination\n }\n\n function mergeObject(target, source, optionsArgument) {\n var destination = {}\n if (isMergeableObject(target)) {\n Object.keys(target).forEach(function (key) {\n destination[key] = cloneIfNecessary(target[key], optionsArgument)\n })\n }\n Object.keys(source).forEach(function (key) {\n if (!isMergeableObject(source[key]) || !target[key]) {\n destination[key] = cloneIfNecessary(source[key], optionsArgument)\n } else {\n destination[key] = deepmerge(target[key], source[key], optionsArgument)\n }\n })\n return destination\n }\n\n function deepmerge(target, source, optionsArgument) {\n var array = Array.isArray(source);\n var options = optionsArgument || { arrayMerge: defaultArrayMerge }\n var arrayMerge = options.arrayMerge || defaultArrayMerge\n\n if (array) {\n return Array.isArray(target) ? arrayMerge(target, source, optionsArgument) : cloneIfNecessary(source, optionsArgument)\n } else {\n return mergeObject(target, source, optionsArgument)\n }\n }\n\n deepmerge.all = function deepmergeAll(array, optionsArgument) {\n if (!Array.isArray(array) || array.length < 2) {\n throw new Error('first argument should be an array with at least two elements')\n }\n\n // we are sure there are at least 2 values, so it is safe to have no initial value\n return array.reduce(function(prev, next) {\n return deepmerge(prev, next, optionsArgument)\n })\n }\n\n window.deepmerge = deepmerge;\n\n export default deepmerge;\n\n","/* global jwplayer */\nimport Events from './backbone.events';\nimport device from './device';\nimport merge from './merge';\n var jwUtils = jwplayer.utils,\n jwUnderscore = jwplayer._,\n // jwplayer is hard dependecy here\n utils = {\n Events: Events,\n\n // methods reused from jwplayer core\n extend: jwUtils.extend,\n // merge with deep copy, similar to jQuery extend\n merge: merge,\n\n ajax: jwUtils.ajax,\n\n each: jwUnderscore.each,\n isUndefined: jwUnderscore.isUndefined,\n isNumber: jwUnderscore.isNumber,\n isString: jwUnderscore.isString,\n isArray: jwUnderscore.isArray,\n omit: jwUnderscore.omit,\n memoize: jwUnderscore.memoize,\n\n createNode: jwUtils.createElement,\n addStyleSheet: jwUtils.addStyleSheet,\n addClass: jwUtils.addClass,\n removeClass: jwUtils.removeClass,\n throttle: jwUnderscore.throttle,\n\n /* jshint ignore:start */\n /**\n * Template system borrowed from http://ejohn.org/blog/javascript-micro-templating/\n */\n template: (function () {\n var cache = {};\n\n return function tmpl(str, data) {\n // Figure out if we're getting a template, or if we need to\n // load the template - and be sure to cache the result.\n var fn = !/\\W/.test(str) ?\n cache[str] = cache[str] ||\n tmpl(document.getElementById(str).innerHTML) :\n\n // Generate a reusable function that will serve as a template\n // generator (and which will be cached).\n new Function(\"obj\",\n \"var p=[],print=function(){p.push.apply(p,arguments);};\" +\n\n // Introduce the data as local variables using with(){}\n \"with(obj){p.push('\" +\n\n // Convert the template into pure JavaScript\n str\n .replace(/[\\r\\t\\n]/g, \" \")\n .split(\"<%\").join(\"\\t\")\n .replace(/((^|%>)[^\\t]*)'/g, \"$1\\r\")\n .replace(/\\t=(.*?)%>/g, \"',$1,'\")\n .split(\"\\t\").join(\"');\")\n .split(\"%>\").join(\"p.push('\")\n .split(\"\\r\").join(\"\\\\'\")\n + \"');}return p.join('');\");\n\n // Provide some basic currying to the user\n return data ? fn(data) : fn({});\n };\n })(),\n /* jshint ignore:end */\n\n device: device,\n\n time: {\n shareTimeToSeconds: function (time) {\n var hours, minutes, seconds, length;\n\n time = jwUnderscore.compact(time.split(/[msh]/));\n length = time.length; // last is empty\n\n seconds = parseInt(time[length - 1], 10);\n minutes = time[length - 2];\n hours = time[length - 3];\n\n return seconds + (minutes ? parseInt(minutes, 10) * 60 : 0) + (hours ? parseInt(hours, 10) * 3600 : 0);\n }\n },\n\n\n hasFlash: function () {\n return device.getFlashVersion() > 0;\n },\n\n number: {\n zeroPad: function (number) {\n number = parseInt(number, 10);\n return number < 10 ? '0' + number : number.toString();\n }\n },\n\n escape: function (str) {\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n\n return str.replace(/[&<>\"'`]/g, function replaceTag(tag) {\n return escapeMap[tag] || tag;\n });\n },\n\n string: {\n // timestamp [s]\n getTimeFormatted: function (timestamp) {\n var hours = Math.floor(timestamp / 3600),\n minutes = Math.floor((timestamp % 3600) / 60),\n seconds = timestamp % 60;\n\n return (hours > 0 ? hours + ':' : '') + utils.number.zeroPad(minutes) + ':' + utils.number.zeroPad(seconds);\n }\n },\n\n inherit: function (o) {\n function F() {\n } // Dummy constructor\n\n F.prototype = o;\n return new F();\n },\n\n model: {\n // Helper function to correctly set up the prototype chain, for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n extend: function (protoProps, staticProps) {\n var parent = this;\n var child = function () {\n return parent.apply(this, arguments);\n };\n\n // Add static properties to the constructor function, if supplied.\n utils.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function.\n var Surrogate = function () {\n this.constructor = child;\n };\n Surrogate.prototype = parent.prototype;\n child.prototype = new Surrogate();\n\n // Add prototype properties (instance properties) to the subclass,\n // if supplied.\n if (protoProps) {\n utils.extend(child.prototype, protoProps);\n }\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n }\n },\n\n /**\n * Check snap points support\n * @returns {boolean}\n */\n getScrollSnapPrefix: function () {\n var scrollSnapSupport = false;\n\n if('webkitScrollSnapType' in document.documentElement.style) {\n scrollSnapSupport = '-webkit-';\n } else if('msScrollSnapType' in document.documentElement.style) {\n scrollSnapSupport = '-ms-';\n } else if('scrollSnapType' in document.documentElement.style) {\n scrollSnapSupport = '';\n }\n\n return scrollSnapSupport;\n },\n\n loadScript: function (path) {\n return new Promise(function (resolve, reject) {\n var script = document.createElement(\"script\"),\n done = false;\n\n script.type = \"text/javascript\";\n script.src = path;\n script.async = true;\n script.onreadystatechange = script.onload = function() {\n if ( !done && (!this.readyState ||\n this.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n done = true;\n resolve();\n\n // Handle memory leak in IE\n script.onload = script.onreadystatechange = null;\n }\n };\n script.onerror = reject;\n\n document.body.appendChild(script);\n });\n },\n\n jsonToUrl: function (obj) {\n return Object.keys(obj).map(function(key) {\n return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]);\n }).join('&');\n }\n };\n\n /**\n * Polyfill for String.startsWith\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n */\n (function() {\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function(searchString, position) {\n position = position || 0;\n return this.indexOf(searchString, position) === position;\n };\n }\n })();\n\n export default utils;\n\n","/* global console */\nconst counters = {};\n\nconst log = function(...args) {\n const counter = counters[args[0]] || 0;\n counters[args[0]] = counter + 1;\n\n args[0] = `${args[0]}: ${counter} %c\"${args[1]}\"`;\n args[1] = 'color: #ca2117;';\n\n console.log(...args);\n};\n\nconst isEnabled = function(block) {\n const itemKey = `logSvpPlayer${block}`;\n\n // check global first\n if (window[itemKey] === true) {\n return true;\n }\n\n // fix Safari errors when cookies are disabled\n try {\n if (!window.localStorage) {\n return false;\n }\n\n return window.localStorage.getItem(itemKey);\n } catch (error) {\n return false;\n }\n};\n\nexport default function(block = 'SVP') {\n const error = (...args) => console.error('SVP Player:', ...args);\n\n if (isEnabled(block)) {\n return {\n log(...args) {\n if (typeof args[0] === 'function') {\n args[0](log.bind(this, block));\n } else {\n args.unshift(block);\n log.apply(this, args);\n }\n },\n error\n };\n }\n\n return {\n log() {},\n error\n };\n}\n","import utils from './utils';\n /**\n * Server time helper required for syncing browser time with stream vendors servers (SMP Stream)\n * @type {{_time: null, _responseTime: null, fetch: Function, getTime: Function}}\n */\n var ServerTime = {\n _time: null,\n _responseTime: null,\n\n fetch: function(url) {\n var resolveRequest = function (time) {\n this._time = time;\n this._responseTime = new Date().getTime();\n }.bind(this);\n\n // TODO server url?\n utils.ajax(url, function(result) {\n // set current microtime if server will return value different than int\n if(isNaN(parseInt(result, 10))) {\n result = (new Date().getTime());\n } else {\n // adjust to miliseconds\n result = result * 1000;\n }\n resolveRequest(result);\n }.bind(this), function() {\n resolveRequest(new Date().getTime());\n }.bind(this), true);\n },\n\n getTime: function() {\n return this._time + (new Date().getTime() - this._responseTime);\n }\n };\n\n export default ServerTime;\n\n","import _ from './underscore';\nimport Events from './backbone.events';\n\nconst SimpleModel = _.extend({\n 'get': function (attr) {\n this.attributes = this.attributes || {};\n return this.attributes[attr];\n },\n 'set': function (attr, val) {\n this.attributes = this.attributes || {};\n\n if (this.attributes[attr] === val) {\n return;\n }\n var oldVal = this.attributes[attr];\n this.attributes[attr] = val;\n this.trigger('change:' + attr, this, val, oldVal);\n },\n 'clone': function () {\n return _.clone(this.attributes);\n }\n}, Events);\n\nexport default SimpleModel;\n","/* eslint-disable no-param-reassign */\nimport utils from 'utils/utils';\nimport Model from 'utils/model';\n\n/**\n * Parse related experiments\n * @param data\n */\nfunction parseRelatedExperiments(data) {\n let start = 0;\n\n return data.split(',').map((experiment) => {\n const [name, traffic] = experiment.split(':');\n\n if (!traffic) {\n throw new Error('could not parse related experiments');\n }\n\n const end = parseInt(traffic, 10);\n const item = { name, start, end: start + end };\n\n start += end;\n\n return item;\n });\n}\n\nconst Category = function (options) {\n this.attributes = {\n id: 0\n };\n\n this.initialize(options);\n};\n\nCategory.prototype = {\n initialize(data) {\n utils.extend(this.attributes, this.parse(data));\n },\n\n parse(data) {\n if (data.additional) {\n utils.each(data.additional, (value, key) => {\n if (typeof data[key] === 'undefined') {\n data[key] = value;\n }\n });\n\n data.images = utils.extend({}, data.images || {}, {\n background: data.background,\n main: data.image,\n logo: data.logo,\n playerLogo: data.playerLogoImage\n });\n\n data = utils.omit(data, ['additional', 'background', 'image', 'logo', 'playerLogoImage']);\n\n try {\n data.relatedExperiments = parseRelatedExperiments(data.metadata.relatedExperiments.value);\n } catch (e) {\n data.relatedExperiments = [];\n }\n }\n\n return data;\n },\n\n getRelatedExperiments() {\n return this.get('relatedExperiments') || [];\n },\n\n isSeries() {\n return this.get('isSeries') === true;\n },\n\n getLastAsset() {\n return this.get('lastAsset') || {}; // cant be object because of circular dependency\n }\n};\n\nutils.extend(Category.prototype, Model);\n\nexport default Category;\n","/* eslint-disable no-param-reassign */\nimport utils from 'utils/utils';\nimport Model from 'utils/model';\nimport config from 'player/config';\nimport Category from './category';\n\nfunction handleErrors(response) {\n if (!response.ok) {\n return Promise.reject(response);\n }\n return response;\n}\n\nconst Asset = function (options) {\n this.attributes = {\n id: 0\n };\n\n this.initialize(options);\n};\n\nAsset.prototype = {\n initialize(data) {\n utils.extend(this.attributes, this.parse(data));\n },\n\n url() {\n const additional = [\n 'settings', 'chapters', 'cuePoints', 'externalId', 'barrels',\n 'externalCategoryId', 'nextAsset', 'sourceFiles', 'subtitles',\n 'metadata', 'access', 'tags', 'stories'\n ];\n\n return config.api.getUrl(this.getVendor(), `/assets/${this.get('id')}?additional=${additional.join('|')}`);\n },\n\n parse(data) {\n data = data || {};\n\n function unifyTimestamp(time) {\n if (!time) {\n return null;\n }\n\n if (time.toString().length === 10) {\n return time * 1000;\n }\n\n return time;\n }\n\n // rewrite additional fields\n if (data.additional) {\n utils.each(data.additional, (value, key) => {\n // featured chapters are fetched on the lists\n // merge them\n if (key === 'featuredChapters') {\n key = 'chapters';\n }\n\n if (key === 'subtitles') {\n key = 'captions';\n }\n\n if (typeof data[key] === 'undefined') {\n data[key] = value;\n }\n });\n\n if (data.additional.settings) {\n if (data.additional.settings.startIndexPoint) {\n data.startIndexPoint = data.additional.settings.startIndexPoint;\n }\n\n if (!utils.isUndefined(data.additional.settings.ageLimit)) {\n data.ageLimit = data.additional.settings.ageLimit;\n }\n }\n\n if (data.additional.sourceFiles) {\n data.sourceFiles = data.additional.sourceFiles;\n }\n }\n\n if (data.series) {\n data.season = parseInt(data.series.seasonNumber, 10);\n data.episode = parseInt(data.series.episodeNumber, 10);\n\n data = utils.omit(data, 'series');\n }\n\n // multiply timestamps by 1000 to use ms instead of s\n if (data.flightTimes) {\n data.flightTimes = {\n start: (data.flightTimes.start ? unifyTimestamp(data.flightTimes.start) : null),\n end: (data.flightTimes.end ? unifyTimestamp(data.flightTimes.end) : null)\n };\n }\n\n data.created = (data.created ? unifyTimestamp(data.created) : null);\n data.published = (data.published ? unifyTimestamp(data.published) : null);\n data.updated = (data.updated ? unifyTimestamp(data.updated) : null);\n\n if (data.category) {\n data.category = new Category(data.category);\n }\n\n if (data.chapters) {\n utils.each(data.chapters, (chapter, index) => {\n chapter.time = utils.string.getTimeFormatted(chapter.timeline);\n chapter.index = (index + 1);\n });\n }\n\n // next asset is optional, fill with basic object to avoid undefined errors\n if (!data.nextAsset) {\n data.nextAsset = {};\n }\n\n data.tags = data.tags || [];\n\n // eslint-disable-next-line\n if (data._embedded && data._embedded.tags) {\n // eslint-disable-next-line\n data.tags = data._embedded.tags;\n }\n\n return data;\n },\n\n fetch() {\n return fetch(this.url())\n .then(handleErrors)\n .then((response) => response.json())\n .then((json) => {\n Object.assign(this.attributes, this.parse(json));\n });\n },\n\n getVendor() {\n return this.get('vendor');\n },\n\n destroy() {\n // in case of any cleanup\n },\n\n getAgeLimit() {\n return utils.isNumber(this.get('ageLimit')) ? this.get('ageLimit') : -1;\n },\n\n getNextAssetId() {\n return (this.get('nextAsset') && this.get('nextAsset').id) || null;\n },\n\n getNextAssetSource() {\n const metadataKey = 'relatedExperiments';\n const metadata = this.get('metadata');\n\n if (metadata && metadata[metadataKey]) {\n // byId manually set\n if (metadata[metadataKey] === 'byId') {\n return 'manual';\n }\n\n return metadata[metadataKey];\n }\n\n return null;\n },\n\n /**\n * Get chapter by its index (numbered from 1)\n *\n * @param chapterIndex\n * @returns {*} or undefined if not found\n */\n getChapter(chapterIndex) {\n return this.getChapters()[chapterIndex - 1];\n },\n\n /**\n * Get chapters for single stream\n *\n * @returns {*|Array}\n */\n getChapters() {\n return this.get('chapters') || [];\n },\n\n getThumbnail() {\n return this.get('images').main;\n },\n\n getTitle() {\n return this.get('title');\n },\n\n getCategory() {\n return this.get('category');\n }\n};\n\nutils.extend(Asset.prototype, Model);\n\nexport default Asset;\n","import config from 'player/config';\n\nfunction handleErrors(response) {\n if (!response.ok) {\n return Promise.reject(response);\n }\n return response;\n}\n\nconst APPNEXUS_PROVIDER_ID = 'appnexus';\n\nconst api = (vendor, endpoint) => fetch(config.api.getUrl(vendor, endpoint))\n .then(handleErrors)\n .then((response) => response.json());\n\n\nexport {\n APPNEXUS_PROVIDER_ID\n};\n\nexport default api;\n","\n var requestNumber, currentServerId, image, config, getServer, getImageTransform, serversAmount;\n\n getServer = (function() {\n var MAX_REQUEST_PER_SERVER = 6;\n\n return function(imageId) {\n if(!imageId) {\n return '';\n }\n\n if(requestNumber === MAX_REQUEST_PER_SERVER) {\n if(currentServerId === serversAmount) {\n currentServerId = -1;\n }\n\n requestNumber = 0;\n currentServerId++;\n }\n\n requestNumber++;\n\n return imageId.replace(\"imbo\", config.servers[currentServerId]);\n };\n }());\n\n function getImageQuality(pixelRatio) {\n return (pixelRatio >= 2) ? 50 : 80;\n }\n\n function normalizeTransformSize(size, pixelRatio) {\n // return default value\n return [\n size,\n getImageQuality(pixelRatio)\n ];\n }\n\n function getClosestSize(transformSizes, maxDimension) {\n return transformSizes.reduce(function (prev, curr) {\n return (Math.abs(curr - maxDimension) < Math.abs(prev - maxDimension) ? curr : prev);\n });\n }\n\n function getPixelRatio() {\n // we do not support px lower than 1 and bigger than 2\n return Math.max(1, Math.min(2, config.getPixelRatio()));\n }\n\n /**\n * Returns transformation for given image key and width\n * Adjusts the best\n */\n getImageTransform = (function() {\n var cache = {};\n\n return function(key, width, height) {\n var pixelRatio = getPixelRatio(),\n cacheKey = key + width + height + pixelRatio;\n\n // first check if there is cached object\n if(cache[cacheKey]) {\n return cache[cacheKey];\n }\n\n var id = key.split('.'),\n i = 0,\n idLen = id.length,\n transformType = (height > width) ? 'autoWidth' : 'autoHeight',\n transformSizes = config.sizes, transform, maxDimension;\n\n while(i < idLen) {\n transformSizes = transformSizes[id[i]];\n\n if(!transformSizes) {\n throw new Error('Image transformation missing for key ' + key);\n }\n\n i++;\n }\n\n transformSizes = transformSizes[transformType];\n\n // transformation is adjusted to not 'auto' side\n maxDimension = (transformType === 'autoHeight') ? width : height;\n maxDimension = maxDimension * pixelRatio;\n\n var dimensions = normalizeTransformSize(getClosestSize(transformSizes, maxDimension), pixelRatio);\n\n // auto width transform starts with 'x'\n // http://svp.vg.no/svp/api/v1/docs/\n transform = (transformType === 'autoWidth') ? 'x' : '';\n transform = transform + dimensions[0] + 'q' + dimensions[1];\n\n cache[cacheKey] = transform;\n\n return transform;\n };\n }());\n\n image = {\n initialize: function(options) {\n config = options;\n serversAmount = options.servers.length - 1;\n requestNumber = 0;\n currentServerId = 0;\n },\n getImageSrc: function(imageId, key, width, height) {\n if(imageId) {\n var extension = (imageId.indexOf('.jpg') === -1 && imageId.indexOf('.png') === -1 ? '.jpg' : '');\n return getServer(imageId) + extension + '?t[]=' + getImageTransform(key, width, height);\n }\n return null;\n }\n };\n\n export default image;\n\n","import api from '../api';\n\nconst getEndpoint = (categoryId, seasonNumber) => `/categories/${categoryId}/seasons/${seasonNumber}/assets`;\n\nconst getNextFromEpisodeList = (assetId, assets) => {\n if (!assets) {\n return null;\n }\n\n return assets[assets.findIndex((item) => item.id === assetId) - 1];\n};\n\nconst getNextEpisode = async ({\n vendor, assetId, categoryId, season\n}) => {\n const response = await api(\n vendor,\n getEndpoint(categoryId, season)\n );\n\n const assets = (response && response.assets);\n\n // empty assetId, get first episode from series which is last in list\n if (assetId === null) {\n return assets[assets.length - 1] || null;\n }\n\n return getNextFromEpisodeList(assetId, assets);\n};\n\n\nexport default {\n getNextEpisode\n};\n","import api from '../api';\n\nconst getEndpoint = (assetId, limit = 20, engine) => {\n if (engine.indexOf('related-exprmnts') > -1) {\n return `/assets/${engine}/${assetId}`;\n }\n return `/assets/${assetId}/${engine}?limit=${limit}`;\n};\n\n/**\n * Fetch related list from related endpoint\n *\n * @param vendor\n * @param assetId\n * @param limit\n * @param engine - curently supported engines related (tags); related-ml (machine learning related);\n * related-exprmnts build on top of ML engine with additional adjustments\n *\n * @returns {Promise<*>}\n */\nconst getList = async ({\n vendor, assetId, limit = 20, engine = 'related'\n}) => {\n const data = await api(\n vendor,\n getEndpoint(assetId, limit, engine)\n );\n\n // eslint-disable-next-line\n return data && data._embedded && data._embedded.assets;\n};\n\n\nexport default {\n getList\n};\n","// eslint-disable-next-line max-len\nconst VIDEO = new Blob([new Uint8Array([0, 0, 0, 28, 102, 116, 121, 112, 105, 115, 111, 109, 0, 0, 2, 0, 105, 115, 111, 109, 105, 115, 111, 50, 109, 112, 52, 49, 0, 0, 0, 8, 102, 114, 101, 101, 0, 0, 2, 239, 109, 100, 97, 116, 33, 16, 5, 32, 164, 27, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 33, 16, 5, 32, 164, 27, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 167, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 2, 194, 109, 111, 111, 118, 0, 0, 0, 108, 109, 118, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 232, 0, 0, 0, 47, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 236, 116, 114, 97, 107, 0, 0, 0, 92, 116, 107, 104, 100, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 101, 100, 116, 115, 0, 0, 0, 28, 101, 108, 115, 116, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 47, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 100, 109, 100, 105, 97, 0, 0, 0, 32, 109, 100, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 68, 0, 0, 8, 0, 85, 196, 0, 0, 0, 0, 0, 45, 104, 100, 108, 114, 0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0, 0, 0, 1, 15, 109, 105, 110, 102, 0, 0, 0, 16, 115, 109, 104, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 100, 105, 110, 102, 0, 0, 0, 28, 100, 114, 101, 102, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1, 0, 0, 0, 211, 115, 116, 98, 108, 0, 0, 0, 103, 115, 116, 115, 100, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 87, 109, 112, 52, 97, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 16, 0, 0, 0, 0, 172, 68, 0, 0, 0, 0, 0, 51, 101, 115, 100, 115, 0, 0, 0, 0, 3, 128, 128, 128, 34, 0, 2, 0, 4, 128, 128, 128, 20, 64, 21, 0, 0, 0, 0, 1, 244, 0, 0, 1, 243, 249, 5, 128, 128, 128, 2, 18, 16, 6, 128, 128, 128, 1, 2, 0, 0, 0, 24, 115, 116, 116, 115, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 4, 0, 0, 0, 0, 28, 115, 116, 115, 99, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 28, 115, 116, 115, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 1, 115, 0, 0, 1, 116, 0, 0, 0, 20, 115, 116, 99, 111, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 44, 0, 0, 0, 98, 117, 100, 116, 97, 0, 0, 0, 90, 109, 101, 116, 97, 0, 0, 0, 0, 0, 0, 0, 33, 104, 100, 108, 114, 0, 0, 0, 0, 0, 0, 0, 0, 109, 100, 105, 114, 97, 112, 112, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 105, 108, 115, 116, 0, 0, 0, 37, 169, 116, 111, 111, 0, 0, 0, 29, 100, 97, 116, 97, 0, 0, 0, 1, 0, 0, 0, 0, 76, 97, 118, 102, 53, 54, 46, 52, 48, 46, 49, 48, 49])], { type: 'video/mp4' });\n\nconst getMockAsset = () => ({\n id: 1,\n status: 'active',\n streamType: 'mock',\n streamUrls: {\n hls: URL.createObjectURL(VIDEO)\n },\n\n images: {\n main: null\n },\n\n streamConfiguration: {\n properties: []\n },\n category: {}\n});\n\nexport {\n getMockAsset\n};\n","import api from '../api';\nimport { getMockAsset } from './asset/mock';\n\nconst getAssetEndpoint = (id) => {\n const additional = [\n 'settings', 'chapters', 'cuePoints', 'externalId', 'barrels',\n 'externalCategoryId', 'nextAsset', 'sourceFiles', 'subtitles',\n 'metadata', 'access', 'tags', 'stories'\n ];\n\n return `/assets/${id}?additional=${additional.join('|')}`;\n};\n\nconst getListEndpoint = ({ params = [], filters = [] }) => {\n const queryParams = [...params];\n\n if (filters.length > 0) {\n queryParams.push(`filters=${filters.join('|')}`);\n }\n\n return `/assets${queryParams.length > 0 ? `?${queryParams.join('&')}` : ''}`;\n};\n\nconst getById = async ({ vendor, assetId }) => api(\n vendor,\n getAssetEndpoint(assetId)\n);\n\nconst getByIds = async ({ vendor, ids }) => {\n const response = await api(\n vendor,\n getListEndpoint({\n params: [`limit=${ids.length}`],\n filters: [`assetId::${ids.join(',')}`]\n })\n );\n\n // eslint-disable-next-line\n return response._embedded && response._embedded.assets || [];\n};\n\nconst getClosestAsset = async ({\n vendor, order, categoryId, assetId, publishedDate\n}) => {\n const endpoint = getListEndpoint({\n params: [\n 'limit=1',\n 'sort=-published',\n // depending on from which \"side\" we're asking\n (order === 'next' ? `after=${publishedDate + 1}` : `before=${publishedDate - 1}`)\n ],\n\n filters: [\n `categoryId::${categoryId}`\n ]\n });\n\n const response = await api(\n vendor,\n endpoint\n );\n\n // parse response\n // eslint-disable-next-line\n if (response && response._embedded && response._embedded.assets) {\n // eslint-disable-next-line\n const [nextAsset] = response._embedded.assets;\n\n if (nextAsset && nextAsset.id !== assetId) {\n return nextAsset;\n }\n }\n\n return null;\n};\n\nexport default {\n getById,\n getByIds,\n getClosestAsset,\n getMockAsset\n};\n","import utils from 'utils/utils';\nimport image from 'utils/image';\nimport Model from 'utils/model';\nimport ServerTime from 'utils/server-time';\nimport config from 'player/config';\n\nconst Stream = function (options) {\n this.attributes = {\n id: 0\n };\n\n this.initialize(options);\n};\n\nStream.prototype = {\n initialize(data) {\n utils.extend(this.attributes, this.parse(data));\n },\n\n /**\n * Parse data from asset\n * Be aware, data went through Asset.parse method\n *\n * @param data\n */\n parse(data) {\n const result = {\n id: data.id,\n vendor: data.vendor,\n title: data.title,\n\n streams: {\n hls: data.streamUrls.hls,\n hds: data.streamUrls.hds,\n mp4: data.streamUrls.mp4 ? [data.streamUrls.mp4] : []\n },\n status: data.status,\n type: data.streamType,\n mediaType: data.assetType,\n streamConfiguration: data.streamConfiguration,\n\n images: {\n main: data.images.main,\n snapshots: data.images.snapshots || null\n },\n\n captions: data.captions || [],\n\n flightTimes: {\n start: null,\n end: null\n },\n\n playback: {\n begin: null,\n end: null\n },\n\n sourceFiles: data.sourceFiles || [],\n externalId: data.externalId || null,\n category: data.category\n };\n\n if (data.duration) {\n result.duration = data.duration / 1000;\n }\n\n if (data.metadata) {\n result.is360 = data.metadata.is360 === 'true';\n }\n\n // this array contains other mp4 streams but without main mp4\n if (data.streamUrls.pseudostreaming) {\n result.streams.mp4 = result.streams.mp4.concat(data.streamUrls.pseudostreaming);\n }\n\n if (data.additional && data.additional.metadata && data.additional.metadata.audioStream) {\n result.streams.audio = data.additional.metadata.audioStream;\n }\n\n // override start and end if set in api\n if (data.flightTimes) {\n result.flightTimes = {\n start: (data.flightTimes.start ? data.flightTimes.start : null),\n end: (data.flightTimes.end ? data.flightTimes.end : null)\n };\n }\n\n if (data.playback) {\n result.playback = {\n begin: data.playback.begin,\n end: data.playback.end\n };\n }\n\n // additional stream settings\n if (data.settings) {\n result.showAds = data.settings.showAds;\n }\n\n // cue points, empty array if nothing set\n result.cuePoints = data.cuePoints;\n\n // add midroll in 10s TODO remove after tests\n // result.cuePoints = [31];\n return result;\n },\n\n getId() {\n return this.get('id');\n },\n\n getVendor() {\n return this.get('vendor');\n },\n\n getCategory() {\n return this.get('category');\n },\n\n hasProperty(property) {\n return this.get('streamConfiguration').properties.indexOf(property) > -1;\n },\n\n /**\n * Get duration stored in API\n *\n * @returns {*}\n */\n getDuration() {\n return this.get('duration');\n },\n\n getCuePoints() {\n return this.get('cuePoints');\n },\n\n /**\n * Check if stream has Akamai Secure Token\n * @returns {*}\n */\n isSecure() {\n return this.hasProperty('tokenSecured');\n },\n\n /**\n * Check wheter give stream contains mock data to allow embedding player without asset id\n * @return {boolean}\n */\n isMock() {\n return this.get('type') === 'mock';\n },\n\n /**\n * Check if stream is available only in certain areas\n * @returns {*}\n */\n isGeoblocked() {\n return this.hasProperty('geoblocked');\n },\n\n isLive() {\n return this.get('type') === 'live';\n },\n\n wasLive() {\n return this.get('type') === 'wasLive';\n },\n\n isActive() {\n return this.get('status') === 'active' && !this.isPast();\n },\n\n isFuture() {\n return (this.get('flightTimes') && this.get('flightTimes').start\n ? this.get('flightTimes').start > new Date().getTime() : false);\n },\n\n isPast() {\n return (this.get('flightTimes') && this.get('flightTimes').end\n ? (this.get('flightTimes').end < new Date().getTime()) : false);\n },\n\n hasHds() {\n return this.getUrl('HDS').indexOf('f4m') > -1;\n },\n\n /**\n * Streams might not be available while asset is created\n *\n * @returns {boolean}\n */\n hasPlayableSource() {\n if (this.getTimeToStart() > 0 || !this.isActive()) {\n return false;\n }\n\n return true;\n },\n\n getUrl(streamType) {\n const isOnHttp = window.location.protocol.toLowerCase().startsWith('http:');\n const type = streamType.toLowerCase();\n\n let streamUrl = this.get('streams')[type];\n\n if (utils.device.isIE() && isOnHttp) {\n streamUrl = streamUrl.replace('https', 'http');\n }\n\n return streamUrl;\n },\n\n getPoster() {\n return this.get('images').main;\n },\n\n /**\n * Get poster src adjusted to given width\n *\n * @param containerWidth\n * @returns {*}\n */\n getPosterSrc(containerWidth) {\n return image.getImageSrc(this.getPoster(), 'poster', containerWidth);\n },\n\n /**\n * Get snapshots url\n * @returns {*} - url string or null if snapshots not found\n */\n getSnapshots() {\n return `${config.api.thumbnailsUrl + this.getVendor()}/assets/${this.getId()}`;\n },\n\n /**\n * Not every asset has snapshot (lives, wasLives)\n */\n hasSnapshots() {\n return this.get('images').snapshots !== null;\n },\n\n /**\n * Get captions associated with stream\n *\n * @returns {boolean}\n */\n getCaptions() {\n return this.get('captions') || [];\n },\n\n /**\n * Check if mp4 streams are available\n *\n * @returns {boolean}\n */\n hasMp4Streams() {\n return this.get('streams').mp4.length > 0;\n },\n\n hasAudioOnlyStream() {\n return typeof this.get('streams').audio === 'string';\n },\n\n getMp4Streams() {\n const streams = [];\n\n // mp4 streams are not available on live and secure hd\n if (this.hasMp4Streams()) {\n utils.each(this.get('streams').mp4, (stream) => {\n const streamData = stream.split('/').pop().replace('.mp4', '').split('_');\n\n streams.push({\n source: stream,\n width: streamData[0],\n height: streamData[1],\n bitrate: streamData[2]\n });\n });\n }\n\n return streams;\n },\n\n /**\n * Check if asset is published\n * Method relay on server time to avoid timezone differences\n *\n * @returns {number} seconds to live\n */\n getTimeToStart() {\n return (this.get('flightTimes').start - ServerTime.getTime()) / 1000;\n },\n\n\n /**\n * Asset can be virually sliced into small chunks\n * These are only indicators and do not slice stream\n *\n * @param position\n * @returns {*}\n */\n getPlaybackTime(position) {\n const playback = this.get('playback');\n\n if (position === 'begin') {\n if (this.get('playAhead') > 0) {\n return this.get('playAhead');\n }\n\n return (playback.begin > 0) ? playback.begin : null;\n }\n\n if (position === 'end' && playback.end > 0) {\n return playback.end;\n }\n\n return null;\n },\n\n /**\n * Check if ads are turned on\n *\n * @returns {boolean}\n */\n hasCreatives() {\n return this.get('na') !== true;\n },\n\n /**\n * External id\n * Used for JW Player statistics\n */\n getExternalId() {\n return this.get('externalId');\n },\n\n /**\n * Stream display mode\n *\n * @returns {*}\n */\n getDisplayType() {\n if (this.is360()) {\n return '360';\n }\n\n return '2d';\n },\n\n /**\n * Check if stream is 360 video\n */\n is360() {\n return this.get('is360') === true;\n },\n\n /**\n * Check wethever stream has ads disabled\n */\n hasAdsDisabled() {\n return this.get('showAds') === false;\n }\n};\n\nutils.extend(Stream.prototype, Model);\n\nexport default Stream;\n","const EXCLUDED_ASSETS_KEY = 'svp-excludedAssets';\n\n/**\n * Each vendor has own storage for excluded keys\n *\n * @param vendor\n * @returns {string}\n */\nconst getKey = function(vendor) {\n return `${EXCLUDED_ASSETS_KEY}-${vendor}`;\n};\n\nconst ExcludedAssets = {\n add(vendor, id) {\n let assets = this.getAll(vendor);\n\n if (id) {\n if (assets.indexOf(id) === -1) {\n // put at top as the older stream will be removed first\n assets.unshift(id);\n // limit only to 10 restricted streams\n assets = assets.splice(0, 10);\n }\n\n this.getStorage().setItem(getKey(vendor), JSON.stringify(assets));\n }\n },\n\n getAll(vendor) {\n return JSON.parse(this.getStorage().getItem(getKey(vendor))) || [];\n },\n\n getStorage() {\n return window.localStorage;\n }\n};\n\nexport default ExcludedAssets;\n","import ExcludedAssets from '../excluded-assets';\n\nconst omitRecurring = (vendor, assetId, assets) => {\n const excludedAssets = ExcludedAssets.getAll(vendor);\n\n // parse response\n if (!assets) {\n return null;\n }\n\n let nextAsset = null;\n\n for (let i = 0; i < assets.length; i += 1) {\n nextAsset = assets[i] || {};\n\n if (nextAsset.id !== assetId && excludedAssets.indexOf(nextAsset.id) === -1) {\n // exclude asset from recommended list\n ExcludedAssets.add(vendor, nextAsset.id);\n return nextAsset;\n }\n }\n\n return null;\n};\n\n/**\n *\n * @param array\n * @param randomIndex\n * @returns {*}\n */\nconst getExperimentName = (array, randomIndex) => {\n const element = array.find((item) => randomIndex >= item.start && randomIndex < item.end);\n\n if (element && element.name) {\n return element.name;\n }\n\n // fallback to default state\n return null;\n};\n\nconst getSource = (useMlEngine, experimentsList, seed) => {\n const experimentVariant = Math.floor(seed * 100);\n\n if (useMlEngine === false) {\n return 'related';\n }\n\n if (experimentsList.length > 0) {\n const experimentName = getExperimentName(experimentsList, experimentVariant);\n\n if (experimentName) {\n return `related-exprmnts/${experimentName}`;\n }\n }\n\n return 'related-ml';\n};\n\n\nexport default {\n omitRecurring,\n getSource\n};\n","/* eslint-disable no-underscore-dangle */\n\nimport seriesService from 'player/services/api/series';\nimport relatedService from 'player/services/api/related';\nimport assetService from 'player/services/api/asset';\nimport Stream from './stream';\nimport Asset from './asset';\n\nimport relatedHelpers from './recommended/related';\n\nconst createResponse = ({ nextAsset, source }) => ({\n nextAsset: nextAsset ? new Asset(nextAsset) : null,\n source\n});\n\nconst handlers = {\n /**\n * Check if given asset has next stream\n * Used for setting/disabling postrolls\n *\n * @param asset\n * @returns {boolean}\n */\n hasPlayNext(asset, includeCategory) {\n if (asset.get('streamType') === 'live') {\n return false;\n }\n\n if (asset.get('nextAsset').id) {\n return true;\n }\n\n if (includeCategory === true) {\n return this.hasNextInCategory(asset);\n }\n\n return false;\n },\n\n /**\n * Check if given asset has next stream\n *\n * @param asset\n * @returns {boolean}\n */\n hasNextInCategory(asset) {\n const category = asset.getCategory();\n\n if (category) {\n if (category.isSeries()) {\n return true;\n }\n\n if (category.get('autoPlayNextAsset')) {\n return true;\n }\n }\n\n return false;\n },\n\n\n /**\n * Fetch next asset from asset series\n * Rejected when next asset is not found\n *\n * @param asset\n */\n async fetchNextFromSeries({\n vendor, assetId, season, categoryId\n }) {\n const nextAsset = await seriesService.getNextEpisode({\n vendor,\n assetId,\n categoryId,\n season\n });\n\n return createResponse({\n source: 'series',\n nextAsset\n });\n },\n\n /**\n * Fetch next asset from parent category\n * Rejected when next asset is not found\n *\n * @param asset object\n * @param settings\n */\n async fetchNextFromCategory ({\n vendor, published, categoryId, order\n }) {\n const nextAsset = await assetService.getClosestAsset({\n vendor,\n published,\n order,\n categoryId\n });\n\n return createResponse({\n source: `category-${order}`,\n nextAsset\n });\n },\n\n /**\n * Fetch next asset by providing it's id\n *\n * @param vendor\n * @param assetId\n * @param source\n * @returns {Promise<{nextAsset, source}>}\n */\n async fetchNextById({ vendor, assetId }) {\n const nextAsset = await assetService.getById({\n vendor,\n assetId\n });\n\n return createResponse({\n source: 'byId',\n nextAsset\n });\n },\n\n async fetchNextFromRelatedEngine({ vendor, assetId, source = 'related' }) {\n const assets = await relatedService.getList({\n engine: source,\n vendor,\n assetId\n });\n\n let nextAsset = null;\n\n if (source === 'related-exprmnts/getbyid') {\n // eslint-disable-next-line\n nextAsset = assets[0];\n } else {\n nextAsset = relatedHelpers.omitRecurring(vendor, assetId, assets);\n }\n\n return createResponse({\n nextAsset,\n source\n });\n },\n\n /**\n * Fetch next for given asset\n * Cascade lookup from direct linkage (nextAsset.id) to retrieving from category\n * Rejected when nextAsset is not found\n *\n * @param asset\n * @returns {Promise}\n */\n async getNext(asset, { useMlEngine }) {\n const vendor = asset.getVendor();\n const assetId = asset.get('id');\n const category = asset.getCategory();\n const nextAssetId = asset.getNextAssetId();\n\n const categoryId = category.get('id');\n const season = parseInt(asset.get('season'), 10);\n\n // fetch next from series as user expects next episode to be played\n // when there is no next episode then we just display recommended grid\n if (category.isSeries() && season > 0) {\n const fetchNextParams = {\n season,\n categoryId,\n vendor,\n assetId\n };\n\n const result = await this.fetchNextFromSeries(fetchNextParams);\n\n // fetch next episode from following season\n if (!result.nextAsset) {\n return this.fetchNextFromSeries(Object.assign(fetchNextParams, {\n season: fetchNextParams.season + 1,\n assetId: null\n }));\n }\n return result;\n }\n\n const experiments = category.getRelatedExperiments();\n\n // no experiments set\n if (experiments.length === 0 && nextAssetId) {\n return this.fetchNextById({\n assetId: nextAssetId,\n vendor\n });\n }\n\n // with fallback to category related when there is no video from ml engine\n try {\n return await this.fetchNextFromRelatedEngine({\n source: relatedHelpers.getSource(\n useMlEngine,\n experiments,\n Math.random()\n ),\n vendor,\n assetId\n });\n } catch (e) {\n return this.fetchNextFromRelatedEngine({\n source: relatedHelpers.getSource(\n useMlEngine,\n [{ name: 'related-ml', begin: 0, end: 100 }],\n 0\n ),\n vendor,\n assetId\n });\n }\n },\n\n /**\n * Fetch next for given asset\n * Cascade lookup from direct linkage (nextAsset.id) to retrieving from category\n * Rejected when nextAsset is not found\n *\n * @param asset\n * @param options\n * @returns {Promise}\n */\n async fetchNext(asset, options) {\n const { nextAsset, source } = await this.getNext(asset, options);\n\n if (!nextAsset) {\n return Promise.reject({\n reason: 'nextAssetNotFound',\n source\n });\n }\n\n const stream = new Stream(nextAsset.attributes);\n\n if (!stream.isActive()) {\n return Promise.reject({\n reason: 'nextAssetNotActive',\n source\n });\n }\n\n return {\n nextAsset,\n source\n };\n }\n};\n\nexport default handlers;\n","let translations = {};\n\nconst setTranslations = (data) => {\n translations = data;\n};\n\n// eslint-disable-next-line\nconst translate = (key, substitute) => {\n // typeof to check keys like \"0\"\n return translations[key] || (typeof substitute === 'undefined' ? key : substitute);\n};\n\nconst getMonthName = (date) => {\n const months = translations.months || [];\n return months[date.getMonth()] || date.getMonth();\n};\n\nexport default {\n translate,\n setTranslations,\n getMonthName\n};\n","import moduleLoader from './module-loader';\n\nconst objectToString = (obj) => {\n // create an array that will later be joined into a string.\n const string = [];\n\n // is object\n // Both arrays and objects seem to return \"object\"\n // when typeof(obj) is applied to them. So instead\n // I am checking to see if they have the property\n // join, which normal objects don't have but\n // arrays do.\n if (obj === undefined) {\n return String(obj);\n } if (typeof (obj) === 'object' && obj !== null && (obj.join === undefined)) {\n for (const prop in obj) {\n if (obj.hasOwnProperty(prop)) string.push(`${prop}: ${objectToString(obj[prop])}`);\n }\n\n return `{${string.join(',')}}`;\n\n // is array\n } if (typeof (obj) === 'object' && obj !== null && !(obj.join === undefined)) {\n for (const prop in obj) {\n string.push(objectToString(obj[prop]));\n }\n return `[${string.join(',')}]`;\n\n // is function\n } if (typeof (obj) === 'function') {\n string.push(obj.toString());\n\n // all other values can be done with JSON.stringify\n } else {\n string.push(JSON.stringify(obj));\n }\n\n return string.join(',');\n};\n\nconst capitalizeFirstLetter = (string) => {\n try {\n return string.charAt(0).toUpperCase() + string.slice(1);\n } catch (e) {\n // return what was sent\n return string;\n }\n};\n\nconst prettyObject = () => moduleLoader('https://cdn.svp.schibsted.io/tools/beautify.min.js')\n .then((module) => {\n if (module && typeof module.js_beautify === 'function') {\n return module.js_beautify;\n }\n return window.js_beautify;\n });\n\nexport {\n objectToString,\n prettyObject,\n capitalizeFirstLetter\n};\n","import config from 'player/config';\nimport utils from 'utils/utils';\n\nfunction isDomainInArray(origin, domains) {\n let domain;\n let pos;\n let domainBeginning;\n\n // check if domain has access for given provider\n // otherwise deny it\n // allow all dev builds set settings\n if (config.version === 'dev') {\n return true;\n }\n\n // list is not provided\n if (!utils.isArray(domains)) {\n return false;\n }\n\n const len = domains.length;\n\n for (let i = 0; i < len; i += 1) {\n domain = domains[i];\n\n // subdomain parsing, subdomain has to end with domain\n if (domain[0] === '*') {\n // remove asterisk\n domain = domain.slice(1);\n pos = origin.indexOf(domain);\n\n domainBeginning = origin[origin.length - domain.length - 1];\n\n // check if origin has exactly the same ending of domain\n if (pos > -1 && origin.length - pos === domain.length\n && (domainBeginning === undefined || domainBeginning === '.')) {\n return true;\n }\n\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (domain.indexOf(origin) > -1) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Inherit data from parent array to child\n * Prevents undefined to persist if one of given array is empty\n *\n * @param parent\n * @param child\n * @returns {Array.}\n */\nfunction inherit(parent, child) {\n return (parent || []).concat(child || []);\n}\n\nconst Domain = {\n domain: null,\n\n // default settings configuration\n settings: {\n // boolean Preview of not published videos\n preview: false,\n // completely turn off all ads\n na: false\n },\n\n vendors: {},\n\n initialize(domain) {\n this.domain = domain;\n },\n\n /**\n * Fetch permissions for extended settings\n *\n * @param vendor\n * @returns {*}\n */\n fetch(vendor) {\n if (!this.vendors[vendor]) {\n this.vendors[vendor] = Promise.resolve(config.domains);\n }\n\n return this.vendors[vendor];\n },\n\n /**\n * Check whatever custom settings may be used on current domain or not\n *\n * @param vendor - api key vendor\n * @returns {Promise}\n */\n getPermissions(vendor) {\n return this.fetch(vendor).then((data) => {\n const result = {};\n\n utils.each(data, (item, key) => {\n result[key] = isDomainInArray(\n this.domain,\n inherit(item.global, item[vendor])\n );\n });\n\n return result;\n });\n },\n\n /**\n * Check if current domain is blacklisted\n *\n * @param vendor - api vendor key\n * @returns {*}\n */\n isBlacklisted(vendor) {\n const { blacklist } = config.domains;\n\n // check if domain has access for given provider\n // otherwise deny it\n // allow all dev builds set settings\n if (config.version === 'dev') {\n return false;\n }\n\n return isDomainInArray(this.domain, inherit(blacklist.global, blacklist[vendor]));\n }\n};\n\nexport default Domain;\n","import utils from 'utils/utils';\nimport config from 'player/config';\n\nimport { TOKEN_FETCH_ERROR } from '../playback/config/status-codes';\n\nconst fetchToken = function(params) {\n this.isFetching = true;\n\n return new Promise((resolve, reject) => {\n // fetch new token\n utils.ajax(this.url(params), (response) => {\n this.expire = +new Date() + 1000;\n this.value = response.responseText;\n this.isFetching = false;\n resolve(this.value);\n }, () => {\n this.isFetching = false;\n reject(TOKEN_FETCH_ERROR);\n }, true);\n });\n};\n\nclass Token {\n constructor(assetId, maxBitrate) {\n /**\n * Id of SVP related asset\n */\n this.assetId = assetId;\n\n /**\n * Akamai token value retrieved from SVP api\n * @type {null}\n */\n this.value = null;\n /**\n * Expiration time, timestamp\n * @type {null}\n */\n this.expire = null;\n\n /**\n * Maximum allowed bitrate for stream\n * @type {null}\n */\n this.maxBitrate = maxBitrate || null;\n\n this.request = null;\n this.isFetching = false;\n }\n\n fetch(configuration) {\n if (!this.isValid()) {\n if (this.request && this.isFetching) {\n return this.request;\n }\n\n if (typeof configuration === 'function') {\n this.request = configuration(this.assetId).then(fetchToken.bind(this));\n } else {\n this.request = fetchToken.call(this);\n }\n }\n\n return this.request;\n }\n\n url(params) {\n const query = [\n `vendor=${config.api.vendor}`\n ];\n\n if (params && params.expiry && params.value) {\n query.push(`assetId=${this.assetId}`);\n query.push(`expires=${params.expiry}`);\n query.push(`hmac=${params.value}`);\n } else {\n query.push('acl=/*');\n }\n\n if (this.maxBitrate) {\n query.push(`maxBitrate=${this.maxBitrate}`);\n }\n\n return `${config.api.tokenUrl}?${query.join('&')}`;\n }\n\n getValue() {\n return this.value;\n }\n\n isValid() {\n // on load expire is null therefore it will always return false\n return (+new Date() < this.expire);\n }\n}\n\n\nutils.extend(Token.prototype, utils.Events);\n\nexport default Token;\n","import config from 'player/config';\nimport utils from 'utils/utils';\n\nfunction getDeviceType() {\n return utils.device.getDeviceType();\n}\n\nfunction getCountryCode(vendor) {\n return (vendor === 'ab' || vendor === 'svd') ? 'se' : 'no';\n}\n\nexport default {\n getVmapTag(params) {\n const queryObject = utils.extend({\n cb: (Math.round(Math.random() * 100000000000))\n }, params);\n\n return `${config.ads.appnexus.vmap}?${utils.jsonToUrl(queryObject)}`;\n },\n\n getAstConfig(tagOptions, globalOptions) {\n return utils.extend({}, utils.merge(globalOptions, tagOptions));\n },\n\n getDefaultParams(stream) {\n const vendor = stream.getVendor();\n\n return {\n countryCode: getCountryCode(vendor),\n supplyType: `web_${getDeviceType()}`,\n publisherName: vendor,\n slotIds: {\n preroll: 1,\n midroll: 2,\n postroll: 3\n }\n };\n }\n};\n","import utils from 'utils/utils';\nimport appnexusTag from './appnexus-tag-builder';\n\nconst JwAdsConfig = function (stream) {\n this.stream = stream;\n this.config = {};\n this.params = [];\n};\n\nJwAdsConfig.prototype = {\n setParams(params) {\n this.params = params;\n },\n\n add(adSlotConfig, offset, adLabel) {\n // do not add tag when id is empty\n if (adSlotConfig) {\n this.config[adLabel + Math.floor(Math.random() * 100) + 1] = {\n offset: offset,\n tag: appnexusTag.getVmapTag(utils.merge(this.params, adSlotConfig))\n };\n }\n },\n\n getConfig() {\n return this.config;\n }\n};\n\nexport default JwAdsConfig;\n","import utils from 'utils/utils';\nimport logger from 'utils/logger';\nimport appnexusTagBuilder from './appnexus-tag-builder';\nimport JwAdsConfig from './appnexus-jw-config';\n\n// move to appnexus jw\nfunction getAdsConfig(adConfig, stream, settings) {\n const adSlots = adConfig.adSlots || {};\n const params = adConfig.params || [];\n const adsConfig = new JwAdsConfig(stream);\n const { hasNext } = (settings || {});\n\n adsConfig.setParams(params);\n adsConfig.add(adSlots.preroll, 'pre', 'preroll');\n\n utils.each(stream.getCuePoints(), function (cuePoint) {\n if (cuePoint && cuePoint.timeline) {\n adsConfig.add(adSlots.midroll, cuePoint.timeline, 'midroll');\n }\n });\n\n // postroll is disabled when playnext is available\n if (hasNext === false || (hasNext !== true && stream.get('hasNext') === false)) {\n adsConfig.add(adSlots.postroll, 'post', 'postroll');\n }\n\n return adsConfig.getConfig();\n}\n\nfunction getParams(params, memberId) {\n if (memberId) {\n return utils.extend({}, {\n member: memberId\n }, params);\n }\n\n return params;\n}\n\nfunction parseAdPlacements(adPlacements, globalParams) {\n const placements = {};\n\n utils.each(adPlacements, function (values, placementId) {\n placements[placementId] = appnexusTagBuilder.getAstConfig(values, globalParams);\n });\n\n return placements;\n}\n\nfunction getJwAdSchedule(clientConfig, stream, settings) {\n const { adSlots } = clientConfig;\n\n if (adSlots) {\n return getAdsConfig({\n adSlots: adSlots.schedule,\n params: getParams(adSlots.params, clientConfig.member)\n }, stream, settings);\n }\n\n return {};\n}\n\nfunction getAdPlacements(clientConfig) {\n const { adPlacements } = clientConfig;\n\n if (clientConfig.member && adPlacements) {\n return parseAdPlacements(\n adPlacements.schedule,\n getParams(adPlacements.params, clientConfig.member)\n );\n }\n\n return {};\n}\n\nconst getClientConfig = async (stream, settings) => {\n // ads are disabled\n // check stream config also\n const { na, adn } = settings;\n\n if (na === true || !adn || stream.hasAdsDisabled()) {\n return null;\n }\n\n let svpAdConfig = {};\n\n if (typeof adn === 'function') {\n svpAdConfig = await adn(stream, appnexusTagBuilder.getDefaultParams(stream), adn.svpPlayer);\n }\n\n logger('SVP').log('adsConfig', svpAdConfig);\n\n return svpAdConfig;\n};\n\n/**\n * Handle midroll scheduling in player\n *\n * @param tag\n * @param startTime\n * @returns {{onEnter: onEnter, setTime: setTime, onReady: onReady}}\n */\nconst createMidroll = ({ tag, startTime }) => {\n let hasEntered = false;\n let onEnterCallback = () => {};\n\n const onEnter = (callback) => {\n onEnterCallback = callback;\n };\n\n const onReady = (callback) => {\n if (tag) {\n callback();\n }\n };\n\n const setTime = (time) => {\n if (hasEntered === false && (time >= startTime || startTime === 'NOW')) {\n onEnterCallback(tag);\n hasEntered = true;\n }\n };\n\n return {\n setTime,\n onEnter,\n onReady\n };\n};\n\nexport default {\n getConfig(stream, settings) {\n return getClientConfig(stream, settings).then(function (clientConfig) {\n // null equals to empty ads\n if (clientConfig === null) {\n return {};\n }\n\n return {\n adSchedule: getJwAdSchedule(clientConfig, stream, settings),\n adPlacements: getAdPlacements(clientConfig),\n adOptions: clientConfig.options || {}\n };\n });\n },\n\n getLiveMidrollTag(maxDuration, stream, settings) {\n // eslint-disable-next-line consistent-return\n return getClientConfig(stream, settings).then(function (clientConfig) {\n if (clientConfig) {\n const { adSlots } = clientConfig;\n const midroll = adSlots && adSlots.schedule && adSlots.schedule.midroll;\n\n if (midroll) {\n const params = getParams((adSlots || {}).params, clientConfig.member);\n params.vmaxduration = maxDuration;\n\n return appnexusTagBuilder.getVmapTag(utils.merge(params, midroll));\n }\n }\n });\n },\n createMidroll\n};\n","import utils from 'utils/utils';\nimport appnexus from 'player/playback/ads/appnexus';\n\nfunction getPlaylist(streamUrl, stream, options, settings) {\n const { locale, poster, title } = options;\n\n function addPlaylistMetadata(playlistItem) {\n const mediaId = stream.getExternalId();\n const startTime = stream.getPlaybackTime('begin');\n\n // set media id only if it exists\n if (mediaId) {\n playlistItem.mediaid = mediaId;\n }\n\n // add title\n if (title) {\n playlistItem.title = title;\n }\n\n // seek stream if play ahead time is set\n if (startTime) {\n playlistItem.starttime = startTime;\n }\n return playlistItem;\n }\n\n function addProgressiveMediaSources(playlistItem) {\n utils.each(stream.getMp4Streams(), function (mp4Stream) {\n playlistItem.sources.push({\n label: `${mp4Stream.height}p`,\n file: mp4Stream.source\n });\n });\n\n return playlistItem;\n }\n\n function addSnapshots(playlistItem) {\n if (stream.hasSnapshots()) {\n // add snapshots for each stream\n playlistItem.tracks.push({\n file: stream.getSnapshots(),\n kind: 'thumbnails'\n });\n }\n\n return playlistItem;\n }\n\n function addCaptions(playlistItem) {\n if (stream.getCaptions().length > 0) {\n utils.each(stream.getCaptions(), function(caption) {\n playlistItem.tracks.push({\n file: caption.url,\n label: locale.translate(caption.language),\n kind: 'captions',\n default: caption.default === true\n });\n });\n }\n\n return playlistItem;\n }\n\n function addAppnexusAds(adConfig, playlistItem) {\n const { adSchedule, adPlacements } = (adConfig || {});\n\n // check if there are ads\n if (adSchedule && Object.keys(adSchedule).length > 0) {\n utils.extend(playlistItem, {\n adschedule: adSchedule\n });\n }\n\n // check if there are ads\n if (adPlacements) {\n playlistItem.adPlacements = adPlacements;\n }\n\n return playlistItem;\n }\n\n function add3dSupport(playlistItem) {\n if (stream.getDisplayType() === '360') {\n playlistItem.stereomode = 'monoscopic';\n }\n\n return playlistItem;\n }\n\n return function (config) {\n return Promise.resolve({\n id: stream.getId(),\n image: poster,\n sources: [{\n file: streamUrl,\n // force stream type for mock stream which contains mp4 blob\n type: stream.isMock() ? 'video/mp4' : 'hls',\n default: true\n }],\n mediaType: stream.get('mediaType'),\n tracks: []\n })\n .then(addPlaylistMetadata)\n .then(addProgressiveMediaSources)\n .then(addCaptions)\n .then(addSnapshots)\n .then(add3dSupport)\n .then(function (playlistItem) {\n return appnexus.getConfig(stream, settings).then(function (adConfig) {\n const adOptions = adConfig.adOptions || {};\n\n config.advertising = utils.extend({\n client: 'vast'\n }, locale.translate('ads', true));\n\n if (typeof adOptions.autoplayMuted !== 'undefined') {\n config.advertising.autoplayadsmuted = adOptions.autoplayMuted;\n }\n\n if (adOptions.vpaidcontrols === true) {\n config.advertising.vpaidcontrols = true;\n }\n\n if (adOptions.preloadAds === true) {\n config.advertising.preloadAds = true;\n }\n\n // do not add any ads to playlist when it is in preload mode\n if (stream.isMock()) {\n return playlistItem;\n }\n\n return addAppnexusAds(adConfig, playlistItem);\n });\n })\n .then(function (playlistItem) {\n config.playlist = [playlistItem];\n\n playlistItem.svp = {\n stream: stream,\n settings: settings\n };\n\n return config;\n });\n };\n}\n\nexport default getPlaylist;\n","import configuration from 'player/config';\nimport locale from 'player/model/locale';\n/**\n * Create sharing config based on passed options\n *\n * @param options\n * @param stream\n * @param globals\n * @return {*}\n */\nconst getConfig = ({\n options, stream, globals = {\n sharing: configuration.sharing,\n title: locale.translate('Sharing')\n }\n}) => {\n if (options === false) {\n return null;\n }\n\n const defaults = globals.sharing || {};\n const vendor = stream.getVendor();\n\n const sharing = Object.assign({}, defaults.global);\n\n // use provider specific sharing info\n if (defaults[vendor]) {\n Object.assign(sharing, defaults[vendor]);\n }\n\n // extend sharing options when object is provided as param for it\n if (typeof options === 'object') {\n Object.assign(sharing, options);\n } else if (typeof options === 'function') {\n Object.assign(sharing, options(stream.attributes));\n }\n\n // add uri encoding to prevent sharing problems\n if (sharing.code) {\n sharing.code = encodeURIComponent(sharing.code);\n }\n\n if (!sharing.heading) {\n sharing.heading = globals.title;\n }\n\n return sharing;\n};\n\n/**\n * JW configuration adapter\n *\n * @param args\n * @return {function(*): *}\n */\nconst addSharing = (...args) => function (config) {\n const sharing = getConfig(...args);\n\n if (sharing === null) {\n delete config.sharing;\n } else {\n config.sharing = sharing;\n }\n\n return config;\n};\n\nexport {\n getConfig,\n addSharing\n};\n","/**\n * Check if preroll is scheduled in configuration\n *\n * @param config\n * @returns {boolean}\n */\nconst hasPreroll = (config) => {\n const playlistItem = config && config.playlist[0];\n\n // check if preroll exists in array\n if (playlistItem.adschedule) {\n return Object.values(playlistItem.adschedule)\n .some((slot) => slot.offset === 'pre');\n }\n\n return false;\n};\n\nexport default function (stream, options) {\n // additional config options required for playback\n return function (config) {\n let canAutostart = options.autoplay;\n\n // firefox requires this flag to be set when playing SecureHD stream\n if (stream && stream.isSecure()) {\n config.withCredentials = true;\n }\n\n // stream is not available yet, display countdown\n if (!stream.hasPlayableSource()) {\n // disable autoplay if stream is not available\n config.preload = 'none';\n config.autostart = false;\n }\n\n // force sound mute when configuration is set\n if (options.mute === true) {\n config.mute = true;\n }\n\n // load skin if available\n if (options.skin) {\n config.skin = options.skin;\n }\n\n // fix jw bug\n // by default you can't play muted ads\n if (hasPreroll(config) && config.advertising.autoplayadsmuted !== true) {\n try {\n if (config.mute === true || localStorage.getItem('jwplayer.mute') === 'true') {\n canAutostart = false;\n // unmute player when autostart is not available\n config.mute = false;\n }\n } catch (error) {\n // for private browsing\n }\n }\n\n // disable autostart for future streams\n if (stream.isFuture()) {\n canAutostart = false;\n }\n\n if (typeof canAutostart !== 'undefined') {\n config.autostart = canAutostart;\n }\n\n // set autopause to viewable\n if (options.autopause === 'viewable') {\n config.autoPause = {\n viewability: true\n };\n }\n\n return config;\n };\n}\n","import config from 'player/config';\nimport moduleLoader from 'utils/module-loader';\n\nlet request = null;\n\nconst youboraSdk = {\n state: 'UNLOADED',\n options: {},\n\n load(options = {}) {\n this.options = options;\n if (request === null) {\n this.state = 'LOADING';\n\n request = moduleLoader(config.cdn.youbora);\n request.then((youbora = window.youbora) => {\n this.state = 'READY';\n window.youbora = youbora;\n });\n }\n\n return request;\n },\n\n initialize(player, options = {}) {\n // skip when library is not loaded\n if (this.state !== 'READY' || this.state === 'LOADED') {\n return;\n }\n\n const { youbora } = window;\n\n // skip if youbora sdk does not exist\n if (!youbora) {\n return;\n }\n\n try {\n const plugin = new youbora.Plugin(Object.assign(\n options, this.options\n ));\n\n plugin.setAdapter(new youbora.adapters.JWPlayer(player));\n\n this.state = 'LOADED';\n } catch (e) {\n console.error('Could not load youbora plugin', e);\n }\n }\n};\n\nexport default youboraSdk;\n","/* global console */\nimport utils from 'utils/utils';\nimport Model from 'utils/model';\nimport image from 'utils/image';\nimport { objectToString, prettyObject } from 'utils/string';\n\nimport config from 'player/config';\nimport Domain from 'player/model/domain';\nimport Token from 'player/model/token';\n\nimport locale from 'player/model/locale';\n\nimport appnexus from './ads/appnexus';\nimport addPlaylist from './config/playlist';\nimport { addSharing } from './config/sharing';\nimport setPlaybackOptions from './config/playback';\nimport addYoubora from './config/jw-youbora';\nimport setKey from './config/keys';\nimport setCaptions from './config/captions';\n\nimport * as STATUS_CODES from './config/status-codes';\nimport youbora from './youbora';\n\n/**\n * Config instance for player\n * Contains SVP Player options\n * Parses config\n *\n * @param options\n * @constructor\n */\nconst Config = function () {\n this.attributes = {\n // DOM node\n node: null,\n // API vendor\n vendor: null,\n // player environment\n env: 'production',\n // stream object (extracted from asset)\n stream: null,\n // if not provided width will be read from node element\n width: '100%',\n // if not provided height will be read from node element\n height: '100%',\n // start playing from chapter time\n chapter: null,\n // start stream automatically on capable devices (does not work on iPhone and iPad, Android)\n autoplay: false,\n // player poster (image), mixed string (http src)|true|false\n poster: true,\n // display title on poster or change to provided string (default false)\n title: null,\n // play ahead time, format XXhYYmZZs, for example: 02h09m10s\n time: null,\n // url to css file with skin\n skin: config.skins.default,\n // right click defualt text and link\n about: {\n text: 'SMP Stream',\n link: ''\n },\n // token function for secured streams\n token: null\n };\n\n /**\n * JW Player Config\n */\n this.jwDefaults = {\n primary: null,\n hlshtml: true,\n base: config.cdn.player,\n flashplayer: `${config.cdn.player}/jwplayer.flash.swf`,\n wmode: 'transparent',\n key: config.player.keys.default\n };\n\n this.token = null;\n};\n\nConfig.prototype = {\n /**\n * Calculates bitrate value based on given limit\n *\n * maxBitrate is increased by 15% due to VBR encoding\n * @returns {number}\n */\n getMaxBitrate() {\n return this.get('maxBitrate') * 1.15;\n },\n\n setStream(stream) {\n this.stream = stream;\n this.token = new Token(stream.get('id'), this.getMaxBitrate());\n },\n\n /**\n * Get config passed to SVP Player constructor\n * @returns {*|{}}\n */\n getRaw() {\n return this.rawOptions || {};\n },\n\n /**\n * Dump Javascript config to a string\n * @returns {Promise}\n */\n async dump() {\n const prettier = await prettyObject();\n return prettier(objectToString(this.getRaw()));\n },\n\n /**\n * TODO add tests\n *\n * @param stream\n * @param container\n * @returns {*}\n */\n getPoster(stream, playerContainer) {\n const container = playerContainer || document.getElementById(this.get('node'));\n\n const width = this.get('width');\n const height = this.get('height');\n\n if (utils.isString(this.get('poster'))) {\n return this.get('poster');\n }\n\n if (container && stream) {\n return image.getImageSrc(\n stream.getPoster(),\n 'poster',\n // use width and height if it's set as a number\n utils.isNumber(width) ? width : container.clientWidth,\n utils.isNumber(height) ? height : container.clientHeight\n );\n }\n\n return null;\n },\n\n /**\n * Retrieve token required for secure streams\n * Token expiry has to match API\n */\n getToken() {\n if (this.stream.isSecure()) {\n return this.token.fetch(this.get('token'));\n }\n\n return Promise.resolve(null);\n },\n\n /**\n * Token is required only for secure streams so for all other types it's valid\n *\n * @returns {boolean}\n */\n hasValidToken() {\n return !this.stream.isSecure() || this.token.isValid();\n },\n\n getStreamUrl(type) {\n // stream not set yet\n if (!this.stream) {\n // eslint-disable-next-line no-console\n console.error('SVP SDK: getStreamUrl() called before stream set');\n return null;\n }\n\n return this.getToken().then((token) => {\n const streamUrl = this.stream.getUrl(type);\n const maxBitrate = this.getMaxBitrate();\n const params = [];\n\n if (type === 'hls' && token) {\n params.push(`hdnea=${encodeURIComponent(token)}`);\n }\n\n if (maxBitrate) {\n params.push(`b=0-${maxBitrate}`);\n }\n\n // only live streams require custom metadata\n // it's used to trigger ads\n if (this.stream.isLive()) {\n params.push('custom-mdt=on');\n }\n\n return streamUrl + ((params.length > 0) ? `?${params.join('&')}` : '');\n });\n },\n\n /**\n * Check if user is eligible to play stream in his geolocation\n *\n * @param stream\n * @returns {Promise}\n */\n isStreamPlayable() {\n const { stream } = this;\n const settings = this.getSettings();\n\n return new Promise((resolve, reject) => {\n if (settings.preview === true) {\n resolve(STATUS_CODES.ACTIVE_PREVIEW);\n } else if (stream.isActive()) {\n if (stream.isGeoblocked() && !stream.isFuture()) {\n this.getStreamUrl('hls').then((streamUrl) => {\n // fetch manifest to check user access\n utils.ajax(streamUrl, resolve, function (...args) {\n const response = args[2] || {};\n\n if (response.status === 403) {\n return reject(STATUS_CODES.NOT_ACTIVE_GEOBLOCKED);\n }\n\n return reject(STATUS_CODES.NETWORK_ERROR);\n }, true);\n }).catch(reject);\n } else {\n resolve(STATUS_CODES.ACTIVE);\n }\n } else if (stream.isPast()) {\n reject(STATUS_CODES.NOT_ACTIVE_PAST);\n } else {\n reject(STATUS_CODES.NOT_ACTIVE);\n }\n });\n },\n\n getJwConfig(stream) {\n const settings = this.getSettings();\n\n return Promise.resolve({\n width: this.get('width'),\n height: this.get('height'),\n abouttext: this.get('about').text,\n aboutlink: this.get('about').link,\n sharing: utils.extend({}, config.sharing.global),\n primary: this.get('primary') || 'html5',\n localization: locale.translate('player', true),\n plugins: {},\n cast: {}\n }).then((jwConfig) => this.getStreamUrl('hls').then((streamUrl) => addPlaylist(\n streamUrl,\n stream,\n {\n poster: this.getPoster(stream),\n title: this.get('title') === true ? stream.get('title') : this.get('title'),\n locale: locale\n },\n this.getPlaylistSettings()\n )(jwConfig)))\n .then(addSharing({\n options: this.get('sharing'),\n stream\n }))\n .then(setCaptions(this.get('captions')))\n .then(setPlaybackOptions(stream, {\n mute: this.get('mute'),\n skin: this.get('skin'),\n autoplay: this.get('autoplay'),\n autopause: this.get('autopause')\n }))\n // enable only five percent of traffic for youbora\n .then(addYoubora(\n stream,\n youbora.state === 'READY'\n ))\n .then(setKey(this.get('vendor')))\n .then((jwConfig) => utils.merge(utils.extend({}, this.jwDefaults, jwConfig), settings.jw || {}));\n },\n\n /**\n * Check if recommended is available\n */\n hasRecommended() {\n // recommended is turned off\n return this.get('recommended') !== false;\n },\n\n getRecommended() {\n return this.get('recommended');\n },\n\n hasNext() {\n if (!this.hasRecommended()) {\n return false;\n }\n\n if (this.getRecommended() && (this.getRecommended().next === false\n || typeof this.getRecommended().next === 'undefined')) {\n return false;\n }\n\n return true;\n },\n\n getPlaylistSettings() {\n return utils.extend({\n adn: this.get('adn'),\n hasNext: this.hasNext()\n }, this.getSettings());\n },\n\n getLiveMidrollTag(time) {\n return appnexus.getLiveMidrollTag(\n time,\n this.stream,\n this.getPlaylistSettings()\n );\n },\n\n parse(options) {\n const asset = (options.asset || options.id);\n const about = config.about[options.vendor];\n const skin = utils.extend({}, (config.skins[options.vendor] || config.skins.default));\n\n // set default skin for player if nothing is provided\n if (typeof options.skin === 'object') {\n if (options.skin.name) {\n skin.name += ` ${options.skin.name}`;\n }\n\n if (options.skin.url) {\n skin.url = options.skin.url;\n }\n } else {\n // remove if not valid\n delete options.skin;\n }\n\n\n options.skin = skin;\n\n // override about link/text\n if (!options.about && about) {\n options.about = about;\n }\n\n // delete asset\n if (asset) {\n delete options.asset;\n }\n\n // check if user passed chapter or time\n if (utils.isString(options.chapter) && options.chapter.match(/^\\d+$/)) {\n options.chapter = parseInt(options.chapter, 10);\n }\n\n // legacy support\n if (options.time) {\n options.time = utils.time.shareTimeToSeconds(options.time);\n }\n\n if (options.settings) {\n delete options.settings;\n }\n\n return options;\n }\n};\n\n// Immutable method for restricted settings like preview or na\nObject.defineProperty(Config.prototype, 'initialize', {\n value(options) {\n const { vendor } = options;\n const rawOptions = utils.extend({}, options);\n\n this.rawOptions = rawOptions;\n\n Domain.getPermissions(vendor).then((permissions) => {\n const settings = {};\n\n if (permissions.whitelist === true && options.settings) {\n utils.extend(settings, options.settings);\n }\n\n if (permissions.preview === false) {\n delete settings.preview;\n }\n\n // turn off ads for certain provider\n if (config.ads[vendor] === false) {\n settings.na = true;\n }\n\n Object.defineProperty(this, 'settings', {\n value: Object.freeze(settings),\n writable: false\n });\n\n utils.extend(this.attributes, this.parse(options));\n this.trigger('ready', rawOptions, settings);\n });\n },\n writable: false\n});\n\n// Immutable method for restricted settings like preview or na\nObject.defineProperty(Config.prototype, 'getSettings', {\n value() {\n return this.settings;\n },\n writable: false\n});\n\nutils.extend(Config.prototype, Model);\n\nexport default Config;\n","export default function (options = {}) {\n // additional config options required for playback\n return function (jwConfig) {\n if (options.native === true) {\n jwConfig.renderCaptionsNatively = true;\n delete options.native;\n }\n\n if (Object.keys(options).length > 0) {\n jwConfig.captions = options;\n }\n\n return jwConfig;\n };\n}\n","export default function (stream, isEnabled) {\n // additional config options required for playback\n return function (config) {\n // allow only when account config is available\n if (isEnabled) {\n if (config.playlist && config.playlist[0]) {\n const streamConfiguration = stream.get('streamConfiguration')\n && stream.get('streamConfiguration').properties;\n\n const category = stream.getCategory();\n\n config.playlist[0].youbora = {\n 'content.resource': stream.getUrl('hls'),\n 'content.isLive': stream.isLive(),\n 'content.title': stream.get('title'),\n 'content.duration': stream.getDuration(),\n 'content.cdn': 'AKAMAI',\n 'content.metadata': {\n content_id: stream.getId(),\n owner: stream.getVendor()\n },\n\n 'extraparam.1': stream.getId(),\n 'extraparam.2': stream.getVendor(),\n 'extraparam.3': streamConfiguration.join(','),\n 'extraparam.4': category && category.get('id')\n };\n }\n }\n\n return config;\n };\n}\n","import config from 'player/config';\n\nexport default function (vendor) {\n // additional config options required for playback\n return function (jwConfig) {\n const { keys } = config.player;\n\n jwConfig.key = keys[vendor] || keys.default;\n\n return jwConfig;\n };\n}\n","/* jshint bitwise: false */\nimport utils from 'utils/utils';\nimport Events from 'utils/backbone.events';\n\nfunction binarySearch(arr, compare) {\n // binary search, with custom compare function\n let l = 0;\n\n let r = arr.length - 1;\n let m;\n let comp;\n\n while (l <= r) {\n // eslint-disable-next-line no-bitwise\n m = l + ((r - l) >> 1);\n comp = compare(arr[m]);\n\n if (comp < 0) {\n // arr[m] comes before the element\n l = m + 1;\n } else if (comp > 0) {\n // arr[m] comes after the element\n r = m - 1;\n } else {\n return m;\n }\n }\n\n return l - 1; // return the index of the next left item\n // usually you would just return -1 in case nothing is found\n}\n\nconst Viewport = function() {\n this.current = null;\n};\n\nViewport.prototype = {\n labels: [\n 'tiny', 'tiny-small', 'tiny-small-medium',\n 'tiny-small-medium-big', 'tiny-small-medium-big-web', 'tiny-small-medium-big-web-wide'\n ],\n sizes: [0, 480, 640, 768, 1024, 1200],\n\n /**\n * Update player viewport which is not equal to browser wiewport\n *\n * @param width\n */\n update(width) {\n const newIndex = binarySearch(this.sizes, (x) => x - width);\n\n if (this.current !== newIndex) {\n const newBreakpoint = this.getViewportByIndex(newIndex);\n const currentBreakpoint = this.getViewportByIndex(this.current);\n\n this.trigger('change', newBreakpoint, currentBreakpoint);\n\n this.current = newIndex;\n }\n },\n\n getViewportByIndex(index) {\n return {\n width: this.sizes[index],\n label: this.labels[index]\n };\n }\n};\n\nutils.extend(Viewport.prototype, Events);\n\nexport default Viewport;\n","/* eslint-disable max-len */\nimport utils from 'utils/utils';\nimport locale from 'player/model/locale';\n\nimport playIcon from 'icons/play.svg';\nimport pauseIcon from 'icons/pause.svg';\nimport audioIcon from 'icons/audio.svg';\nimport audioMuted from 'icons/audio-muted.svg';\nimport homad from './homad-lib';\n\nfunction getAdPotTag(offset, adschedule) {\n const keys = Object.keys(adschedule);\n let tag = null;\n\n utils.each(keys, function (key) {\n if (key.indexOf(offset) > -1) {\n // eslint-disable-next-line prefer-destructuring\n tag = adschedule[key].tag;\n }\n });\n\n return tag;\n}\n\nfunction getTagUrl(potOffset) {\n return function (player) {\n const playlistItem = player.getPlaylist()[0];\n let tag = false;\n\n if (playlistItem.adschedule) {\n tag = getAdPotTag(potOffset, playlistItem.adschedule);\n }\n\n if (tag) {\n tag = tag.replace('vmap', 'ssvmap');\n } else {\n tag = false;\n }\n\n return tag;\n };\n}\n\n\nconst getHomadConfig = () => ({\n globalConfig: 'https://s3.amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json',\n clientConfig: '/homad-config.json',\n admessage() {\n return locale.translate('adblock').admessage;\n },\n skipable: true,\n skipAdOnContextChange: true,\n runInsideContainer: true,\n adjustAdVolumeToContentPlayer: true,\n postrollUseCompleteEvent: false,\n onReady() {\n },\n muteButton: `
${audioIcon}
`,\n unmuteButton: `
${audioMuted}
`,\n playButton: `
${playIcon}
`,\n pauseButton: `
${pauseIcon}
`,\n skipableButton: (function () {\n const adMessages = locale.translate('ads');\n return `
\n ${adMessages.skipmessage.replace('xx', '[time]')}\n \n \n \n
`;\n }()),\n skipButton: (function () {\n const adMessages = locale.translate('ads');\n\n return `
\n ${adMessages.skiptext}\n \n
`;\n }()),\n 'innerWarpper.style': '',\n prerollAdTag: getTagUrl('pre'),\n midrollAdTag: getTagUrl('mid'),\n postrollAdTag: getTagUrl('post')\n});\n\n/**\n * Homad AAB ads have single event bus for all players\n *\n * @param event\n */\nfunction parseHomadEvent(event) {\n // homad event details are under detils property\n const details = event && event.detail;\n\n // skip parsing when there is missing data or player is not registered\n if (!details || !this.events[details.containerId]) {\n return;\n }\n\n this.events[details.containerId].trigger(details.name, details);\n}\n\nexport default utils.extend({\n // events hashmap playerId -> eventBus\n // each player has its own events bus\n events: {},\n initialize() {\n const SvpPlayer = window.SVP.Player;\n\n if (!SvpPlayer.isHomadLoaded) {\n SvpPlayer.isHomadLoaded = true;\n\n const homadConfig = getHomadConfig();\n\n // override aab config url\n if (SvpPlayer.defaults.aabConfig) {\n homadConfig.clientConfig = SvpPlayer.defaults.aabConfig;\n }\n\n homad(homadConfig);\n\n window.addEventListener('hdEvent', parseHomadEvent.bind(this));\n }\n },\n\n /**\n * Get events for specific player\n * Events are matched by player id\n *\n * @param playerId\n * @returns {*}\n */\n getEvents(playerId) {\n // create event bus for specific player if this doesn't exist\n if (!this.events[playerId]) {\n this.events[playerId] = utils.extend({}, utils.Events);\n }\n\n return this.events[playerId];\n },\n\n /**\n * Remove player events from messaging bus\n * Prevents memory leaks\n *\n * @param playerId\n */\n removeEvents(playerId) {\n if (this.events[playerId]) {\n this.events[playerId].off();\n this.events[playerId].stopListening();\n\n this.events[playerId] = null;\n delete this.events[playerId];\n }\n }\n}, utils.Events);\n","const getPlaybackState = (container) => {\n const playerClassList = container.classList;\n const adStarted = ['jw-flag-ads', 'svp-homad-playing'];\n\n const useClasses = (add, remove) => {\n playerClassList.add(...add);\n playerClassList.remove(...remove);\n };\n\n return {\n setAdPlaying: () => useClasses(adStarted, ['svp-homad-loading']),\n setAdComplete: () => useClasses([], adStarted)\n };\n};\n\nconst getControlsContainer = (adPlayerContainer) => {\n const controlsContainer = adPlayerContainer.querySelector('.jw-icon').parentNode.parentNode;\n\n const appendControl = (domNode) => {\n controlsContainer.appendChild(domNode);\n };\n\n return {\n appendControl\n };\n};\n\nconst createProgressBar = (container) => {\n const seekBar = container.querySelector('.jw-controlbar').cloneNode(true);\n seekBar.querySelector('.jw-button-container').remove();\n seekBar.querySelector('.jw-progress').style.width = '0%';\n\n const progressLoader = seekBar.querySelector('.jw-progress');\n\n const setProgress = (value) => {\n progressLoader.style.width = `${value}%`;\n };\n\n return {\n domNode: seekBar,\n reset: () => setProgress(0),\n setProgress\n };\n};\n\nconst createFullscreenButton = (container) => {\n const fullscreenButton = container.querySelector('.jw-icon-fullscreen').cloneNode(true);\n const onClick = (handleClick) => {\n fullscreenButton.addEventListener('click', handleClick, true);\n };\n\n return {\n domNode: fullscreenButton,\n onClick\n };\n};\n\nconst toggleFullscreen = (jwPlayer) => {\n try {\n jwPlayer.setFullscreen();\n } catch (e) {\n // fullscreen did not work\n }\n};\n\nconst adjustVolumePosition = (adPlayerContainer) => {\n const volumeBtn = adPlayerContainer.querySelector('.jw-icon-volume');\n\n if (volumeBtn) {\n volumeBtn.parentNode.style.float = 'left';\n }\n};\n\nconst createHomadSkin = (player, adPlayer, adPlayerContainer) => {\n const container = player.getContainer();\n const { appendControl } = getControlsContainer(adPlayerContainer);\n\n const fullScreenButton = createFullscreenButton(container);\n fullScreenButton.onClick(() => toggleFullscreen(player.player));\n appendControl(fullScreenButton.domNode);\n\n const seekBar = createProgressBar(container);\n adPlayer.addEventListener(\n 'timeupdate',\n () => seekBar.setProgress((adPlayer.currentTime / adPlayer.duration) * 100),\n true\n );\n appendControl(seekBar.domNode);\n\n const { setAdPlaying, setAdComplete } = getPlaybackState(container);\n player.once('adSlotStart', seekBar.reset);\n player.once('adSlotStart', setAdPlaying);\n player.once('adSlotComplete', setAdComplete);\n\n adjustVolumePosition(adPlayerContainer);\n};\n\nexport {\n createHomadSkin\n};\n","/* global SVP */\nimport utils from 'utils/utils';\nimport logger from 'utils/logger';\nimport HomadAds from './homad';\n\nimport { createHomadSkin } from './homad-skin';\n/**\n * Get Ad Player from player container\n *\n * @param parent\n * @param cb\n */\nfunction getAdPlayer(parent, cb) {\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(mutation) {\n if (mutation.type === 'childList') {\n const nodes = mutation.addedNodes;\n\n if (nodes && nodes[0]) {\n const video = nodes[0].querySelector('video');\n\n if (video) {\n cb(video, nodes[0]);\n }\n }\n }\n });\n });\n\n // pass in the target node, as well as the observer options\n observer.observe(parent, {\n attributes: false,\n childList: true,\n characterData: false\n });\n}\n\n/**\n * Initialize ad player\n *\n * @param player\n * @returns {Function}\n */\nfunction initializeAdPlayer(player) {\n /**\n * Called every time ad video player is shown\n */\n return function (adPlayer, adPlayerContainer) {\n adPlayerContainer.classList.add('svp-homad-player');\n player.getContainer().classList.remove('jw-state-buffering');\n createHomadSkin(player, adPlayer, adPlayerContainer);\n };\n}\n\nfunction onAdError() {\n const jw = this.player;\n const container = this.getContainer();\n\n this.hasAdBlocked = true;\n\n // just to be sure\n this.once('adStarted', function () {\n this.adPlayerLoading = false;\n }, this);\n\n this.once('adSlotComplete', function () {\n container.classList.remove('svp-homad-loading');\n }, this);\n\n this.listenToOnce(jw, 'play', function () {\n this.adPlayerLoading = true;\n }, this);\n\n this.listenToOnce(jw, 'pause', function (options) {\n // first external pause is triggered by homad\n // this equals to ad tag loaded and parsed\n if (options && options.pauseReason === 'external') {\n this.adPlayerLoading = false;\n }\n }, this);\n}\n\nfunction onAdBreakStart(data) {\n const duration = this.getDuration();\n const currentTime = this.getCurrentTime();\n const container = this.getContainer();\n\n // homad has strange constraints for midroll\n if ((data && data.adposition !== 'mid') || (currentTime > 30 && duration - currentTime > 30)) {\n container.classList.add('svp-homad-loading');\n\n // clean loading in case of any error\n setTimeout(function () {\n container.classList.remove('svp-homad-loading');\n }, 5000);\n\n this.listenToOnce(this.player, 'adPlay', () => {\n container.classList.remove('svp-homad-loading');\n });\n }\n}\n\n/**\n * Forward events which are the same\n * @param eventName\n */\nfunction forwardEvent(eventName) {\n this.listenTo(this.events, eventName, function () {\n // trigger ad events only while ads are playing\n if (this.adPlaying === true) {\n // clear event data\n this.trigger(eventName);\n }\n }, this);\n}\n\nfunction onReady() {\n if (SVP.Player.isHomadLoaded !== true) {\n return;\n }\n\n // events are matched by player id\n const playerId = this.config.get('node');\n\n this.events = HomadAds.getEvents(playerId);\n\n this.listenTo(this.events, 'contentPlayerPlay', function () {\n this.getContainer().classList.remove('svp-homad-loading');\n }, this);\n\n this.listenTo(this.events, 'all', function (event, data) {\n logger('AAB').log(event, data);\n }, this);\n\n this.listenTo(this.events, 'adStart', function (data) {\n this.adPosition = data.state;\n\n if (this.adPlaying === false) {\n this.trigger('adSlotStart', {\n position: this.adPosition\n });\n\n this.adPlaying = true;\n }\n\n this.trigger('adStarted');\n }, this);\n\n this.listenTo(this.events, 'continueContent', function () {\n this.getContainer().classList.remove('jw-flag-ads');\n\n if (this.adPlaying === true) {\n this.trigger('adSlotComplete', {\n position: this.adPosition\n });\n\n this.adPlaying = false;\n }\n });\n\n this.listenTo(this.events, 'adTime', function (data) {\n if (data.currentTime && this.adPlaying) {\n this.trigger('adProgress', data.currentTime, data.duration);\n }\n }, this);\n\n this.listenTo(this.events, 'adMeta', function (data) {\n if (data) {\n this.trigger('adData', {\n adId: data.adId || null,\n impression: data.impressionURL || null\n });\n }\n }, this);\n\n utils.each(['adComplete', 'adSkipped', 'adPause', 'adPlay'], forwardEvent.bind(this));\n\n // cleanup events\n this.once('remove', HomadAds.removeEvents.bind(HomadAds, playerId));\n\n this.listenTo(this.player, 'adError', onAdError.bind(this));\n this.listenTo(this.player, 'adBreakStart', onAdBreakStart.bind(this));\n\n // turn off ad player loading when there is no ads\n this.listenTo(this.player, 'playlistItem', (playlistItem) => {\n if (playlistItem.item && !playlistItem.item.adschedule) {\n this.adPlaying = false;\n this.adPlayerLoading = false;\n }\n });\n\n // turn off ad player loading when there is no ads\n this.listenTo(this.player, 'adPlay', () => {\n this.adPlaying = true;\n this.adPlayerLoading = false;\n });\n\n this.adPlayerLoading = false;\n\n getAdPlayer(this.getContainer(), initializeAdPlayer(this));\n}\n\nexport default function (Player) {\n const { setup } = Player.prototype;\n\n // anti adblock works only for desktops\n if (!utils.device.isDesktop()) {\n return Player;\n }\n\n /**\n * Proxy player method\n * Call source when adblock is not present\n *\n * @param name\n * @param cb\n */\n function proxyMethod(name, cb) {\n const sourceMethod = Player.prototype[name];\n\n Player.prototype[name] = function () {\n const args = Array.prototype.slice.call(arguments);\n\n if (SVP.Player.isHomadLoaded !== true) {\n return sourceMethod.apply(this, args);\n }\n\n return cb.call(this, sourceMethod, args);\n };\n }\n\n Player.prototype.setup = function () {\n this.once('ready', onReady);\n return setup.call(this);\n };\n\n\n proxyMethod('onFirstFrameLoad', function (onFirstFrameLoad) {\n if (this.hasAdBlocked) {\n this.player.once('play', function () {\n this.player.once('providerFirstFrame', function () {\n onFirstFrameLoad.call(this, this.playlistItemId);\n }, this);\n }, this);\n } else {\n onFirstFrameLoad.call(this, this.playlistItemId);\n }\n });\n\n proxyMethod('onTime', function (onTime, args) {\n if (!this.adPlaying && this.adPlayerLoading === false) {\n onTime.apply(this, args);\n }\n });\n\n // eslint-disable-next-line consistent-return\n proxyMethod('onPlay', function (onPlay, args) {\n if (this.adPlayerLoading === false) {\n return onPlay.apply(this, args);\n }\n });\n\n //\n proxyMethod('onPause', function (onPause, args) {\n if (this.adPlaying === false && this.adPlayerLoading === false) {\n onPause.apply(this, args);\n }\n });\n\n proxyMethod('onComplete', function (onComplete, args) {\n if (this.adPlaying === false && (this.adPlayerLoading === false || this.adPlayerLoading === undefined)) {\n onComplete.apply(this, args);\n } else {\n this.listenToOnce(this.events, 'continueContent', function () {\n onComplete.apply(this, args);\n }, this);\n }\n });\n\n return Player;\n}\n","import utils from 'utils/utils';\n/**\n * Check if preroll is scheduled in configuration\n *\n * @param config\n * @returns {boolean}\n */\nfunction hasPreroll(config) {\n const playlistItem = config && config.playlist[0];\n let result = false;\n\n if (playlistItem.adschedule) {\n utils.each(playlistItem.adschedule, function (slot) {\n if (slot && slot.offset === 'pre') {\n result = true;\n }\n });\n }\n\n return result;\n}\n\n/**\n * Check if given stream can be autoplayed\n * Rules for autoplay depends on device but also on flags given to playback\n *\n * @deprecated new autoplay policies require starting of video to detect if autoplay will work\n * @param config - JW Configuration\n * @returns {boolean}\n */\nfunction canAutoplay(config) {\n var canDeviceAutoplay = utils.device.canAutoplay();\n\n // enable autoplay for devices with disabled ads and at least muted autoplay ability ios10\n var result = (canDeviceAutoplay === 'always');\n\n if (canDeviceAutoplay === 'muted' && !hasPreroll(config)) {\n result = true;\n }\n\n return result;\n}\n\nexport default {\n canAutoplay: canAutoplay\n};\n","const handle = () => {\n let supposedCurrentTime = 0;\n let video = null;\n\n const onSeeking = () => {\n // guard against infinite recursion:\n // user seeks, seeking is fired, currentTime is modified, seeking is fired, current time is modified, ....\n if (Math.abs(video.currentTime - supposedCurrentTime) > 0.01) {\n video.currentTime = supposedCurrentTime;\n }\n };\n\n const onTimeUpdate = () => {\n if (!video.seeking) {\n supposedCurrentTime = video.currentTime;\n }\n };\n\n const init = (videoElement) => {\n video = videoElement;\n\n if (video) {\n // prevent user from seeking\n video.addEventListener('seeking', onSeeking);\n video.addEventListener('timeupdate', onTimeUpdate);\n }\n };\n\n const remove = () => {\n if (video) {\n video.removeEventListener('seeking', onSeeking);\n video.removeEventListener('timeupdate', onTimeUpdate);\n }\n };\n\n return {\n init, remove\n };\n};\n\nconst load = (svpPlayer) => {\n const handler = handle();\n\n /**\n * Get video tag from SVP Player\n *\n * @param player\n * @returns {Element | any}\n */\n const getVideo = (player) => player.getContainer().querySelector('video');\n\n /**\n * Add prevent seeking handler for every adslot\n */\n const onAdSlotStart = () => {\n handler.init(getVideo(svpPlayer));\n };\n\n /**\n * Remove it when ad completes\n */\n const onAdSlotComplete = () => {\n handler.remove();\n };\n\n svpPlayer.on('adSlotStart', onAdSlotStart);\n svpPlayer.on('adError adSlotComplete', onAdSlotComplete);\n};\n\nexport { handle };\nexport default load;\n","const loadedStylesheets = [];\n\nfunction loadStylesheet(href, onSuccess, onError) {\n if(loadedStylesheets.indexOf(href) > -1) {\n return onSuccess();\n }\n\n const callback = onSuccess || function () {};\n const head = document.getElementsByTagName('head')[0];\n const link = document.createElement('link');\n\n link.rel = 'stylesheet';\n link.type = 'text/css';\n link.href = href;\n\n let done = false;\n\n link.onreadystatechange = link.onload = function() {\n if ( !done && (!this.readyState ||\n this.readyState === \"loaded\" || this.readyState === \"complete\") ) {\n done = true;\n callback();\n\n // Handle memory leak in IE\n link.onload = link.onreadystatechange = null;\n }\n };\n\n link.onerror = function () {\n loadedStylesheets.splice(loadedStylesheets.indexOf(href), 1);\n onError();\n };\n\n loadedStylesheets.push(href);\n head.appendChild(link);\n}\n\nexport default (path) => {\n return new Promise((resolve, reject) => loadStylesheet(path, resolve, reject));\n}","/* eslint-disable */\nimport utils from 'utils/utils';\n\nimport audio from 'icons/audio.svg';\nimport audioMuted from 'icons/audio-muted.svg';\nimport audioHalf from 'icons/audio-half.svg';\nimport captions from 'icons/captions.svg';\nimport chevronRight from 'icons/chevron-right.svg';\nimport fullscreenOff from 'icons/fullscreen-off.svg';\nimport fullscreenOn from 'icons/fullscreen-on.svg';\nimport pause from 'icons/pause.svg';\nimport play from 'icons/play.svg';\nimport playlist from 'icons/playlist.svg';\nimport settings from 'icons/settings.svg';\nimport share from 'icons/share.svg';\nimport info from 'icons/info.svg';\n\nimport avButton from 'icons/av-button.svg';\nimport defs from 'icons/defs.svg';\n\nconst iconsMap = {\n '.jw-svg-icon-play': play,\n '.jw-svg-icon-pause': pause,\n '.jw-skip-icon .jw-svg-icon-next': chevronRight,\n '.jw-svg-icon-settings': settings,\n '.jw-svg-icon-sharing': share,\n\n '.jw-svg-icon-cc-on': captions,\n '.jw-svg-icon-cc-off': captions,\n\n '.jw-svg-icon-volume-0': audioMuted,\n '.jw-svg-icon-volume-50': audioHalf,\n '.jw-svg-icon-volume-100': audio,\n\n '.jw-svg-icon-fullscreen-on': fullscreenOn,\n '.jw-svg-icon-fullscreen-off': fullscreenOff,\n\n 'info': info,\n 'avButton': avButton\n};\n\nlet defsLoaded = false;\n\nconst loadIcons = function(container) {\n utils.each(iconsMap, (customIcon, selector) => {\n const icons = Array.prototype.slice.call(container.querySelectorAll(selector));\n\n if (icons.length > 0) {\n utils.each(icons, icon => {\n if (icon) {\n const svpIcon = utils.createNode(customIcon);\n svpIcon.setAttribute('class', icon.getAttribute('class'));\n icon.parentNode.replaceChild(svpIcon, icon);\n }\n });\n }\n });\n};\n\nconst loadDefs = function (svpPlayer) {\n if(defsLoaded === false) {\n defsLoaded = true;\n\n svpPlayer.once('ready', () => {\n const container = svpPlayer.getContainer();\n\n if(container) {\n container.appendChild(utils.createNode(defs));\n }\n });\n }\n};\n\nconst getIcon = function (name) {\n return iconsMap[name];\n};\n\nexport { getIcon, loadDefs }\n\nexport default (svpPlayer) => {\n const jwPlayer = svpPlayer.player;\n\n jwPlayer.once('playlist', () => loadIcons(svpPlayer.getContainer()));\n}\n","const submenuHandler = (container) => {\n container.querySelector('.jw-controlbar .jw-button-container').addEventListener('click', (event) => {\n const { target } = event;\n\n // eslint-disable-next-line no-console\n if (target.classList.contains('jw-settings-submenu-button')\n || target.classList.contains('jw-settings-sharing')) {\n const submenu = container.querySelector('.jw-settings-menu');\n\n // eslint-disable-next-line max-len\n const right = Math.round(\n (container.offsetWidth - (target.offsetLeft + target.offsetWidth / 2)) - submenu.offsetWidth / 2\n );\n\n submenu.style.right = `${right}px`;\n }\n });\n};\n\nexport default (svpPlayer) => {\n svpPlayer.on('ready', () => submenuHandler(svpPlayer.getContainer()));\n};\n","/**\n * Audio video switching button\n *\n */\nconst copyToClipboard = data => {\n const el = document.createElement('textarea');\n el.value = data;\n el.setAttribute('readonly', '');\n el.style.position = 'absolute';\n el.style.left = '-9999px';\n document.body.appendChild(el);\n el.focus();\n el.select();\n\n try {\n document.execCommand('copy');\n } catch (err) {\n console.log('Unable to copy');\n }\n\n document.body.removeChild(el);\n};\n\n\nexport {\n copyToClipboard\n};\n","import { getConfig } from '../config/sharing';\n\nconst FACEBOOK_SHARE_URL = 'http://www.facebook.com/sharer/sharer.php?u=';\nconst TWITTER_SHARE_URL = 'https://twitter.com/intent/tweet?url=';\n\n/**\n * Check if link uses JW MEDIAID replacement\n * @param link\n * @return {*|boolean}\n */\nconst hasMediaId = link => link && link.indexOf('MEDIAID') > -1;\n\n/**\n * Create sharing url to services like twitter or facebook\n *\n * @param root\n * @param link\n * @return {string}\n */\nconst getSharingLink = (root, link = window.location.href) => `${root}${encodeURIComponent(link)}`;\n\n/**\n * Update node element only if exists and value is correctly set\n * @param el\n * @param value\n */\nconst updateElement = (el, value) => {\n if (el && el.previousSibling && value) {\n el.previousSibling.innerText = value;\n }\n};\n\n/**\n * Replace JW Sharing button event listener\n *\n * @param sourceEl\n * @param link\n */\nconst replaceElement = (sourceEl, link) => {\n if (sourceEl) {\n const newEl = sourceEl.cloneNode(true);\n sourceEl.parentNode.replaceChild(newEl, sourceEl);\n\n newEl.addEventListener('click', () => {\n window.open(link, '_blank');\n }, true);\n }\n};\n\n/**\n * Update JW sharing box to work with our playnext\n *\n * @param container\n * @param stream\n * @param options\n */\nconst updateSharingBox = (container, stream, options) => {\n const { link, code } = getConfig({\n stream,\n options\n }) || { };\n\n // mediaid is supported natively so we do not touch anything when it's passed\n if (code && hasMediaId(code) === false) {\n updateElement(\n container.querySelector('.jw-tooltip-sharing-Embed'),\n code\n );\n }\n\n // link can be undefined\n if (link && hasMediaId(link) === false) {\n updateElement(\n container.querySelector('.jw-tooltip-sharing-Link'),\n link\n );\n\n // this is tricky way to replace JW sharing buttons\n // facebook and twitter are replaced with custom sharing elements\n // this allows dynamic configuration via function\n replaceElement(\n container.querySelector('.jw-sharing-link[aria-label=facebook]'),\n getSharingLink(FACEBOOK_SHARE_URL, link)\n );\n replaceElement(\n container.querySelector('.jw-sharing-link[aria-label=twitter]'),\n getSharingLink(TWITTER_SHARE_URL, link)\n );\n }\n};\n\nexport default svpPlayer => {\n svpPlayer.on('initialPlay', () => updateSharingBox(\n svpPlayer.getContainer(),\n svpPlayer.getStream(),\n svpPlayer.config.get('sharing')\n ));\n};\n","import utils from 'utils/utils';\nimport { APPNEXUS_PROVIDER_ID } from 'player/services/api';\n\nconst APPNEXUS_CLASS_NAME = 'svp-appnxs';\nconst SVP_FLAG_STOPPED = 'svp-flag-stopped';\n\nconst handleAppnexusClass = (container, vendor) => {\n // handle ads only playback\n // class name is scrambled to avoid adblockers\n if (vendor === APPNEXUS_PROVIDER_ID) {\n utils.addClass(container, APPNEXUS_CLASS_NAME);\n } else {\n utils.removeClass(container, APPNEXUS_CLASS_NAME);\n }\n};\n\nexport {\n APPNEXUS_CLASS_NAME,\n SVP_FLAG_STOPPED,\n handleAppnexusClass\n};\n\nexport default function (svpPlayerModel) {\n svpPlayerModel.on('playlistItem', () => {\n const container = svpPlayerModel.getContainer();\n\n handleAppnexusClass(\n container,\n svpPlayerModel.getStream().getVendor()\n );\n\n container.classList.remove(SVP_FLAG_STOPPED);\n });\n\n svpPlayerModel.on('complete', (reason) => {\n const container = svpPlayerModel.getContainer();\n\n if (reason === 'stop') {\n container.classList.add(SVP_FLAG_STOPPED);\n }\n });\n}\n","import styleLoader from 'utils/style-loader';\n\nimport loadIcons, { loadDefs, getIcon } from './skin/icons-loader';\nimport settingsMenu from './skin/settings-menu';\nimport configButton from './skin/config-button';\nimport sharingBox from './skin/sharing-box';\nimport fullscreenButton from './skin/fullscreen-button';\n\nimport containerClass from './skin/container-class';\nimport levelsIcon from './skin/levels-icon';\n\nconst loader = (jwConfig, skinLoader = styleLoader) => {\n // // disable multiple loading of JW skin\n if (jwConfig.skin && jwConfig.skin.url) {\n skinLoader(jwConfig.skin.url);\n\n if (jwConfig.skin.name) {\n jwConfig.skin = {\n name: jwConfig.skin.name\n };\n } else {\n delete jwConfig.skin;\n }\n }\n\n return jwConfig;\n};\n\nexport { loader };\n\n/**\n * Load SVP Skin\n *\n * @param svpPlayerModel\n * @param options\n */\nexport default (svpPlayerModel) => {\n loadDefs(svpPlayerModel);\n\n settingsMenu(svpPlayerModel);\n configButton(svpPlayerModel, {\n icon: getIcon('info')\n });\n loadIcons(svpPlayerModel);\n sharingBox(svpPlayerModel);\n fullscreenButton(svpPlayerModel);\n containerClass(svpPlayerModel);\n levelsIcon(svpPlayerModel);\n};\n","import { copyToClipboard } from 'utils/clipboard';\n\nexport default (svpPlayer, { icon }) => {\n let isLoaded = false;\n\n svpPlayer.once('ready', () => {\n const container = svpPlayer.getContainer();\n\n container.addEventListener('contextmenu', () => {\n if (isLoaded === false) {\n const item = container.querySelectorAll('.jw-rightclick-list .jw-rightclick-item')[0];\n item.classList.add('svp-config-link');\n\n const infoNode = document.createElement('span');\n infoNode.innerHTML = icon;\n infoNode.classList.add('jw-icon', 'svp-config-info');\n infoNode.dataset.tip = 'Loaded, click to copy';\n\n item.appendChild(infoNode);\n\n let isPrettierLoaded = false;\n\n infoNode.addEventListener('click', async () => {\n const config = await svpPlayer.config.dump();\n\n infoNode.classList.add('svp-link-tip');\n\n if (isPrettierLoaded === false) {\n setTimeout(() => {\n infoNode.classList.remove('svp-link-tip');\n }, 1000);\n\n isPrettierLoaded = true;\n infoNode.classList.add('svp-config-info--loaded');\n } else {\n infoNode.dataset.tip = 'Copied';\n\n copyToClipboard(config);\n\n setTimeout(() => {\n infoNode.classList.remove('svp-link-tip');\n }, 300);\n }\n }, false);\n\n isLoaded = true;\n }\n }, false);\n });\n};\n","import device from 'utils/device';\n\nexport default (svpPlayer) => {\n svpPlayer.on('playlistItem', (playlistItem = {}) => {\n if (device.isIOS()) {\n const fullscreenButton = svpPlayer.getContainer().querySelector('.jw-icon-fullscreen');\n const display = playlistItem.stereomode === 'monoscopic' ? 'none' : 'inherit';\n\n svpPlayer.on('initialPlay', () => {\n fullscreenButton.style.display = display;\n });\n }\n });\n};\n","const getLevelSettingsIcon = (container) => container.querySelector('.jw-icon-settings');\n\nconst handleLevelSettingsIcon = (data, icon) => {\n if (icon) {\n icon.style.display = '';\n\n // hide settings icon when there is only one level available\n // usually this is a case for iOS or when hls has limited bitrate\n if (data && data.levels && data.levels.length === 1) {\n icon.style.display = 'none';\n }\n }\n};\n\nexport default (svpPlayer) => {\n svpPlayer.on('playlistItem', function () {\n this.listenToOnce(\n svpPlayer.player,\n 'levels',\n (levels) => handleLevelSettingsIcon(levels, getLevelSettingsIcon(svpPlayer.getContainer()))\n );\n }, this);\n};\n","/* globals jwplayer,console */\nimport utils from 'utils/utils';\nimport device from 'utils/device';\nimport logger from 'utils/logger';\nimport Viewport from './viewport';\nimport HomadAdsJw from './ads/homad-jw';\nimport autoplay from './config/autoplay';\nimport appnexus from './ads/appnexus';\nimport preventAdSeeking from './ads/prevent-seeking';\n\nimport youbora from './youbora';\nimport svpSkin, { loader as skinLoader } from './skin';\n\nconst PlayerModel = function (config) {\n /**\n * JW Player instance\n * @type {null}\n */\n this.player = null;\n this.stream = null;\n this.config = config;\n\n this.isInitalized = false;\n\n /**\n * Indicates whenever stream was was stopped\n * @type {boolean}\n */\n this.isStopped = false;\n\n /**\n * Current playlist item\n *\n * @type {null}\n */\n this.playlistItem = null;\n\n /**\n * Current time holder for seek and seeked events\n * Fix for JW getPosition bug\n * @type {null}\n */\n this.currentTime = null;\n\n /**\n * Breakpoints for visuals\n * @type {{xsmall: number, small: number, medium: number, big: number, web: number, webWide: number}}\n */\n this.viewport = new Viewport();\n this.listenTo(this.viewport, 'change', this.onViewportChange, this);\n\n\n /**\n * Indicates if ads are currently playing\n * @type {boolean}\n */\n this.adPlaying = false;\n\n /**\n * Adposition\n *\n * @type {null} preroll|midroll|postroll\n */\n this.adPosition = null;\n};\n\n/**\n * Forward JW Events without any change of them as they fits our needs\n *\n * List of proxied events\n * 'play', 'pause'\n *\n * @param event\n */\nfunction forwardEvent(event) {\n this.listenTo(this.player, event, this.trigger.bind(this, event));\n}\n\n/**\n * Simple proxy for JW Methods\n *\n * @param method\n * @returns {Function}\n */\nfunction bindJwMethod(method) {\n return function () {\n const args = Array.prototype.slice.call(arguments);\n\n if (!this.player) {\n // eslint-disable-next-line no-console\n console.warn(`Method ${method} called before player has been initialised`);\n return null;\n }\n\n return this.player[method].apply(this, args);\n };\n}\n\n/**\n * Proxy methods from JW\n */\nfunction forwardMethods(methods) {\n const forwardedMethods = {};\n\n utils.each(methods, function (method) {\n forwardedMethods[method] = bindJwMethod.call(this, method);\n }, this);\n\n return forwardedMethods;\n}\n\nfunction getAdPosition(slotId) {\n const slotKeys = { pre: 'preroll', mid: 'midroll', post: 'postroll' };\n\n return slotKeys[slotId];\n}\n\n/**\n * Parse adresponse for each adslot\n *\n * @param xml\n */\nfunction parseAdData(data) {\n const { sequence } = data;\n const xml = data && data.response;\n\n let source = 'WRAPPER';\n let adSelector = 'Ad';\n let adData = null;\n\n if (xml) {\n // only when additional data is given we set source to appnexus\n if (xml.URL === data.tag) {\n source = 'INLINE';\n adSelector = `Ad[sequence=\"${sequence}\"]`;\n }\n\n adData = Array.prototype.slice.call(xml.querySelectorAll(adSelector));\n // get first element if available\n adData = adData && adData[0] ? adData[0] : null;\n }\n\n return {\n sequence: sequence,\n count: data.podcount,\n raw: adData,\n source: source,\n meta: data\n };\n}\n\n/**\n * Initialize playback end method\n * Clear after each completion of stream or playbackEnd reached\n *\n * @param playbackEnd\n */\nfunction onPlaybackEndAvailable(playbackEnd) {\n const onTime = (position) => {\n if (position > playbackEnd) { //\n this.trigger('playbackEnd', Math.round(position));\n }\n };\n\n this.on('time', onTime);\n\n this.once('playbackEnd complete', function() {\n this.off('time', onTime);\n });\n}\n\n/**\n * Extended ready event with info about device autoplay ability\n * @param data\n */\nfunction onReady(options, eventData) {\n this.trigger('ready', utils.extend(options, eventData));\n}\n\nPlayerModel.prototype = {\n initialize() {\n this.player = jwplayer(this.config.get('node'));\n this.trigger('initialize');\n },\n\n setup() {\n this.initialize();\n\n // player could not be setup\n if (!this.player.setup) {\n // eslint-disable-next-line no-console\n console.error(`SVP Player initialization error. DOM ${this.config.get('node')} not found`);\n return;\n }\n\n this.getConfig().then((config) => {\n // speedup lookup\n const { player } = this;\n\n player.setup(config);\n\n svpSkin(this);\n preventAdSeeking(this);\n logger('JW').log('config', config);\n\n // forward native JW events without changing their behaviour\n utils.each([\n 'seek', 'displayClick', 'captionsChanged', 'adPause', 'adPlay', 'autostartNotAllowed'\n ], forwardEvent, this);\n\n this.listenTo(player, 'error setupError', this.onError, this);\n this.listenTo(player, 'playlistItem', this.onPlaylistItemLoad, this);\n\n this.listenTo(player, 'play', this.onPlay, this);\n this.listenTo(player, 'pause', this.onPause, this);\n this.listenTo(player, 'complete', this.onComplete, this);\n this.listenTo(player, 'ready', onReady.bind(this, {\n canAutoplay: autoplay.canAutoplay(config)\n }));\n\n this.listenTo(player, 'time', this.onTime, this);\n this.listenTo(player, 'resize', this.onPlayerResize, this);\n this.listenTo(player, 'viewable', this.onViewable, this);\n this.listenTo(player, 'autostartNotAllowed', this.onAutostartNotAllowed, this);\n\n this.listenTo(player, 'meta', this.onMeta, this);\n this.listenTo(player, 'metadataCueParsed', this.onMetadataCueParsed, this);\n\n this.listenTo(player, 'seek', function(data) {\n this.currentTime = data.offset;\n }, this);\n this.listenTo(player, 'seeked', function() {\n this.trigger('seeked', this.currentTime);\n // clearing has to occur after seekend event as getCurrentTime needs it\n this.currentTime = null;\n }, this);\n\n // 'restart' stream only when flash has been blocked\n this.once('flashBlocked', function() {\n this.listenTo(player, 'providerChanged', this.play, this);\n }, this);\n\n this.once('initialPlay', function () {\n this.listenToOnce(player, 'captionsList', function () {\n this.trigger('captionsList', this.getCaptionsList());\n }, this);\n }, this);\n\n this.on('initialPlay', () => {\n this.isStopped = false;\n });\n\n this.listenTo(player, 'adImpression', function (data) {\n if (data && data.adposition) {\n this.adPosition = getAdPosition(data.adposition);\n }\n\n if (this.adPlaying === false) {\n this.trigger('adSlotStart', {\n position: this.adPosition,\n response: data && data.response,\n meta: data\n });\n\n this.adPlaying = true;\n }\n\n this.trigger('adStarted');\n\n if (data && data.response) {\n this.trigger('adData', parseAdData(data));\n }\n }, this);\n\n this.listenTo(player, 'adError', function (data) {\n if (data && data.adposition) {\n this.adPosition = getAdPosition(data.adposition);\n }\n }, this);\n\n this.listenTo(player, 'adTime', function (data) {\n if (data.position && data.duration) {\n this.trigger('adProgress', data.position, data.duration);\n }\n }, this);\n\n this.on('adSlotStart', function () {\n this.listenToOnce(player, 'adBreakEnd', function () {\n if (this.adPlaying === true) {\n this.trigger('adSlotComplete', {\n position: this.adPosition\n });\n\n this.adPlaying = false;\n }\n }, this);\n }, this);\n\n this.listenTo(player, 'adSkipped', function () {\n this.trigger('adSkipped');\n }, this);\n\n this.listenTo(player, 'adComplete', function () {\n this.trigger('adFinished');\n }, this);\n\n this.isInitalized = true;\n\n logger('JW').log((log) => {\n this.listenTo(player, 'all', function (event) {\n if (['bufferChange'].indexOf(event) < 0) {\n log(event, Array.prototype.slice.call(arguments, 1));\n }\n });\n });\n\n this.trigger('setup');\n });\n },\n\n playNext(stream) {\n // clear time\n this.stream = stream;\n\n this.complete('playNext');\n\n if (!this.isInitalized) {\n this.setup();\n } else {\n this.getConfig(stream).then((config) => {\n this.player.load(config.playlist);\n\n // stream is not available yet, display countdown\n if (stream.getTimeToStart() < 0) {\n // enable autoplay if stream is not available\n this.player.play(true);\n } else {\n this.player.stop();\n }\n });\n }\n },\n\n async togglePlayback(type) {\n const streamType = type === 'audio' ? 'audio' : 'hls';\n const streamUrl = await this.config.getStreamUrl(streamType);\n const streamPoster = this.config.getPoster(this.stream);\n\n this.player.load([{\n id: this.stream.getId(),\n image: streamPoster,\n // image: '',\n sources: [{\n file: streamUrl,\n // force mp4 stream type for ads\n type: 'hls',\n default: true\n }],\n starttime: this.getCurrentTime(),\n playbackType: type,\n tracks: []\n }]);\n\n this.player.play(true);\n },\n\n /**\n * Immediately completes currently playing stream\n */\n complete() {\n this.adPlaying = false;\n\n // trigger complete event only when stream is not finished to prevent double 'complete' event triggering\n if (this.getCurrentTime() > 0 && this.getCurrentTime() !== this.getDuration()) {\n this.trigger('complete');\n }\n },\n\n /**\n * Get DOM Node where player is inserted\n * @returns {*}\n */\n getContainer() {\n return this.player.getContainer();\n },\n\n /**\n * Get playback volume\n * @returns {*}\n */\n getVolume() {\n return this.player.getVolume();\n },\n\n /**\n * Set playback volume\n * @param volume\n */\n setVolume(volume) {\n this.player.setVolume(volume);\n },\n\n /**\n * Get mute flag\n * @return {*|boolean}\n */\n getMute() {\n return this.player.getMute();\n },\n\n /**\n * Set mute param in player\n * @param value\n */\n setMute(value) {\n this.player.setMute(value);\n },\n\n /**\n * Seek\n */\n seek(time) {\n // flash bug - player is not seeking when stream hasn't started playing\n if (this.getCurrentTime() === 0) {\n // start stream only it's not playing\n // move this to play method?\n if (this.player.getState() !== 'playing') {\n this.play();\n }\n\n this.once('assetPlay', this.player.seek.bind(this.player, time));\n } else {\n this.player.seek(time);\n }\n },\n\n /**\n * Get player config. Method is asynchronous due to loading info from api\n *\n * @param stream\n */\n getConfig(stream) {\n const nextStream = stream || this.getStream();\n\n return this.config\n .getJwConfig(nextStream)\n .then(skinLoader)\n .catch((reason) => {\n this.trigger('error', reason);\n });\n },\n\n /**\n * Set stream data\n *\n * @param stream\n */\n setStream(stream) {\n this.stream = stream;\n },\n\n /**\n * Get current stream loaded with player\n *\n * @returns {null|Stream|*}\n */\n getStream() {\n return this.stream;\n },\n\n /**\n * Check is ad is playing or not\n */\n isAdPlaying() {\n return this.adPlaying;\n },\n\n /**\n * Load given stream\n * Perform all required checks before stream playback\n *\n * @returns {Promise}\n */\n loadStream() {\n return new Promise((resolve) => {\n // for lazy loaded player\n if (!this.isInitalized) {\n this.setup();\n this.player.on('ready', resolve);\n } else {\n resolve();\n }\n });\n },\n\n /**\n * Play stream\n */\n play() {\n // ensure stream is loaded properly\n this.loadStream()\n .then(this.player.play.bind(this.player));\n },\n\n /**\n * Pause stream\n * @param force state\n */\n pause(force) {\n this.player.pause(force);\n },\n\n /**\n * Stop playback\n */\n async stop() {\n // playlistitemId is set when first frame is shown\n // stop shouldn't change stream when it was not played\n if (this.isStopped === false) {\n this.trigger('complete', 'stop');\n\n const { playlist } = await this.getConfig();\n\n this.player.load(playlist);\n this.player.stop();\n\n // reset playlist item to allow replaying this stream\n this.playlistItem = null;\n\n this.isStopped = true;\n }\n },\n\n /**\n * Destroy the player instance, reset DOM, clean up listeners\n */\n remove() {\n // cleanup any bind listener\n this.off();\n\n if (this.player) {\n this.pause(true);\n\n this.player.off();\n this.player.remove();\n\n this.trigger('remove');\n }\n },\n\n /**\n * Get stream duration\n *\n * @returns {*}\n */\n getDuration() {\n const duration = this.player.getDuration();\n\n if (duration < 0) {\n return -duration;\n }\n\n return duration;\n },\n\n /**\n * Get current playback time\n *\n * @returns {*}\n */\n getCurrentTime() {\n let { currentTime } = this;\n\n if (currentTime) {\n return currentTime;\n }\n\n // player not initialized (error/geoblock)\n // return 0\n if (!this.player) {\n return 0;\n }\n\n currentTime = this.player.getPosition();\n\n if (currentTime < 0) {\n return (this.getDuration() + currentTime);\n }\n\n return this.player.getPosition();\n },\n\n getState() {\n if (this.isAdPlaying()) {\n return 'adPlaying';\n }\n\n return this.player.getState();\n },\n\n // eslint-disable-next-line consistent-return\n getAdBlock() {\n if (this.player) {\n return this.player.getAdBlock();\n }\n },\n\n /**\n * Get poster for current stream\n * Poster may be changed in config\n *\n * @returns {*}\n */\n getPoster(stream, container) {\n return this.config.getPoster(stream, container);\n },\n\n /**\n *\n * Get playback mode\n *\n * @returns {*}\n */\n getProvider() {\n const provider = this.player.getProvider();\n\n if (provider && provider.name === 'flash') {\n return 'flash';\n }\n\n return 'html5';\n },\n\n /**\n * Get list of captions extended by data from api\n *\n * @returns {*}\n */\n getCaptionsList() {\n const playerCaptions = this.player.getCaptionsList();\n const captions = this.getStream().getCaptions();\n\n // merge player captions data with result from api\n utils.each(playerCaptions, (caption) => {\n utils.each(captions, (item) => {\n if (caption.id === item.url) {\n caption.language = item.language;\n caption.default = item.default;\n }\n });\n });\n\n return playerCaptions;\n },\n\n /**\n * Set current captions\n * @param index (number|string) - string is language key, number is index in array\n */\n setCurrentCaptions(index) {\n let newIndex = index || 0;\n\n if (!utils.isNumber(index)) {\n utils.each(this.getCaptionsList(), (caption, captionsIndex) => {\n if (caption && caption.language === index) {\n newIndex = captionsIndex;\n }\n });\n\n // fallback to off in case index is not found in captions array\n if (!utils.isNumber(newIndex)) {\n newIndex = 0;\n }\n }\n\n // set captions in player\n this.player.setCurrentCaptions(newIndex);\n },\n\n /**\n * Handle all errors from player\n */\n onError(data) {\n const { code } = data;\n const message = data.message ? data.message.toString() : '';\n\n /**\n * Some errors do not prevent playback to play\n * thus they should be omitted\n */\n const skipErrors = [\n 'Captions failed to load', // could not load\n 'Casting failed to load' // chrome disabled\n ];\n\n // skip errors\n if (skipErrors.indexOf(message) > -1) {\n return;\n }\n\n if (code === 210002) {\n // Flash plugin failed to load\n // click to play\n this.pause();\n this.trigger('flashBlocked');\n return;\n }\n\n this.trigger('error', {\n message,\n code\n });\n },\n\n /**\n * Event triggered before first stream play\n * Useful for statistics\n */\n onPlaylistItemLoad(playlistItem) {\n if (!this.playlistItem || this.playlistItem.file !== playlistItem.item.file) {\n // cleanup any previous beforePlay event (playnext after countdown or error)\n this.stopListening(this.player, 'beforePlay');\n\n if (!this.playlistItem || this.playlistItem.id !== playlistItem.item.id) {\n // trigger this event every time new playlist item is loaded\n this.listenToOnce(this.player, 'beforePlay', function() {\n if (this.stream.getTimeToStart() < 0) {\n this.trigger('initialPlay');\n }\n }, this);\n\n // ads should not if stream has future start time\n // attach event only for secure streams\n if (this.stream.isSecure()) {\n // reload playlist only if token expired\n // play method do this out of the box\n this.listenToOnce(this.player, 'displayClick', function() {\n if (!this.config.hasValidToken() && this.player.getState() !== 'playing') {\n this.play();\n }\n }, this);\n }\n\n this.trigger('playlistItem', playlistItem.item);\n\n // clear ad playing flag for current content\n // important when changing stream while adslot is playing\n this.adPlaying = false;\n\n this.listenToOnce(this.player, 'firstFrame', () => {\n this.playlistItemId = playlistItem.item.id;\n this.onFirstFrameLoad(this.playlistItemId);\n });\n }\n\n this.playlistItem = playlistItem.item;\n\n // for streams which end time is not equal to video length\n const playbackEndTime = this.stream.getPlaybackTime('end');\n\n // attach playback listener\n if (playbackEndTime > 0) {\n onPlaybackEndAvailable.call(this, playbackEndTime);\n }\n\n // load youbora only for non-mock streams\n if (this.stream.get('type') !== 'mock') {\n youbora.initialize(this.player, {\n accountCode: 'schibsted',\n enableAnalytics: true\n });\n }\n }\n },\n\n /**\n * Time\n *\n * @param data.position - current playback time\n * @param data.duration - current stream duration\n */\n onTime(data) {\n if (data.position < 0) {\n this.trigger('time', -(data.duration - data.position), -(data.duration));\n } else {\n this.trigger('time', data.position, data.duration);\n }\n },\n\n /**\n * Triggered on first frame of content playback - after ads\n */\n onFirstFrameLoad(playlistItemId) {\n // first play of stream\n const mediaType = this.stream.get('mediaType');\n const startTime = this.stream.getPlaybackTime('begin') || 0;\n\n if (device.isSamsungInternet() && mediaType === 'video') {\n utils.removeClass(this.getContainer(), 'jw-flag-media-audio');\n }\n\n this.once('time', () => {\n // check if currently set video id is the same as played one\n // it can happen when playnext is called before assetPlay\n if (playlistItemId === this.stream.getId()) {\n this.trigger('assetPlay', startTime);\n }\n });\n },\n\n /**\n * Handler for checking player size\n */\n onPlayerResize(data) {\n this.viewport.update(data.width);\n },\n\n onViewable(eventData) {\n const { viewable } = eventData;\n\n this.trigger('viewable', {\n viewable\n });\n },\n\n onAutostartNotAllowed(data) {\n const { reason } = data;\n\n if (reason === 'autoplayDisabled') {\n this.player.setMute(false);\n }\n },\n\n onViewportChange(currentViewport, previousViewport) {\n // remove current class from container if it exist\n if (previousViewport.label) {\n utils.removeClass(this.getContainer(), `svp-viewport-${previousViewport.label}`);\n }\n\n utils.addClass(this.getContainer(), `svp-viewport-${currentViewport.label}`);\n\n this.trigger('viewport', currentViewport, previousViewport);\n },\n\n /**\n * Schedule midroll to\n * @param slotDuration\n * @param startTime\n * @returns {Promise}\n */\n async createMidroll(slotDuration, startTime) {\n const midroll = appnexus.createMidroll({\n tag: await this.config.getLiveMidrollTag(slotDuration),\n startTime\n });\n\n const onTimeChange = () => midroll.setTime(this.player.getCurrentTime());\n\n midroll.onReady(() => {\n this.on('time', onTimeChange);\n // cleanup when stream has changed or finished\n this.on('complete', () => this.off('time', onTimeChange));\n });\n\n midroll.onEnter(function(adTag) {\n const position = -(Math.abs(this.player.getPosition()));\n this.off('time', onTimeChange);\n\n this.once('adSlotComplete', () => {\n this.listenToOnce(this.player, 'providerFirstFrame', () => {\n this.player.seek(position);\n });\n });\n\n this.player.playAd(adTag);\n }.bind(this));\n },\n\n /**\n * Handling midrolls with scte35 tags in HLS live\n * @param data\n */\n onMetadataCueParsed(data) {\n if (!this.stream.isLive()) {\n return;\n }\n\n const { tag, content, start } = data.metadata || {};\n\n if (tag === 'EXT-X-CUE-OUT') {\n this.createMidroll(parseInt(content, 10), start);\n } else if (tag === 'EXT-X-CUE-IN') {\n this.player.skipAd();\n }\n },\n\n /**\n * Handling midrolls in RTMP live streams\n * @param data\n */\n onMeta(data) {\n if (!this.stream.isLive()) {\n return;\n }\n const params = data.metadata && data.metadata.TXXX && data.metadata.TXXX.name;\n\n if (params) {\n // place_categoryId_slotDuration_slotFetchTime\n if (params.indexOf('fetch') > -1) {\n const slotDuration = parseInt(params.split('_')[2], 10);\n\n if (slotDuration) {\n this.createMidroll(slotDuration, 'NOW');\n }\n } else if (params.indexOf('cancel') > -1) {\n this.player.skipAd();\n }\n }\n },\n\n onPlay(data) {\n this.trigger('play', {\n playReason: data.playReason\n });\n },\n onPause(data) {\n utils.removeClass(this.getContainer(), 'jw-state-buffering');\n\n this.trigger('pause', data);\n },\n\n /**\n * Correct event flow for end of streaming\n */\n onComplete() {\n // wait until postroll will finish\n this.trigger('complete');\n }\n};\n\n/**\n * Extend player with events\n * Add methods from JW which are used without any rewriting\n */\nutils.extend(PlayerModel.prototype, utils.Events, forwardMethods.call(PlayerModel.prototype, [\n 'getCurrentCaptions', 'setCaptionsStyles'\n]));\n\n/* jshint newcap: false */\nexport default HomadAdsJw(PlayerModel);\n","import BackboneEvents from './backbone.events';\n\n/**\n * Simple syntactic sugar for easier extending objects with events\n */\nclass Eventable {}\nObject.assign(Eventable.prototype, BackboneEvents);\n\nexport default Eventable;","function copyProperties(target, source) {\n for (let key of Reflect.ownKeys(source)) {\n if (key !== \"constructor\" && key !== \"prototype\" && key !== \"name\") {\n let desc = Object.getOwnPropertyDescriptor(source, key);\n Object.defineProperty(target, key, desc);\n }\n }\n}\n\nfunction mix(...mixins) {\n class Mix {}\n\n // Programmatically add all the methods and accessors\n // of the mixins to class Mix.\n for (let mixin of mixins) {\n copyProperties(Mix, mixin);\n copyProperties(Mix.prototype, mixin.prototype);\n }\n\n return Mix;\n}\n\nexport {\n mix,\n copyProperties\n};\n","import Eventable from 'utils/eventable';\nimport { copyProperties } from 'utils/mixin';\n\nclass PluginModel extends Eventable {\n constructor(options) {\n super();\n\n this.player = null;\n this.el = null;\n\n if (typeof this.initialize === 'function') {\n this.initialize(options);\n }\n }\n\n // eslint-disable-next-line\n getName() {\n throw new Error('getName() method has to be implemented');\n }\n\n // eslint-disable-next-line\n initialize() {}\n // eslint-disable-next-line\n setup() {}\n // eslint-disable-next-line\n destroy() {}\n\n setPlayer(player) {\n this.player = player;\n this.setup(player);\n }\n}\n\nconst createClass = (plugin) => {\n class CustomPluginModel extends PluginModel {}\n copyProperties(CustomPluginModel.prototype, plugin);\n return CustomPluginModel;\n};\n\nexport {\n createClass\n};\n\nexport default PluginModel;\n","/* global console */\nimport scriptLoader from 'utils/script-loader';\nimport logger from 'utils/logger';\nimport { createClass as createPluginClass } from 'player/plugins/model';\n\nconst plugins = {};\n\nconst Plugins = {\n register(plugin) {\n const name = plugin.getName();\n\n // register the same plugin only once\n if (!plugins[name]) {\n plugins[name] = createPluginClass(plugin);\n }\n },\n\n load(options) {\n // no plugins provided, complete immediately\n if (!options) {\n // timeout for proper event listener fire\n return Promise.resolve();\n }\n\n const scripts = Object.keys(options);\n\n const loadPlugin = async pluginSrc => {\n try {\n await scriptLoader(pluginSrc);\n } catch (error) {\n // eslint-disable-next-line no-console\n logger().error(`An error occur while loading ${pluginSrc}`);\n }\n\n return pluginSrc;\n };\n\n return Promise.all(scripts.map(loadPlugin));\n },\n\n get(name) {\n return plugins[name];\n }\n};\n\nexport default Plugins;\n","/* global apntag */\nimport config from 'player/config';\nimport utils from 'utils/utils';\nimport logger from 'utils/logger';\n\nexport default utils.extend({\n isLoaded: null,\n\n load() {\n if (window.apntag) {\n this.isLoaded = true;\n return Promise.resolve();\n } if (this.isLoaded === false) {\n // after loading fail we do not retry\n return Promise.reject({\n firstLoad: false\n });\n }\n\n // load this only once\n return utils.loadScript(config.ads.appnexus.ast).then(() => {\n // check if object really exist\n this.isLoaded = typeof window.apntag === 'object';\n }).catch((error) => {\n // appnexus can be blocked by adblock\n this.isLoaded = false;\n\n return Promise.reject({\n firstLoad: true,\n error\n });\n });\n },\n\n defineTag(tagId, tagOptions) {\n return this.load().then(() => {\n const tagConfig = utils.merge({\n targetId: tagId\n }, tagOptions);\n\n apntag.debug = config.ads.appnexus.debug;\n // apntag tag overriden by reference\n apntag.defineTag(utils.extend({}, tagConfig));\n\n apntag.loadTags([tagId]);\n apntag.onEvent('adLoaded', tagId, this.trigger.bind(this, 'adLoaded', tagId));\n }).catch((error) => {\n if (error.firstLoad) {\n logger('SVP').log('Could not load AST tag');\n }\n });\n },\n\n showTag(tagId) {\n if (this.isLoaded) {\n apntag.showTag(tagId);\n }\n },\n\n refreshTag(tagId) {\n if (this.isLoaded) {\n apntag.refresh([tagId]);\n }\n },\n\n resizeTag(tagId, dimmensions) {\n const size = [\n parseInt(dimmensions[0], 10),\n parseInt(dimmensions[1], 10)\n ];\n\n if (this.isLoaded) {\n apntag.resizeAd(tagId, size);\n }\n },\n\n off(targetId) {\n if (this.isLoaded) {\n apntag.offEvent('adLoaded', targetId);\n }\n }\n}, utils.Events);\n","import utils from 'utils/utils';\nimport closeIcon from 'icons/close.svg';\nimport appnexus from 'player/playback/ads/appnexus-ast';\nimport pauseTemplate from './pause.html';\nimport PluginModel from './model';\n\nclass PausePlugin extends PluginModel {\n constructor(options) {\n super(options);\n\n this.maxDisplays = -1;\n this.displayCounter = 0;\n }\n}\n/**\n * Check if ad is loaded\n *\n * @param sourceMethod\n * @returns {Function}\n */\nfunction withAdTag(sourceMethod) {\n // eslint-disable-next-line consistent-return\n return function () {\n if (this.adPlacement) {\n return sourceMethod.apply(this, Array.prototype.slice.call(arguments));\n }\n };\n}\n\nfunction withCounter(sourceMethod) {\n // eslint-disable-next-line consistent-return\n return function () {\n if (this.maxDisplays === -1 || this.displayCounter < this.maxDisplays) {\n return sourceMethod.apply(this, Array.prototype.slice.call(arguments));\n }\n };\n}\n\nutils.extend(PausePlugin.prototype, {\n counter: 0,\n getName() {\n return 'PausePlugin';\n },\n\n resizeAd: withAdTag(function (width, height) {\n let size = (width && height) ? [width, height] : null;\n\n if (!size) {\n size = this.player.getContainer().getBoundingClientRect();\n size = [size.width, size.height];\n }\n\n appnexus.resizeTag(this.containerId, size);\n }),\n\n load: withAdTag(function (appnexusAdId) {\n this.listenTo(appnexus, 'adLoaded', function (adId, adData) {\n // different adId\n if (appnexusAdId !== adId) {\n return;\n }\n\n this.resizeAd();\n utils.addClass(this.el, 'svp-pause-view--visible');\n\n this.trigger('adVisible', {\n adId,\n creativeId: adData.creativeId\n });\n\n this.isAdTagLoaded = true;\n }, this);\n\n appnexus.defineTag(\n appnexusAdId,\n this.adPlacement\n ).then(() => {\n appnexus.showTag(appnexusAdId);\n });\n }),\n\n show: withCounter(withAdTag(function (data) {\n const pauseReason = data && data.pauseReason;\n\n // undefined is returned on ie11 win7\n // settingsInteraction is triggered on mobile phones while using quality or share button\n if (pauseReason !== undefined && pauseReason !== 'external' && pauseReason !== 'settingsInteraction') {\n this.displayCounter += 1;\n\n if (this.isAdTagLoaded === true) {\n appnexus.refreshTag(this.containerId);\n } else {\n this.load(this.containerId);\n }\n }\n })),\n\n hide: withAdTag(function () {\n utils.removeClass(this.el, 'svp-pause-view--visible');\n }),\n\n /**\n * Fixing pause event triggered while interacting with scrub bar\n * @param data\n */\n onPause: withCounter(function (data) {\n let timerId = null;\n\n function onSeek() {\n if (timerId) {\n clearTimeout(timerId);\n timerId = null;\n }\n }\n\n timerId = setTimeout(() => {\n // cleanup seek listener when seek wasn't performed\n // eg regular pause button click\n this.stopListening(this.player.model, 'seek', onSeek);\n // display pause ad\n this.show(data);\n }, 50);\n\n // prevent to display pause ad when user seeked stream\n this.listenToOnce(this.player.model, 'seek', onSeek);\n }),\n\n onResumeClick() {\n this.player.play();\n utils.removeClass(this.el, 'svp-pause-view--visible');\n },\n\n setup() {\n PausePlugin.prototype.counter += 1;\n this.containerId = `svpPauseContainer${PausePlugin.prototype.counter}`;\n\n this.listenTo(this.player.model, 'playlistItem', function (item) {\n const { adPlacements } = item;\n\n if (adPlacements && adPlacements.pause) {\n // eslint-disable-next-line max-len\n this.maxDisplays = (typeof adPlacements.pause.maxDisplays === 'undefined') ? -1 : parseInt(adPlacements.pause.maxDisplays, 10);\n\n this.displayCounter = 0;\n this.render(adPlacements.pause);\n }\n }, this);\n\n this.listenTo(this.player.model, 'pause', this.onPause, this);\n this.listenTo(this.player, 'play', this.hide, this);\n },\n\n render(adTagOptions) {\n const appnexusAdContainerId = this.containerId;\n\n this.adPlacement = adTagOptions;\n this.el = utils.createNode(utils.template(pauseTemplate, {\n appnexusAdContainerId: appnexusAdContainerId,\n closeIcon: closeIcon\n }));\n\n const playButton = this.el.querySelector('.jw-icon-playback');\n const closeButton = this.el.querySelector('.svp-pause-close');\n\n if (playButton) {\n playButton.addEventListener('click', this.onResumeClick.bind(this), true);\n }\n\n if (closeButton) {\n closeButton.addEventListener('click', (event) => {\n event.stopPropagation();\n this.hide();\n }, true);\n }\n this.player.getContainer().appendChild(this.el);\n\n this.listenTo(this.player.model.player, 'resize', function (width, height) {\n if (this.player.getState() === 'paused') {\n this.resizeAd(width, height);\n }\n }, this);\n\n this.trigger('render');\n },\n\n destroy() {\n appnexus.off(this.containerId);\n\n this.stopListening(this.player);\n this.stopListening(this.player.model);\n this.stopListening(appnexus);\n\n this.adPlacement = null;\n this.isAdTagLoaded = false;\n\n if (this.el) {\n this.player.getContainer().removeChild(this.el);\n this.el = null;\n }\n }\n\n});\n\nexport default PausePlugin;\n","import utils from 'utils/utils';\nimport PluginModel from './model';\nimport locale from 'player/model/locale';\n\n/**\n * Displays Age Limit labels in player\n *\n * @param options\n * @constructor\n */\nclass AgeLimitPlugin extends PluginModel {\n constructor(options) {\n super(options);\n this.ageLimit = options.ageLimit;\n }\n\n // eslint-disable-next-line\n getName() {\n return 'AgeLimitPlugin';\n }\n\n setup() {\n this.listenToOnce(this.player, 'assetPlay', this.render, this);\n\n this.once('render', this.show, this);\n }\n\n render() {\n // return number when there is no translation available\n const ageLimit = locale.translate(`ageLimit-${this.ageLimit}`, this.ageLimit);\n\n this.el = utils.createNode(`
${ageLimit}
`);\n this.player.getContainer().appendChild(this.el);\n\n this.trigger('render');\n }\n\n destroy() {\n this.stopListening(this.player);\n\n if (this.el) {\n this.player.getContainer().removeChild(this.el);\n this.el = null;\n }\n }\n\n show () {\n if (this.ageLimit !== null) {\n utils.addClass(this.player.getContainer(), 'svp-display-age-limit');\n\n // hide label after 3 seconds\n this.listenToOnce(this.player, 'time', setTimeout.bind(null, this.hide.bind(this), 3000));\n }\n }\n\n hide () {\n utils.removeClass(this.player.getContainer(), 'svp-display-age-limit');\n }\n}\n\nexport default AgeLimitPlugin;\n","import utils from 'utils/utils';\nimport locale from 'player/model/locale';\n\nimport countdownTemplate from './countdown.html';\nimport PluginModel from './model';\n\n/**\n * Format number by adding leading zeros eg 7 -> 07\n *\n * @param numValue\n * @param numLen\n * @returns {string}\n */\nconst leadingZeros = (numValue, numLen) => {\n const length = numLen || 2;\n let num = String(numValue);\n\n while (num.length < length) {\n num = `0${num}`;\n }\n\n return num;\n};\n\n/**\n * Renders countdown clock for streams which are not published yet\n *\n * @param options\n * @constructor\n */\nclass CountdownPlugin extends PluginModel {\n constructor(options) {\n super(options);\n\n /**\n * Start date for stream (flightTime.start)\n * Javascript Date object\n */\n this.start = options.start;\n\n this.liveDOM = null;\n this.countdownDOM = null;\n }\n\n // eslint-disable-next-line\n getName() {\n return 'countdown';\n }\n\n setup() {\n this.listenTo(this.player, 'playlistItem', this.render, this);\n }\n\n /**\n * Cleanup old node\n */\n destroy() {\n this.stopListening(this.player);\n\n if (this.el) {\n this.player.getContainer().removeChild(this.el);\n this.el = null;\n }\n }\n\n render() {\n try {\n this.player.getContainer();\n } catch (error) {\n return;\n }\n\n this.el = utils.createNode(utils.template(countdownTemplate));\n this.player.getContainer().appendChild(this.el);\n\n utils.addClass(this.player.getContainer(), 'svp-countdown-loaded');\n\n // cached live label dom element\n // eslint-disable-next-line prefer-destructuring\n this.liveDOM = this.el.getElementsByClassName('svp-live-label')[0];\n // eslint-disable-next-line prefer-destructuring\n this.countdownDOM = this.el.getElementsByClassName('svp-countdown-live-timer')[0];\n\n // countdown is ready\n this.trigger('ready');\n // start event runs on first change of countdown\n this.once('change', this.trigger.bind(this, 'start'));\n\n // interval has to be initialized on\n this.intervalId = setInterval(this.refresh.bind(this), 1000);\n this.refresh();\n }\n\n refresh() {\n const start = this.getDateData(this.start);\n\n // trigger only if date has changed\n if (this.repaint(start)) {\n this.trigger('change', start);\n }\n }\n\n repaint(date) {\n const string = [];\n const liveDate = this.start;\n\n if (this.isCountdownActive()) {\n string.push(`${leadingZeros(date.min)}:`);\n string.push(`${leadingZeros(date.sec)}s`);\n\n if (this.currentState !== 'timer') {\n this.currentState = 'timer';\n this.liveDOM.innerHTML = locale.translate('Video will start in');\n\n utils.addClass(this.player.getContainer(), 'svp-countdown-active');\n }\n } else if (this.currentState !== 'date') {\n this.currentState = 'date';\n\n string.push(`${liveDate.getDate()} ${locale.getMonthName(liveDate)} `);\n string.push(`${leadingZeros(liveDate.getHours())}:`);\n string.push((leadingZeros(liveDate.getMinutes())));\n\n this.liveDOM.innerHTML = locale.translate('Video will start at');\n }\n\n if (string.length > 0) {\n this.countdownDOM.innerHTML = (string.join(''));\n return true;\n }\n\n return false;\n }\n\n /**\n * End of countdown\n */\n stop() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n\n this.intervalId = null;\n this.el.parentNode.removeChild(this.el);\n this.el = null;\n\n utils.removeClass(this.player.getContainer(), ['svp-countdown-active', 'svp-countdown-loaded']);\n\n this.trigger('end');\n }\n\n getDateData(endDate) {\n let diff = (endDate - Date.parse(new Date())) / 1000;\n\n // end of counting\n if (diff <= 0) {\n diff = 0;\n\n if (this.intervalId) {\n this.stop();\n }\n }\n\n const dateData = {\n years: 0,\n days: 0,\n hours: 0,\n min: 0,\n sec: 0\n };\n\n if (diff >= (365.25 * 86400)) {\n dateData.years = Math.floor(diff / (365.25 * 86400));\n diff -= dateData.years * 365.25 * 86400;\n }\n\n if (diff >= 86400) {\n dateData.days = Math.floor(diff / 86400);\n diff -= dateData.days * 86400;\n }\n\n if (diff >= 3600) {\n dateData.hours = Math.floor(diff / 3600);\n diff -= dateData.hours * 3600;\n }\n\n if (diff >= 60) {\n dateData.min = Math.floor(diff / 60);\n diff -= dateData.min * 60;\n }\n\n dateData.sec = Math.floor(diff);\n\n return dateData;\n }\n\n /**\n * Check whatever countdown or date should be displayed\n * Countdown is active when less than 1 hour reminded to start\n * @returns {boolean}\n */\n isCountdownActive() {\n const now = new Date();\n\n // less than 1 hour\n return (Math.abs(this.start.getTime() - now.getTime())) < 3599999;\n }\n}\n\nexport default CountdownPlugin;\n","\nimport assetService from 'player/services/api/asset';\nimport relatedService from 'player/services/api/related';\nimport Asset from '../asset';\n\n// eslint-disable-next-line\nconst mapResponse = (vendor, assets) => assets.map((asset) => {\n // add vendor to assets\n return new Asset(Object.assign({\n vendor\n }, asset));\n});\n\n/**\n * Get related engine\n *\n * @param useMlEngine\n * @returns {string}\n */\nconst getEngine = (useMlEngine) => (useMlEngine === true ? 'related-ml' : 'related');\n\nconst fetchByIds = async ({ vendor, ids }) => {\n const assets = await assetService.getByIds({\n vendor,\n ids\n });\n\n return mapResponse(vendor, assets);\n};\n\nconst fetchFromRelatedEngine = async({ vendor, assetId, useMlEngine }) => {\n let assets = await relatedService.getList({\n engine: getEngine(useMlEngine),\n vendor,\n assetId\n });\n\n // fetch from old recommended\n if (useMlEngine === true && assets.length === 0) {\n assets = await relatedService.getList({\n engine: getEngine(false),\n vendor,\n assetId\n });\n }\n\n return mapResponse(vendor, assets);\n};\n\n\nexport default {\n fetchByIds,\n fetchFromRelatedEngine\n};\n","/* eslint-disable no-underscore-dangle */\nimport utils from 'utils/utils';\nimport nextAsset from './next-asset';\nimport recommendedList from './recommended/list';\n\nclass Recommended {\n constructor({ asset, ml }) {\n this.asset = asset;\n this.useMlEngine = (ml !== false);\n }\n\n /**\n * Fetch next asset\n *\n * @returns {Promise}\n */\n getNextAsset(options = {}) {\n const { asset, useMlEngine } = this;\n\n // next asset can be provided in player configuration\n if (options.asset) {\n return nextAsset.fetchNextById({\n // set vendor is specified or use main asset as default\n vendor: options.asset.vendor || asset.getVendor(),\n // asset can be object or number with asset id\n assetId: options.asset.id || options.asset\n });\n }\n\n return nextAsset.fetchNext(this.asset, {\n useMlEngine\n });\n }\n\n\n /**\n * Fetch recommended asset list\n * Fetch assets by ids when items provided as a param\n *\n * @param items optional array of ids\n * @returns {*}\n */\n async getItems(items) {\n const { useMlEngine } = this;\n\n const vendor = this.asset.getVendor();\n const assetId = this.asset.get('id');\n\n if (!utils.isArray(items) || items.length === 0) {\n return recommendedList.fetchFromRelatedEngine({\n vendor,\n assetId,\n useMlEngine\n });\n }\n\n return recommendedList.fetchByIds({\n ids: items,\n vendor\n });\n }\n}\n\nexport default Recommended;\n","import utils from 'utils/utils';\nimport image from 'utils/image';\nimport Recommended from 'player/model/recommended';\nimport closeIcon from 'icons/close.svg';\nimport nextIcon from 'icons/chevron-right.svg';\nimport recommendedTemplate from './recommended/recommended.html';\nimport nextAssetTemplate from './recommended/next-asset.html';\nimport gridTemplate from './recommended/grid.html';\nimport PluginModel from './model';\n\n/**\n * Play next asset from the list\n *\n * @param assetId - SVP Asset id\n * @param source - source of playnext (auto - when autoplay next, single, grid)\n */\nfunction playNext(assetId, source) {\n const clear = () => {\n utils.removeClass(this.el, ['is-grid-visible', 'is-next-visible', 'is-counting', 'is-next-closing']);\n };\n\n this.stopListening(this.player, 'complete');\n\n // autoplay of asset can be turned off from config\n if (this.settings.autoplay !== false) {\n this.player.playNext(assetId);\n }\n\n // nextAsset case, triggered by autoplay or user\n if (source === 'single' || source === 'auto') {\n this.trigger('nextAssetPlay', this.nextAsset, (source === 'auto') ? 'auto' : 'click', {\n source: this.nextAssetSource\n });\n\n utils.addClass(this.el, 'is-next-closing');\n setTimeout(clear, 700);\n } else {\n // grid click\n this.trigger('playRecommended', assetId);\n clear();\n }\n}\n\n/**\n * Turn off autoplay of recommended next asset\n */\nfunction disableNext() {\n this.trigger('nextAssetClose', this.nextAsset);\n this.nextAsset = null;\n utils.removeClass(this.el, 'is-next-visible is-counting is-next-visible');\n}\n\n/**\n * Retrieve full url for play next and grid assets thumbnails\n *\n * @param key\n * @returns {*}\n */\nfunction getThumbnailUrl(key) {\n return image.getImageSrc(key, 'poster', 200);\n}\n\n/**\n * Add snap scroll for mobile grid\n */\nfunction initSnapScroll() {\n const scrollSnapPrefix = utils.getScrollSnapPrefix();\n const gridItem = this.getByClass('svp-player-recommended-item')[0];\n\n // check if snap points are supported\n if (scrollSnapPrefix !== false) {\n this.el.style[`${scrollSnapPrefix}scroll-snap-type`] = 'mandatory';\n this.el.style[`${scrollSnapPrefix}scroll-snap-points-x`] = `repeat(${gridItem.clientWidth}px)`;\n }\n}\n/**\n * Click handler for recommended grid\n *\n * @param node\n */\nfunction onGridItemClicked(node) {\n utils.addClass(node, 'svp-to-active');\n\n this.listenToOnce(this.player, 'assetPlay', function() {\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n }, this);\n\n setTimeout(() => {\n playNext.call(this, parseInt(node.dataset.id, 10), 'grid');\n utils.removeClass(this.el, 'is-grid-visible');\n }, 500);\n}\n\n/**\n * Fetch recommended assets when player is ready\n */\nfunction onPlaybackStart() {\n const recommended = new Recommended({\n asset: this.player.getAsset(),\n ml: this.settings.ml\n });\n\n // restore default state for each new asset\n this.gridItemsReady = false;\n\n // turn off option for grid\n if (this.settings.grid !== false) {\n recommended.getItems(this.settings.grid.items).then((items) => {\n if (utils.isArray(items) && items.length > 0) {\n this.gridItemsReady = true;\n this.trigger('gridItemsReady', items);\n } else {\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n }\n }).catch(() => {\n try {\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n } catch (e) {\n // player container not available\n }\n });\n }\n\n // next asset is available by default but can be turned off\n if (this.settings.next !== false) {\n recommended.getNextAsset(this.settings.next).then(({ nextAsset, source }) => {\n this.nextAsset = nextAsset;\n this.nextAssetSource = source;\n\n this.trigger('nextAssetReady', this.nextAsset, {\n source\n });\n }).catch(() => {\n if (this.el) {\n utils.removeClass(this.el, ['is-next-visible', 'is-counting', 'is-next-closing']);\n }\n });\n }\n}\n\n/**\n * Initialize lazy fetching\n */\nfunction onInitialize() {\n // fetch recommended 15s before playback end\n let fetchDuration = this.player.getDuration() - 15;\n\n // for streams shorter than 15s load next in 2s\n if (fetchDuration < 0) {\n fetchDuration = 2;\n }\n\n // do not enable recommended for live streams\n if (!this.player.model.getStream().isLive()) {\n this.listenTo(this.player, 'time', function (time) {\n if (fetchDuration > 0 && time > fetchDuration) {\n fetchDuration = -1;\n onPlaybackStart.call(this);\n }\n }, this);\n }\n}\n\n/**\n * Handler for stream end (countdown end) event\n * Stream complete can't be used due to circular events triggering\n */\nfunction onPlaybackComplete(reason) {\n // do not take any action if complete is triggered by playNext\n if (reason === 'playNext' || reason === 'stop') {\n return;\n }\n\n if (this.nextAsset) {\n this.trigger('nextAssetComplete', this.nextAsset);\n playNext.call(this, this.nextAsset.get('id'), 'auto');\n } else if (this.gridItemsReady) {\n // display grid only when items are available\n utils.addClass(this.el, 'is-grid-visible');\n utils.addClass(this.player.getContainer(), 'is-recommended-grid-visible');\n\n initSnapScroll.call(this);\n this.trigger('gridVisible');\n }\n}\n\n/**\n * Handler for checking time in which playNext should be available\n * @param time\n * @param duration\n */\nfunction onTimeNextVisible(time, duration) {\n if (duration - time < this.countdownTime) {\n this.trigger('playNextVisible', Math.floor(duration - time));\n }\n}\n\n/**\n * Display play next in given time\n *\n * @param timeout - duration of countdown\n */\nfunction onPlayNextVisible(timeout) {\n utils.addClass(this.el, 'is-next-visible is-counting');\n\n this.stopListening(this.player, 'time', onTimeNextVisible);\n // update transition duration as it may be smaller than default due to seek\n this.getByClass('svp-player-recommended-countdown')[0].style.transitionDuration = `${timeout}s`;\n}\n\n/**\n * Handler triggered when nextAsset is available for current stream\n */\nfunction onNextAssetReady() {\n const img = new Image();\n // prefetch image\n img.src = getThumbnailUrl(this.nextAsset.getThumbnail());\n\n this.listenTo(this.player, 'time', onTimeNextVisible, this);\n\n this.getByClass('svp-player-recommended-next')[0].innerHTML = utils.template(nextAssetTemplate, {\n next: this.nextAsset,\n countdown: this.countdownTime, // default countdown\n getThumbnail: getThumbnailUrl,\n closeIcon: closeIcon,\n nextIcon: nextIcon\n });\n\n this.getByClass('svp-player-recommended-image')[0]\n .addEventListener('click', playNext.bind(this, this.nextAsset.get('id'), 'single'));\n\n this.getByClass('svp-player-recommended-close')[0]\n .addEventListener('click', disableNext.bind(this));\n}\n\n/**\n * Triggered when grid items are available\n */\nfunction onGridItemsReady(recommended) {\n this.getByClass('svp-player-recommended-grid')[0].innerHTML = utils.template(gridTemplate, {\n recommended: recommended,\n getThumbnail: getThumbnailUrl,\n utils: utils\n });\n\n utils.each(this.getByClass('svp-player-recommended-item'), (item) => {\n item.addEventListener('click', onGridItemClicked.bind(this, item));\n });\n}\n\n/**\n * Triggered when recommended grid is displayed\n */\nfunction onGridVisible() {\n // replay asset triggers play\n // clicking on grid not intersects with this\n this.listenToOnce(this.player, 'play', this.trigger.bind(this, 'assetReplay'));\n}\n\n/**\n * Event fired when user decided to restart video\n */\nfunction onAssetReplay() {\n // attach events to allow again display of grid\n this.setup();\n // cleanup state\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n utils.removeClass(this.el, ['is-grid-visible', 'is-next-visible', 'is-counting', 'is-next-closing']);\n}\n\n\n/**\n * Renders countdown clock for streams which are not published yet\n *\n * @param options\n * @constructor\n */\nclass RecommendedPlugin extends PluginModel {\n constructor(options) {\n super(options);\n\n // time in seconds from end of stream\n this.countdownTime = (options.settings && options.settings.next && options.settings.next.countdown) || 10;\n this.nextAsset = null;\n this.settings = utils.extend({\n grid: {\n items: []\n },\n next: {}\n }, options.settings);\n\n // check if grid items are available\n this.gridItemsReady = false;\n }\n\n // eslint-disable-next-line\n getName() {\n return 'RecommendedPlugin';\n }\n\n setup() {\n // assetPlay\n this.stopListening(this.player);\n this.listenToOnce(this.player, 'assetPlay', this.render, this);\n this.listenToOnce(this.player, 'assetPlay', onInitialize, this);\n this.listenToOnce(this.player, 'complete', onPlaybackComplete, this);\n\n\n this.once('playNextVisible', onPlayNextVisible, this);\n this.once('nextAssetReady', onNextAssetReady, this);\n this.once('gridItemsReady', onGridItemsReady, this);\n this.once('gridVisible', onGridVisible, this);\n this.once('assetReplay', onAssetReplay, this);\n }\n\n /**\n * Get current element child node by class name\n *\n * @param className\n * @returns {NodeList|*}\n */\n getByClass(className) {\n return this.el.getElementsByClassName(className);\n }\n\n /**\n * Render default view holder for play next and recommended\n *\n */\n render() {\n const container = this.player.getContainer();\n const previousEl = container.getElementsByClassName('svp-player-recommended-box');\n\n // clean if previously grid was displayed\n utils.removeClass(this.player.getContainer(), 'is-recommended-grid-visible');\n\n // cleanup old element\n // recommended is \"async\" so it can't be destroyed like normal plugin\n if (previousEl.length > 0) {\n container.removeChild(previousEl[0]);\n }\n\n this.el = utils.createNode(utils.template(recommendedTemplate));\n\n container.appendChild(this.el);\n }\n}\n\nexport default RecommendedPlugin;\n","/* global console */\nimport utils from 'utils/utils';\n\nconst ClickTracker = {\n vendor: null,\n\n mode: 'TRACK',\n url: '//click.vgnett.no/svp.gif?s=',\n\n /**\n * Track media event\n *\n * @param data\n */\n trackMediaEvent(data) {\n const query = [];\n\n query.push(`d=${this.getDeviceType()}`);\n query.push(`v=${data.assetId}`);\n\n this.sendRequest('media', query.join('&'));\n },\n\n /**\n * Track playback events in certain time\n *\n * @param data\n */\n trackStreamEvent(data) {\n const query = [];\n\n query.push(`d=${this.getDeviceType()}`);\n query.push(`v=${data.assetId}`);\n query.push(`p=${data.time}`);\n\n // randomize request time for avoiding api peaks\n setTimeout(this.sendRequest.bind(this, 'stream', query.join('&')), Math.floor((Math.random() * 100) + 1));\n },\n\n /**\n * Send API request using 1x1px image\n *\n * @param type\n * @param queryString\n */\n sendRequest(type, queryString) {\n const image = new Image();\n const apiUrl = this.getApiUrl(type);\n const hypen = apiUrl.indexOf('?') > -1 ? '&' : '?';\n\n // track only if tracker is initialized\n if (this.vendor) {\n if (this.mode === 'LOG') {\n // eslint-disable-next-line no-console\n console.log('SVP STATS: ', [\n queryString,\n `${apiUrl + hypen + queryString}&cb=${Math.random() * 10000}`\n ]);\n }\n\n image.src = `${apiUrl + hypen + queryString}&cb=${Math.random() * 10000}`;\n }\n\n return image;\n },\n\n /**\n * Return full API endpoint url\n *\n * @returns {string}\n */\n getApiUrl(type) {\n if (this.vendor === 'vgtv' && type === 'media') {\n return '//click.vgnett.no/vgtv.gif';\n }\n\n return this.url + this.vendor;\n },\n\n /**\n * Tracking is divided by device type\n *\n * @returns {*}\n */\n getDeviceType() {\n if (utils.device.isTablet()) {\n return 'tablet';\n }\n\n if (utils.device.isMobile()) {\n return 'mobile';\n }\n\n return 'desktop';\n }\n};\n\nexport default ClickTracker;\n","import ClickTracker from './svp-stats/tracker';\nimport PluginModel from './model';\n\n/**\n * Seconds intervals for tracking\n * @returns {number}\n */\nfunction getTrackingInterval(duration) {\n // if duration is not set then do not track it\n if (duration > 0) {\n // for streams shorter than 250s tracking interval is 5seconds\n if (duration < 250) {\n return 5;\n }\n\n // otherwise it's every 2% of stream\n return Math.floor(duration * 0.02);\n }\n\n return -1;\n}\n\n\n/**\n * Basic SVP statistics tool\n *\n * @param options\n * @constructor\n */\nclass SvpStatsPlugin extends PluginModel {\n constructor(options) {\n super(options);\n\n this.env = options.env;\n this.vendor = options.vendor;\n this.mode = options.mode;\n }\n\n // eslint-disable-next-line\n getName() {\n return 'SvpStatsPlugin';\n }\n\n setup() {\n // stats can be turned off only on non production env\n if (this.mode === 'OFF' && this.env !== 'production') {\n return;\n }\n\n ClickTracker.mode = this.mode;\n ClickTracker.vendor = this.vendor;\n\n this.listenTo(this.player, 'assetPlay', function (startTime) {\n const asset = this.player.getAsset();\n const assetId = asset.get('id');\n const duration = this.player.getDuration();\n const trackingInterval = getTrackingInterval(duration);\n\n let initialStartTime = startTime || -1;\n let currentTime = -1;\n\n ClickTracker.trackMediaEvent({\n assetId: assetId\n });\n\n // tracking interval maybe invalid when stream is live or do not have proper duration\n if (trackingInterval > 0 && asset.get('streamType') !== 'live') {\n // assetPlay prevents from sending events when it has start time\n this.listenTo(this.player, 'time', (playerTime) => {\n const time = Math.floor(playerTime);\n\n // engagement tracking\n if (time !== currentTime && time % trackingInterval === 0 && time > initialStartTime) {\n currentTime = time;\n // reset start time counter for tracking seek before start point in indexed stream\n initialStartTime = -1;\n\n // prevent requests outside stream size\n if (time > -1 && time <= duration) {\n ClickTracker.trackStreamEvent({\n assetId: assetId,\n time: time\n });\n }\n }\n });\n }\n });\n\n this.listenTo(this.player, 'adSlotStart', function (adSlot) {\n if (adSlot.position === 'preroll') {\n ClickTracker.trackStreamEvent({\n assetId: this.player.getAsset().get('id'),\n time: -1\n });\n }\n });\n\n this.listenTo(this.player, 'adSlotComplete', function (adSlot) {\n if (adSlot.position === 'preroll') {\n ClickTracker.trackStreamEvent({\n assetId: this.player.getAsset().get('id'),\n time: -2\n });\n }\n });\n }\n\n destroy() {\n ClickTracker.vendor = null;\n this.stopListening(this.player);\n }\n}\n\n\nexport default SvpStatsPlugin;\n","import scriptLoader from 'utils/script-loader';\n\nconst TRACKER_ID = 'svp-tracker';\n\nconst PulseTrackerLoader = {\n request: null,\n\n providers: [],\n\n /**\n * Load pulse library only once per page\n *\n * @returns {null}\n */\n load() {\n if (!this.request) {\n if (!window.pulse) {\n // a global pulse object has to be present to avoid autoloader errors\n window.pulse = window.pulse || function() {\n window.pulse.q = window.pulse.q || [];\n window.pulse.q.push(arguments);\n };\n\n this.request = scriptLoader('//sdk.pulse.schibsted.com/pulse.min.js');\n } else {\n // pulse is already available\n this.request = Promise.resolve();\n }\n }\n\n return this.request;\n },\n\n init(provider) {\n return this.load().then(() => {\n const PROVIDER_TRACKER_ID = `${TRACKER_ID}-${provider}`;\n\n // initialize pulse only once per page per provider\n if (PulseTrackerLoader.providers.indexOf(provider) === -1) {\n PulseTrackerLoader.providers.push(provider);\n\n // we need to name the tracker to avoid tracking conflicts when embedding the player\n window.pulse('init', provider, null, null, PROVIDER_TRACKER_ID);\n }\n\n return new Promise((resolve) => {\n window.pulse(PROVIDER_TRACKER_ID, (tracker) => resolve(tracker));\n });\n });\n }\n};\n\nexport default PulseTrackerLoader;\n","import Eventable from 'utils/eventable';\n\n/**\n * Parse SVP Player events and tailor data to pulse requirements\n *\n * Available events: Play, Pause, Stop, Watch\n */\nclass AdEvents extends Eventable {\n constructor(player) {\n super();\n this.player = player;\n this.adData = {};\n this.beforeUnload = ['beforeunload', this.onAdSlotComplete.bind(this), true];\n\n this.listenTo(this.player, 'adSlotStart', this.onAdSlotStart, this);\n this.listenTo(this.player, 'adStarted', this.onAdStarted, this);\n this.listenTo(this.player, 'adProgress', this.onAdProgress, this);\n this.listenTo(this.player, 'adSlotComplete', this.onAdSlotComplete, this);\n\n this.listenTo(this.player, 'adPause', this.onAdPause, this);\n this.listenTo(this.player, 'adPlay', this.onAdPlay, this);\n\n this.listenTo(this.player, 'PausePlugin:adVisible', this.onPauseAdVisible, this);\n\n this.listenTo(this.player, 'ready', this.onReady, this);\n }\n\n onReady() {\n this.listenTo(this.player.model.player, 'adImpression', (adData) => {\n Object.assign(this.adData, {\n duration: Math.round(adData.duration)\n });\n });\n }\n\n onAdSlotStart(slotData) {\n window.addEventListener(...this.beforeUnload);\n\n Object.assign(this.adData, {\n type: slotData.position\n });\n }\n\n onAdStarted() {\n Object.assign(this.adData, {\n start: true\n });\n\n this.listenToOnce(this.player.model.player, 'adMeta', (adData) => {\n let adId = null;\n\n try {\n const adXml = adData.response.querySelectorAll('Ad')[adData.sequence - 1];\n adId = adXml.id;\n } catch (e) {\n // could not find Ad element\n }\n\n Object.assign(this.adData, {\n id: adId,\n sequence: adData.sequence,\n count: adData.podcount,\n position: 0\n });\n });\n }\n\n onAdProgress(time) {\n const position = Math.floor(time);\n const previousPosition = this.adData.position;\n\n Object.assign(this.adData, {\n position\n });\n\n if (previousPosition !== position) {\n this.trigger('Watch', this.adData);\n }\n }\n\n onAdSlotComplete() {\n window.removeEventListener(...this.beforeUnload);\n\n // prevent cleaning object by reference\n this.trigger('Stop', Object.assign({}, this.adData));\n this.adData = {};\n }\n\n onAdPlay() {\n this.trigger('Play', this.adData);\n\n // start indicates first play of ad\n this.adData.start = false;\n }\n\n onAdPause() {\n this.trigger('Pause', this.adData);\n }\n\n onPauseAdVisible(data) {\n this.trigger('View', {\n id: data.creativeId,\n type: 'Pausead'\n });\n }\n\n destroy() {\n window.removeEventListener(...this.beforeUnload);\n this.stopListening();\n }\n}\n\nexport default AdEvents;\n","export default {};\n","import Eventable from 'utils/eventable';\nimport session from './session';\n\n/**\n * Parse SVP Player events and tailor data to pulse requirements\n *\n * Available events: Play, Pause, Stop, Watch\n */\nclass PlaybackEvents extends Eventable {\n constructor(player) {\n super();\n this.player = player;\n this.watchData = {\n time: 0,\n duration: -1\n };\n\n this.previousTime = -1;\n\n this.session = this.createSession();\n this.beforePlaybackStarted = true;\n this.beforeUnload = ['beforeunload', this.onBeforeUnload.bind(this), true];\n this.playMethod = null;\n\n this.listenTo(this.player, 'playlistItem', this.onPlaylistItem, this);\n this.listenTo(this.player, 'initialPlay', this.onInitialPlay, this);\n this.listenTo(this.player, 'assetPlay', this.onAssetPlay, this);\n this.listenTo(this.player, 'pause', this.onPause, this);\n this.listenTo(this.player, 'play', this.onPlay, this);\n this.listenTo(this.player, 'complete', this.onComplete, this);\n this.listenTo(this.player, 'playNext', this.onPlayNext, this);\n\n if (this.stream.isLive()) {\n this.listenTo(this.player, 'time', this.onLiveTime, this);\n } else {\n this.listenTo(this.player, 'time', this.onTime, this);\n }\n\n this.listenTo(\n this.player,\n 'RecommendedPlugin:nextAssetPlay',\n (asset, mode, options) => this.onRecommendedPlay(`recommendedNext-${options.source}`)\n );\n\n this.listenTo(\n this.player,\n 'RecommendedPlugin:playRecommended',\n this.onRecommendedPlay.bind(this, 'recommendedGrid')\n );\n\n this.listenToOnce(this.player, 'play', ({ playReason }) => {\n this.playMethod = playReason;\n });\n\n window.addEventListener(...this.beforeUnload);\n }\n\n get eventData() {\n const data = {\n playMethod: this.playMethod\n };\n const { previousAssetId } = this.session;\n\n if (previousAssetId) {\n data.previousAssetId = previousAssetId;\n data.playbackSource = this.session.playbackSource;\n }\n\n data.duration = this.watchData.duration;\n\n try {\n data.position = Math.floor(this.player.getCurrentTime());\n } catch (e) {\n // could not parse time\n // do not set any value in this case\n }\n\n return data;\n }\n\n get stream() {\n try {\n return this.player.config.stream || {};\n } catch (e) {\n return {};\n }\n }\n\n get jw() {\n try {\n return this.player.model.player || {};\n } catch (e) {\n return {};\n }\n }\n\n getPosition() {\n try {\n return Math.floor(this.player.getCurrentTime());\n } catch (e) {\n return 0;\n }\n }\n\n createSession() {\n // node is unique player identifier\n const node = this.player.config.get('node');\n const id = node.id || node;\n\n /**\n * Initialize session object to keep reference\n */\n if (!session[id]) {\n session[id] = {};\n }\n\n return session[id];\n }\n\n trackTimeEvent(time, eventInterval = 1) {\n // track event data with one second interval\n if (time % 1 === 0 && this.previousTime !== time) {\n this.watchData.duration += 1;\n this.previousTime = time;\n }\n\n if (time % eventInterval === 0 && this.watchData.time !== time) {\n this.watchData.time = time;\n\n this.trigger('Watch', Object.assign(this.eventData, {\n position: time\n }));\n }\n }\n\n onBeforeUnload() {\n if (this.beforeStreamStart === false) {\n this.onComplete();\n }\n }\n\n onInitialPlay() {\n this.beforePlaybackStarted = false;\n }\n\n onPlaylistItem() {\n const track = this.trigger.bind(this, 'Load', Object.assign(this.eventData, {\n position: this.stream.getPlaybackTime('begin') || 0,\n duration: 0\n }));\n\n /**\n * Only first playback has to wait for viewable event\n * Playnext/grid will work without it\n */\n if (this.session.wasViewed === true) {\n track();\n } else {\n // wait for player to be viewable\n this.listenTo(this.player.model.player, 'viewable', (data) => {\n if (data.viewable) {\n track();\n this.stopListening(this.player.model.player, 'viewable');\n this.session.wasViewed = true;\n }\n });\n }\n\n this.previousAssetId = null;\n }\n\n onAssetPlay() {\n this.beforeStreamStart = false;\n\n this.trigger('Play', Object.assign(this.eventData, {\n start: true,\n duration: 0\n }));\n }\n\n onPause() {\n this.trigger('Pause', this.eventData);\n }\n\n onPlay() {\n // play can't be triggered before assetPlay\n if (this.beforeStreamStart === false) {\n this.trigger('Play', this.eventData);\n }\n }\n\n /**\n * Intervals for VOD are defined as follow\n *\n * every 1s - during the first 10 seconds of content playback (no matter of where playback has started\n * every 5s - for rest of content playback, after seeking intervals should be triggered in same time\n * seek 42, then first trigger should be in 45\n */\n onTime(eventTime) {\n const time = Math.floor(eventTime);\n const eventInterval = time > 10 ? 5 : 1;\n\n this.trackTimeEvent(time, eventInterval);\n }\n\n /**\n * Track live events by checking time from flight time to current date\n * DVR seek is also included in calculations\n */\n onLiveTime() {\n // after playback stars time to start will be negative\n // add DVR shift from playback\n const eventTime = Math.floor((this.stream.getTimeToStart() * -1) + this.jw.getPosition());\n // constant tracking interval\n this.trackTimeEvent(eventTime, 5);\n }\n\n onComplete(reason) {\n this.beforeStreamStart = true;\n\n if (reason === 'playNext') {\n this.onRecommendedPlay('playNext');\n }\n\n /**\n * Track stop event only when playback has started\n */\n if (this.beforePlaybackStarted === false) {\n this.trigger('Stop', this.eventData);\n // store asset id in memory to attach it to play next video\n this.session.previousAssetId = this.stream.getId();\n }\n }\n\n onPlayNext(id, options) {\n if (options && options.pulse) {\n Object.assign(this.session, options.pulse);\n }\n }\n\n onRecommendedPlay(playbackSource) {\n this.session.playbackSource = playbackSource;\n }\n\n destroy() {\n window.removeEventListener(...this.beforeUnload);\n this.stopListening();\n }\n}\n\nexport default PlaybackEvents;\n","import Eventable from 'utils/eventable';\n\n/**\n * Parse SVP Player events and tailor data to pulse requirements\n *\n * Available events: Play, Pause, Stop, Watch\n */\nclass AdEvents extends Eventable {\n constructor(player) {\n super();\n this.player = player;\n this.listenTo(this.player, 'ready', this.onReady, this);\n\n\n this.listenTo(\n this.player,\n 'RecommendedPlugin:playNextVisible',\n this.onRecommendedVisible,\n this\n );\n }\n\n onRecommendedVisible() {\n this.trigger('UiElement', {\n id: this.player.getAsset().get('id'),\n name: 'nextAssetCountdown'\n });\n }\n\n destroy() {\n this.stopListening();\n }\n}\n\nexport default AdEvents;\n","import config from 'player/config';\n\nclass CategoryTree {\n constructor(vendor) {\n this.vendor = vendor;\n }\n\n fetch() {\n if (!this.request) {\n this.request = fetch(config.api.getUrl(this.vendor, '/categories'))\n .then((response) => response.json())\n .then((response) => {\n // eslint-disable-next-line\n if (response && response._embedded.categories) {\n // eslint-disable-next-line\n return response._embedded.categories;\n }\n\n return [];\n })\n .then((categories) => {\n this.categories = new Map(categories.map((category) => [category.id, category]));\n });\n }\n return this.request;\n }\n\n getPath(categoryId) {\n const path = [];\n let category = this.categories.get(categoryId);\n\n if (category) {\n path.push(category);\n\n while (category.parentId !== 0) {\n category = this.categories.get(category.parentId);\n path.unshift(category);\n }\n }\n\n return path;\n }\n}\n\n\nconst instances = {};\n\nexport default (vendor) => {\n if (!instances[vendor]) {\n instances[vendor] = new CategoryTree(vendor);\n }\n\n return instances[vendor];\n};\n","import { capitalizeFirstLetter } from 'utils/string';\n\nimport logger from 'utils/logger';\n\nimport PluginModel from './model';\nimport PulseTracker from './pulse-stats/tracker';\nimport AdEvents from './pulse-stats/ad-events';\nimport PlaybackEvents from './pulse-stats/playback-events';\nimport UiEvents from './pulse-stats/ui-events';\nimport CategoryTree from '../model/category-tree';\n\n/**\n * Retrieve tags from asset\n * @param asset\n */\nconst getTags = (asset) => (asset.get('tags') || []).map((tag) => tag.tag);\n\n/**\n * Get array of plan3 stories ids\n *\n * @param asset\n * @returns {*|Array}\n */\nconst getStories = (asset) => (asset.get('stories') || []);\n\nconst getMediaAssetId = (provider, mediaId) => `sdrn:${provider}:mediaasset:${mediaId}`;\n\n/**\n * Integration with Pulse Tracker\n * https://github.schibsted.io/spt-dataanalytics/pulse-autotracker\n *\n * @param options\n * @constructor\n */\nclass PulseStatsPlugin extends PluginModel {\n constructor(options) {\n super(options);\n this.provider = options.provider;\n this.decorator = options.decorator || ((data) => data);\n this.embed = options.embed === true;\n this.previousAssetId = options.previousAssetId;\n\n this.tracker = null;\n }\n // eslint-disable-next-line\n getName() {\n return 'PulseStats';\n }\n\n get jw() {\n try {\n return this.player.model.player || {};\n } catch (e) {\n return {};\n }\n }\n\n get asset() {\n const asset = this.playerAsset;\n const additional = asset.get('additional') || {};\n const accessControl = Object.keys(additional.access || {});\n const tags = getTags(asset);\n const stories = getStories(asset);\n\n const data = {\n assetType: asset.get('assetType') === 'video' ? 'Video' : 'Audio',\n title: asset.get('title'),\n // duration should be in seconds\n duration: Math.round(asset.get('duration') / 1000)\n };\n\n if (accessControl.length > 0) {\n data.accessControl = accessControl.join(',');\n }\n\n if (tags.length > 0) {\n data.tags = tags;\n }\n\n if (stories.length > 0) {\n // disable stories until there is not id->title translation\n // data.stories = stories;\n }\n\n // check if stream has category\n if (asset.getCategory()) {\n data.category = asset.getCategory().get('id');\n }\n\n // delete duration from live assets\n if (asset.get('streamType') === 'live') {\n delete data.duration;\n }\n\n if (additional.originAssetId) {\n data.originAssetId = additional.originAssetId;\n }\n\n return data;\n }\n\n getCategoryPath(categoryId) {\n if (typeof categoryId !== 'number') {\n return null;\n }\n\n // check if id exist and create category path\n if (!this.categoryPath) {\n this.categoryPath = this.categoryTree.getPath(categoryId)\n .map((category) => (category.title.toLowerCase()))\n .join(' > ');\n }\n\n return this.categoryPath;\n }\n\n /**\n * Track Pulse event\n * Defer tracking when Pulse library is not loaded yet\n */\n async track(eventName, eventData) {\n const tracker = await this.getTracker();\n logger('Pulse').log(JSON.stringify(eventData, null, 4));\n tracker.track(eventName, eventData);\n }\n\n async trackMediaEvent(data) {\n try {\n await this.categoryTree.fetch();\n\n // category data is available on ready event\n const categoryPath = this.getCategoryPath(data.object.category);\n\n if (categoryPath) {\n // eslint-disable-next-line\n data.object.category = categoryPath;\n }\n\n await this.track('engagementEvent', this.decorator(data, this.playerAsset));\n } catch (e) {\n // nothing to do\n logger('Pulse').log('Could not track event');\n }\n }\n\n getTracker() {\n return new Promise((resolve) => {\n const resolveTracker = () => resolve(this.tracker);\n\n if (this.tracker === null) {\n this.once('ready', resolveTracker);\n } else {\n resolveTracker();\n }\n });\n }\n\n setup() {\n // prevent asset to be changed with playnext before stream completes\n this.playerAsset = this.player.getAsset();\n\n this.categoryTree = CategoryTree(this.playerAsset.getVendor());\n\n // initialize only once\n Promise.all([\n PulseTracker.init(this.provider),\n this.categoryTree.fetch()\n ]).then((data) => this.onReady(data));\n\n this.adEvents = new AdEvents(this.player);\n this.playbackEvents = new PlaybackEvents(this.player);\n this.uiEvents = new UiEvents(this.player);\n\n this.listenTo(this.adEvents, 'all', this.onAdEvent, this);\n this.listenTo(this.playbackEvents, 'all', this.onPlaybackEvent, this);\n this.listenTo(this.uiEvents, 'all', this.onUiEvent, this);\n }\n\n onReady(data) {\n const [tracker] = data;\n\n this.tracker = tracker;\n this.trigger('ready');\n }\n\n onPlaybackEvent(intent, data = {}) {\n const asset = this.playerAsset;\n const { config } = this.player;\n\n /**\n * Autoplay is not set for load method thus we use value set in player constructor\n * For other events method of playback start is checked\n * Autoplay is set to true when player actually autostarts or when its started with external call (.play())\n */\n const trackingData = {\n intent,\n '@type': 'Engagement',\n position: data.position,\n // duration is in ms\n duration: data.duration * 1000,\n object: Object.assign({\n '@id': getMediaAssetId(this.provider, asset.get('id')),\n '@type': 'MediaAsset',\n name: asset.getTitle(),\n muted: this.jw.getMute(),\n fullScreen: this.jw.getFullscreen(),\n autoplay: data.playMethod === null\n ? (config.get('autoplay') === true)\n : (data.playMethod === 'autostart' || data.playMethod === 'external'),\n embed: this.embed\n }, this.asset)\n };\n\n if (data.start === true) {\n trackingData.start = true;\n }\n\n if (data.previousAssetId) {\n trackingData.object.previousAssetId = getMediaAssetId(this.provider, data.previousAssetId);\n trackingData.object.playbackSource = data.playbackSource;\n } else if (this.previousAssetId) {\n trackingData.object.previousAssetId = getMediaAssetId(this.provider, this.previousAssetId);\n trackingData.object.playbackSource = 'config';\n }\n\n this.trackMediaEvent(trackingData);\n }\n\n onAdEvent(intent, data) {\n const asset = this.playerAsset;\n\n const trackingData = {\n intent,\n '@type': 'Engagement',\n position: data.position,\n // position and duration are equal because ads does not allow to seek through content\n // duration is in ms\n duration: data.position * 1000,\n object: {\n '@id': `sdrn:${this.provider}:mediaad:${data.id}`,\n '@type': 'MediaAd',\n assetType: capitalizeFirstLetter(data.type),\n muted: this.jw.getMute(),\n fullScreen: this.jw.getFullscreen(),\n mediaAssetId: getMediaAssetId(this.provider, asset.get('id'))\n }\n };\n\n if (data.count > 1) {\n trackingData.object.slotNumber = data.sequence;\n }\n\n if (data.duration) {\n trackingData.object.duration = data.duration;\n }\n\n if (data.start === true) {\n trackingData.start = true;\n }\n\n this.trackMediaEvent(trackingData);\n }\n\n async onUiEvent(eventName, data) {\n const trackingData = {\n '@type': 'View',\n object: Object.assign(data, {\n '@id': getMediaAssetId(this.provider, data.id),\n '@type': 'UIElement'\n })\n };\n\n this.track('viewEvent', trackingData);\n }\n\n destroy() {\n this.stopListening();\n\n this.adEvents.destroy();\n this.playbackEvents.destroy();\n }\n}\n\nexport default PulseStatsPlugin;\n","/* globals console */\nimport utils from 'utils/utils';\nimport logger from 'utils/logger';\nimport ServerTime from 'utils/server-time';\nimport config from 'player/config';\nimport errorIcon from 'icons/error.svg';\nimport Asset from './model/asset';\nimport NextAsset from './model/next-asset';\nimport Stream from './model/stream';\nimport locale from './model/locale';\nimport Config from './playback/config';\nimport Provider from './playback/provider';\nimport { APPNEXUS_PROVIDER_ID } from './services/api';\nimport assetService from './services/api/asset';\nimport Domain from './model/domain';\nimport SvpPlugins from './plugins';\nimport PausePlugin from './plugins/pause';\nimport AgeLimitPlugin from './plugins/age-limit';\nimport CountdownPlugin from './plugins/countdown';\nimport RecommendedPlugin from './plugins/recommended';\nimport SvpStatsPlugin from './plugins/svp-stats';\nimport PulseTracker from './plugins/pulse-stats/tracker';\nimport PulseStatsPlugin from './plugins/pulse-stats';\n\nimport statusCode, { NOT_FOUND, GENERAL_ERROR } from './playback/config/status-codes';\n\n/**\n * Remove single plugin instance\n * Clear all listeners\n * Remove from plugins hashmap\n *\n * @param plugin\n */\nfunction destroyPlugin(plugin) {\n if (plugin.off) {\n plugin.off();\n }\n plugin.destroy();\n\n this.stopListening(plugin);\n delete this.plugins[plugin.getName()];\n}\n\n\n/**\n * Clear error message\n * @param node\n */\nfunction clearError(node) {\n const previousErrorNode = node.getElementsByClassName('svp-player-error-wrapper');\n\n // clear old node\n if (previousErrorNode.length > 0) {\n utils.removeClass(node, ['svp-player-error', 'svp-player-error-hasImage']);\n\n if (previousErrorNode[0].parentNode) {\n previousErrorNode[0].parentNode.removeChild(previousErrorNode[0]);\n }\n }\n}\n\n/**\n * Display error message in given node\n * @param node\n * @param message\n * @param code\n */\nfunction displayError(node, message, code = null) {\n let template = `
${errorIcon}${message}`;\n\n if (code) {\n template += `
${locale.translate('Error code')}: ${code}
`;\n }\n\n template += '
';\n\n const posterSrc = this.model && this.model.getStream() && this.model.getPoster(this.model.getStream(), node);\n\n clearError(node);\n utils.addClass(node, 'svp-player-error');\n\n // add image\n if (posterSrc) {\n utils.addClass(node, 'svp-player-error-hasImage');\n template += `
`;\n }\n\n const errorNode = utils.createNode(`
${template}
`);\n\n node.appendChild(errorNode);\n\n this.once('complete', function() {\n utils.removeClass(node, ['svp-player-error', 'svp-player-error-hasImage']);\n\n if (errorNode.parentNode) {\n errorNode.parentNode.removeChild(errorNode);\n }\n }, this);\n}\n\n/**\n * Display error message\n *\n * @param event\n * @param details\n */\nfunction onError(details = {}) {\n const node = document.getElementById(this.config.get('node'));\n const { code, message } = details;\n\n let translatedMessage = locale.translate(message);\n\n // translation not found\n if (translatedMessage === message) {\n translatedMessage = locale.translate(statusCode(GENERAL_ERROR));\n }\n\n // details - message in english\n // message - localized, displayed message\n const errorDetails = {\n code,\n details: message,\n message: translatedMessage\n };\n\n if (details.type) {\n errorDetails.type = details.type;\n }\n\n displayError.call(this, node, translatedMessage, code);\n\n if (this.model.player) {\n this.model.player.stop();\n }\n\n this.trigger('error', errorDetails);\n}\n\n/**\n * Player initialized and single playlistItem is laoded\n */\nfunction onPlaylistItem() {\n const container = this.getContainer();\n // add class for live streams\n\n utils.removeClass(container, 'svp-player-live');\n\n if (this.model.getStream().isLive()) {\n utils.addClass(container, 'svp-player-live');\n // add translation for live button via data-label\n container.getElementsByClassName('jw-icon-display')[0]\n .setAttribute('data-label', locale.translate('Live button'));\n }\n\n this.trigger('playlistItem');\n}\n\n/**\n * Stream completed, fired for every item in playlist\n * Clear settings which are only for one stream\n */\nfunction onComplete(reason) {\n if (!this.isCompleted) {\n this.isCompleted = true;\n\n this.config.set('time', null);\n this.config.set('chapter', null);\n\n this.trigger('complete', reason);\n }\n}\n\n/**\n * Proxy player events\n */\nfunction onPlayerEvent(event, ...args) {\n let callFunction;\n\n switch (event) {\n case 'playlistItem':\n callFunction = onPlaylistItem.bind(this, ...args);\n break;\n case 'complete':\n callFunction = onComplete.bind(this, ...args);\n break;\n case 'error':\n callFunction = onError.bind(this, ...args);\n break;\n default:\n callFunction = this.trigger.bind(this, event, ...args);\n }\n\n callFunction();\n}\n\n\n/**\n *\n *\n * @param options Caution, param is bound in constructor\n */\nfunction onceConfigReady(options, settings) {\n this.model = new Provider(this.config);\n\n // important listeners has to be attached before setup\n this.listenTo(this.model, 'all', onPlayerEvent, this);\n\n this.listenTo(this.model, 'play', function() {\n this.isCompleted = false;\n }, this);\n\n // turn on cachebreaker for preview mode\n if (settings && settings.preview === true) {\n config.api.cb = true;\n }\n\n // once per player instance error append stylesheet\n this.once('error', function() {\n utils.addStyleSheet(this.config.get('skin').url);\n }, this);\n\n Promise.all([\n new Promise((resolve) => {\n this.once('assetReady', resolve);\n }),\n SvpPlugins.load(options.plugins)\n ]).then(() => {\n utils.each(options.plugins, (pluginConfig, plugin) => {\n const Plugin = SvpPlugins.get(pluginConfig.name || plugin);\n\n if (Plugin) {\n // support for new loading method\n this.addPlugin(new Plugin(pluginConfig.config || pluginConfig));\n }\n });\n\n this.model.setup();\n });\n\n // asset can be passed as id or an object\n this.setAsset((options.asset || options.id));\n}\n\n/**\n * this always points to Player object\n */\nfunction onAssetReady() {\n const { config: configuration } = this;\n\n const stream = new Stream(this.asset.attributes);\n const settings = configuration.getSettings();\n const node = document.getElementById(configuration.get('node'));\n\n if (node) {\n clearError(node);\n }\n\n // add hasNext checking\n stream.set('hasNext', NextAsset.hasPlayNext(this.asset));\n\n configuration.setStream(stream);\n\n // cleanup plugins as they maybe not required for new stream\n utils.each(this.plugins, destroyPlugin, this);\n\n // set start time if chapter is provided\n if (configuration.get('chapter')) {\n const chapter = this.asset.getChapter(configuration.get('chapter'));\n\n if (chapter) {\n stream.set('playAhead', chapter.timeline);\n }\n }\n\n // set playahead time\n if (configuration.get('time')) {\n stream.set('playAhead', configuration.get('time'));\n }\n\n if (configuration.hasRecommended()) {\n this.addPlugin(new RecommendedPlugin({\n settings: configuration.getRecommended()\n }));\n }\n\n // stream is not available yet, display countdown\n if (stream.getTimeToStart() > 0) {\n // countdown is disable in preview mode on non live streams\n if (settings.preview !== true || stream.isLive()) {\n this.addPlugin(new CountdownPlugin({\n start: new Date((new Date().getTime()) + stream.getTimeToStart() * 1000)\n }));\n\n // play stream after countdown ends\n this.on('countdown:end', this.play, this);\n }\n }\n\n if (this.asset.getAgeLimit() > -1) {\n this.addPlugin(new AgeLimitPlugin({\n ageLimit: this.asset.getAgeLimit()\n }));\n }\n\n const pulseConfig = configuration.get('pulse');\n\n /**\n * Disable Pulse tracking for mock/ads only playback\n */\n if (pulseConfig && pulseConfig.provider && stream.isMock() === false) {\n this.addPlugin(new PulseStatsPlugin(pulseConfig));\n }\n\n /**\n * Disable SVP Stats for mock\n */\n if (stream.isMock() === false) {\n this.addPlugin(new SvpStatsPlugin({\n vendor: configuration.get('vendor'),\n mode: configuration.get('stats'),\n env: configuration.get('env')\n }));\n }\n\n this.addPlugin(new PausePlugin());\n\n // set stream to display error\n this.model.setStream(stream);\n\n configuration.isStreamPlayable().then(() => {\n // restart asset state\n // this.isCompleted = false;\n this.trigger('assetReady');\n }).catch((code) => {\n this.trigger('assetError', {\n message: statusCode(code),\n code\n });\n\n onError.call(this, {\n type: 'assetError',\n // message is translated in next functions\n message: statusCode(code),\n code\n });\n });\n}\n\n/**\n * Asset fetch failed. Usually happens when network issue occurred\n */\nfunction onAssetError(error) {\n const code = (error && error.status === 404) ? NOT_FOUND : GENERAL_ERROR;\n\n const details = {\n message: statusCode(code),\n code\n };\n\n this.trigger('assetError', details);\n\n // load stylesheet as player is not attached\n onError.call(this, Object.assign({\n type: 'assetFetchError'\n }, details));\n\n logger('SVP').log('error', error);\n\n // display errors in development mode\n if (config.env === 'development') {\n throw error;\n }\n}\n\nconst Player = function(configuration) {\n const options = Object.assign({}, configuration);\n\n // Little bit of monkey patching\n config.api.vendor = options.vendor || 'vgtv';\n config.env = (config.env === 'production') ? 'production' : (options.env || config.env || 'production');\n\n // Restrict player on blacklisted domains\n if (Domain.isBlacklisted(options.vendor)) {\n return;\n }\n\n logger('SVP').log('config', utils.extend({}, options));\n\n /**\n * Allow to embed player without asset\n * This can be useful for preloading player\n * Appnexus vendor is for displaying ads only playback\n */\n if (options.vendor === APPNEXUS_PROVIDER_ID || options.id === -1) {\n options.asset = assetService.getMockAsset();\n delete options.id;\n }\n\n // load locales for player\n // norwegian by default\n if (typeof options.locale === 'string') {\n locale.setTranslations(config.translations(options.locale));\n }\n\n // bind player api to pass it as last argument in adn function\n if (options.adn) {\n options.adn.svpPlayer = this;\n }\n\n // create configuration for SVP player\n this.config = new Config();\n this.listenToOnce(this.config, 'ready', onceConfigReady, this);\n\n this.config.initialize(options);\n\n // set dynamic api url\n if (options.api) {\n config.api.url = options.api;\n }\n\n // allow to override token api url\n if (options.tokenUrl) {\n config.api.tokenUrl = options.tokenUrl;\n }\n\n // allow to override thumbnails api url\n if (options.thumbnailsUrl) {\n config.api.thumbnailsUrl = options.thumbnailsUrl;\n }\n\n /**\n * Available plugins\n * PausePlugin, EndposterPlugin, ChaptersPlugin, ContinuePlayingPlugin\n *\n * Plugins registered by default (can not be removed)\n * CountdownPlugin, AgeLimitPlugin\n * @type {Object}\n */\n this.plugins = {};\n\n /**\n * Check if stream has completed playback\n * @type {boolean}\n */\n this.isCompleted = false;\n\n this.isPlayNextAvailable = true;\n\n // sync browser time with server\n if (!options.serverTime) {\n ServerTime.fetch(config.time);\n }\n\n // fetch config for privileged settings to speedup setup\n if (options.settings) {\n Domain.fetch(options.vendor);\n }\n\n /**\n * Prefetch Pulse tracking library\n */\n if (options.pulse && options.pulse.provider) {\n PulseTracker.load();\n }\n\n logger('SVP').log(function(message) {\n this.on('all', function(event) {\n message(event, Array.prototype.slice.call(arguments, 1));\n });\n }.bind(this));\n};\n\n/**\n * Player public API\n */\nPlayer.prototype = {\n /**\n * Play\n * @param position - seconds (int)\n */\n play(position) {\n // stream will play only if publication date is valid\n if (this.model.getStream().getTimeToStart() < 0) {\n if (position) {\n this.once('play', this.seek.bind(this, position));\n }\n\n this.model.play();\n }\n },\n\n /**\n * Pause playback\n * @param force - toggle playback when param is omitted\n */\n pause(force) {\n // pause with force can start stream which is wrong\n if (this.model.getStream().getTimeToStart() < 0) {\n this.model.pause(!force);\n }\n },\n\n /**\n * Seek in seconds\n * @param time\n */\n seek(time) {\n this.model.seek(time);\n },\n\n /**\n * Destroy the player instance, reset DOM, clean up listeners\n */\n remove() {\n this.stopListening();\n\n if (this.model) {\n this.model.remove();\n }\n },\n\n /**\n * Play next asset by given id\n *\n * @param id\n */\n playNext(id, options = {}) {\n const onNextAssetReady = function () {\n const stream = this.model.getStream();\n\n if (options && options.time) {\n stream.set('playAhead', options.time);\n }\n\n // trick to avoid create of new stream as it's set in assetReady\n this.model.playNext(stream);\n this.isPlayNextAvailable = true;\n }.bind(this);\n\n if (this.isPlayNextAvailable) {\n // complete current stream\n onComplete.call(this, 'playNext');\n\n // block multiple occurences\n this.isPlayNextAvailable = false;\n\n this.once('assetReady', onNextAssetReady, this);\n\n this.once('assetError', function() {\n if (this.model && this.model.player) {\n this.pause();\n }\n\n this.isPlayNextAvailable = true;\n this.off('assetReady', onNextAssetReady);\n }, this);\n\n // trigger play next always after complete to keep event order the same\n // for videos which completed or has been interrupted with play next\n this.trigger('playNext', id, options);\n this.setAsset(id);\n }\n },\n\n /**\n * Set playback volume\n *\n * @param volume - number between 0 and 100\n */\n setVolume(volume) {\n this.model.setVolume(volume);\n },\n\n /**\n * Get playback volume\n * @returns {*}\n */\n getVolume() {\n return this.model.getVolume();\n },\n\n /**\n * Set mute value for playback\n * Toggling this param will preserve volume value\n *\n * @param value\n */\n setMute(value = true) {\n this.model.setMute(value);\n },\n\n /**\n * Get playback volume\n * @returns {*}\n */\n getMute() {\n return this.model.getMute();\n },\n\n /**\n * Get player state\n */\n getState() {\n return this.model.getState();\n },\n\n /**\n * Get stream duration\n *\n * @returns {*}\n */\n getDuration() {\n return this.model.getDuration();\n },\n\n /**\n * Get current playback time\n */\n getCurrentTime() {\n return this.model.getCurrentTime();\n },\n\n /**\n * Get quarter of stream.\n * Can be used for tracking\n *\n * @returns {number}\n */\n getCurrentQuartile() {\n return Math.ceil((this.getCurrentTime() / this.getDuration()) / 0.25);\n },\n\n /**\n * Get device type\n *\n * @returns {*}\n */\n getDeviceType() {\n if (utils.device.isIPhone()) {\n return 'iPhone';\n }\n\n if (utils.device.isIPad()) {\n return 'iPad';\n }\n\n if (utils.device.isAndroid()) {\n return 'android';\n }\n\n return 'desktop';\n },\n\n /**\n * Get current playback provider\n */\n getProvider() {\n return this.model.getProvider();\n },\n\n /**\n * Get current captions list\n */\n getCaptionsList() {\n return this.model.getCaptionsList();\n },\n\n /**\n * Get currently playing captions\n */\n getCurrentCaptions() {\n return this.model.getCurrentCaptions();\n },\n\n /**\n * Set current captions by passing its index\n * Setting 0 will hide all captions\n */\n setCurrentCaptions(index) {\n return this.model.setCurrentCaptions(index);\n },\n\n /**\n * Override captions styles\n * @param styles\n */\n setCaptionsStyles(styles) {\n return this.model.setCaptionsStyles(styles);\n },\n\n /**\n * Get Player DOM Node\n *\n * @returns {*}\n */\n getContainer() {\n return this.model.getContainer();\n },\n\n stop() {\n return this.model.stop();\n },\n\n /**\n * Set asset resource\n * @param asset - Asset model or stream id\n */\n async setAsset(asset) {\n // cleanup old asset\n if (this.asset) {\n this.stopListening(this.asset);\n this.asset.destroy();\n this.asset = null;\n }\n\n // change asset to object if it is a number\n if (utils.isNumber(asset)) {\n // eslint-disable-next-line no-param-reassign\n asset = {\n id: asset\n };\n }\n\n this.asset = (asset instanceof Asset) ? asset : new Asset(asset);\n\n // set vendor for player's default if nothing has been passed\n if (!this.asset.get('vendor')) {\n this.asset.set('vendor', this.config.get('vendor'));\n }\n\n // asset is ready if status field is in response\n if (this.asset.get('status')) {\n onAssetReady.call(this);\n } else {\n try {\n await this.asset.fetch();\n onAssetReady.call(this);\n } catch (error) {\n onAssetError.call(this, error);\n }\n }\n },\n\n /**\n * Get current loaded asset\n * @returns {null}\n */\n getAsset() {\n return this.asset;\n },\n\n /**\n * Add plugin to the player\n *\n * @param plugin\n */\n addPlugin(plugin) {\n const proxyPluginEvent = function(event, ...args) {\n this.trigger(`${plugin.getName()}:${event}`, ...args);\n };\n\n plugin.setPlayer(this);\n this.listenTo(plugin, 'all', proxyPluginEvent, this);\n\n this.plugins[plugin.getName()] = plugin;\n },\n\n /**\n * Get plugin by name\n *\n * @param plugin - name of the plugin\n * @returns {*}\n */\n getPlugin(plugin) {\n return this.plugins[plugin];\n }\n};\n\n/**\n * Checks if device can autoplay stream\n *\n * @returns {*}\n */\nPlayer.canDeviceAutoplay = function () {\n // eslint-disable-next-line no-console\n if (console && console.warn) {\n // eslint-disable-next-line no-console\n console.warn('SVP Player SKD deprecation warning. '\n + 'Due to changes in browser policies, player will detect itself if it can autoplay.');\n }\n\n return utils.device.canAutoplay();\n};\n\nutils.extend(Player.prototype, utils.Events);\n\nexport default Player;\n","const hasAdblock = () => {\n let detected = false;\n\n // create the bait\n try {\n const bait = document.createElement('div');\n bait.setAttribute('class', 'pub_300x250 pub_300x250m pub_728x90 text-ad textAd text_ad text_ads text-ads text-ad-links');\n bait.setAttribute('style', 'width: 1px ! important; height: 1px !important; position: absolute !important; left: -10000px !important; top: -1000px !important;');\n window.document.body.appendChild(bait);\n\n // check if the bait has been affected by an adblocker\n if(window.document.body.getAttribute('abp') !== null\n || bait.offsetParent === null\n || bait.offsetHeight == 0\n || bait.offsetLeft == 0\n || bait.offsetTop == 0\n || bait.offsetWidth == 0\n || bait.clientHeight == 0\n || bait.clientWidth == 0) {\n detected = true;\n } else if(window.getComputedStyle !== undefined) {\n const baitTemp = window.getComputedStyle(bait, null);\n\n if(baitTemp && (baitTemp.getPropertyValue('display') === 'none' || baitTemp.getPropertyValue('visibility') === 'hidden')) {\n detected = true;\n }\n }\n\n // destroy the bait\n window.document.body.removeChild(bait);\n } catch (e) {\n detected = false;\n }\n\n return detected;\n};\n\n\n\nexport default hasAdblock;","import config from 'player/config';\nimport Player from 'player/player';\nimport image from 'utils/image';\nimport utils from 'utils/utils';\nimport hasAdblock from 'utils/adblock-detect';\n\nimport locale from 'player/model/locale';\nimport Domain from 'player/model/domain';\nimport HomadAds from 'player/playback/ads/homad';\n\nimport youbora from 'player/playback/youbora';\nimport SvpPlugins from './player/plugins';\n\nconst SVP = {};\nSVP.Player = Player;\nSVP.Player.Plugins = SvpPlugins;\nSVP.Player.version = config.version;\n\n// by default antiadblock is turned off\nObject.defineProperty(SVP.Player, 'defaults', {\n get() {\n // eslint-disable-next-line no-underscore-dangle\n return this.__defaults || {};\n },\n set(value) {\n // if params are not object then\n // override and force to object\n if (value !== Object(value)) {\n value = {};\n }\n\n Object.defineProperty(SVP.Player, '__defaults', {\n value: value,\n enumerable: false,\n configurable: false,\n writable: false\n });\n }\n});\n\n/**\n * Determine if user is in 5% range of available traffic\n * We set half of 5% because autoplay gives around 2x traffic\n * @type {boolean}\n */\nconst loadYoubora = (options) => {\n // youbora plugin can be disabled completely\n try {\n if (localStorage.svpYoubora === 'true' || (options !== false && Math.random() < 0.025)) {\n youbora.load(options);\n }\n } catch (e) {\n // could not load youbora plugin\n }\n};\n\nconst setLocale = (language = 'no') => {\n locale.setTranslations(config.translations(language));\n};\n\nconst preInitialize = () => {\n image.initialize(utils.extend(config.images, {\n getPixelRatio: utils.device.getPixelRatio\n }));\n\n Domain.initialize(window.location.hostname);\n};\n\nconst postInitialize = () => {\n const { aab } = SVP.Player.defaults;\n\n // set locale for all players\n setLocale(SVP.Player.defaults.locale);\n\n // load homad only for desktop\n // detect if adblock exist for \"auto\" mode\n // force loading when mode is set to \"true\" (forces for all desktops)\n if (utils.device.getDeviceType() === 'desktop' && ((aab === 'auto' && hasAdblock() === true) || aab === true)) {\n HomadAds.initialize();\n }\n\n loadYoubora(SVP.Player.defaults.youbora);\n};\n\nexport default SVP;\nexport { preInitialize, postInitialize };\n"],"sourceRoot":""}