{"version":3,"sources":["webpack://SVP/webpack/bootstrap","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_export.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/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.24.3/node_modules/core-js/modules/_global.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_fails.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_an-object.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_is-object.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_wks.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_to-length.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_core.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_descriptors.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-dp.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_to-object.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_redefine.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_string-html.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_has.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_hide.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_to-iobject.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_strict-method.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_ctx.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_a-function.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_to-integer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-gopd.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-sap.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_array-methods.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_cof.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_defined.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_typed-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_to-primitive.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_meta.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/get.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_property-desc.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_uid.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_library.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_to-absolute-index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-gopn.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-gpo.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_add-to-unscopables.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_validate-collection.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_set-to-string-tag.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_string-trim.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_iterators.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_set-species.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_an-instance.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_redefine-all.js","webpack://SVP/./icons/close.svg","webpack://SVP/./utils/module-loader.js","webpack://SVP/./utils/script-loader.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_iobject.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-pie.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_classof.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_species-constructor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_shared.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_array-includes.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-gops.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_is-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_iter-detect.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_flags.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_regexp-exec-abstract.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_fix-re-wks.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_for-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_user-agent.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_collection.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_typed.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_nativeCreate.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_assocIndexOf.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_getMapData.js","webpack://SVP/./icons/error.svg","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//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_dom-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_wks-ext.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_shared-key.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_enum-bug-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_html.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_set-proto.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_string-ws.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_inherit-if-required.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_string-repeat.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_math-sign.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_math-expm1.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_string-at.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_iter-define.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_string-context.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_is-regexp.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_fails-is-regexp.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_is-array-iter.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_create-property.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/core.get-iterator-method.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_array-fill.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_regexp-exec.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_advance-string-index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_task.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_typed-buffer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_global.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_is-object.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_descriptors.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/isArray.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/isSymbol.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_Symbol.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_root.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_ie8-dom-define.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_wks-define.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-keys-internal.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-dps.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-gopn-ext.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-assign.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_same-value.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_bind.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_invoke.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_parse-int.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_parse-float.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_a-number-value.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_is-integer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_math-log1p.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_iter-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_iter-call.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_array-species-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_array-reduce.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_array-copy-within.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_iter-step.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.regexp.exec.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.regexp.flags.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.promise.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_new-promise-capability.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_promise-resolve.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_collection-strong.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_collection-weak.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_to-index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_own-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_string-pad.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_object-to-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/regenerator-runtime/runtime.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_core.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_fails.js","webpack://SVP/./icons/audio/audio-half.svg","webpack://SVP/./icons/audio/audio-off.svg","webpack://SVP/./icons/audio/audio-on.svg","webpack://SVP/./icons/audio/forward-30.svg","webpack://SVP/./icons/audio/headphones.svg","webpack://SVP/./icons/audio/pause.svg","webpack://SVP/./icons/audio/play.svg","webpack://SVP/./icons/audio/replay.svg","webpack://SVP/./icons/audio/rewind-10.svg","webpack://SVP/./icons/audio-half.svg","webpack://SVP/./icons/av-button.svg","webpack://SVP/./icons/backward-sec.svg","webpack://SVP/./icons/captions.svg","webpack://SVP/./icons/defs.svg","webpack://SVP/./icons/embed.svg","webpack://SVP/./icons/forward-sec.svg","webpack://SVP/./icons/fullscreen-off.svg","webpack://SVP/./icons/fullscreen-on.svg","webpack://SVP/./icons/gallery.svg","webpack://SVP/./icons/info.svg","webpack://SVP/./icons/link.svg","webpack://SVP/./icons/play-backward.svg","webpack://SVP/./icons/play-forward.svg","webpack://SVP/./icons/play-next.svg","webpack://SVP/./icons/playlist.svg","webpack://SVP/./icons/quality.svg","webpack://SVP/./icons/replay.svg","webpack://SVP/./icons/settings.svg","webpack://SVP/./icons/share.svg","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_baseGetTag.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_getNative.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/isObject.js","webpack://SVP/./player/playback/ads/homad-lib.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.24.3/node_modules/@babel/polyfill/lib/index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/@babel/polyfill/lib/noConflict.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/es6/index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.symbol.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_function-to-string.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_enum-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.define-property.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.define-properties.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.get-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.get-own-property-names.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.freeze.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.seal.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.prevent-extensions.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.is-frozen.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.is-sealed.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.is-extensible.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.assign.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.is.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.set-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.object.to-string.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.function.bind.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.function.name.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.function.has-instance.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.parse-int.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.parse-float.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.constructor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.to-fixed.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.to-precision.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.epsilon.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.is-finite.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.is-integer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.is-nan.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.is-safe-integer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.max-safe-integer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.min-safe-integer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.parse-float.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.number.parse-int.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.acosh.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.asinh.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.atanh.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.cbrt.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.clz32.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.cosh.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.expm1.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.fround.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_math-fround.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.hypot.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.imul.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.log10.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.log1p.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.log2.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.sign.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.sinh.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.tanh.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.math.trunc.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.from-code-point.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.raw.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.trim.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.code-point-at.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.ends-with.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.includes.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.repeat.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.starts-with.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.anchor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.big.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.blink.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.bold.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.fixed.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.fontcolor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.fontsize.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.italics.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.link.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.small.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.strike.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.sub.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.string.sup.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.date.now.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.date.to-json.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.date.to-iso-string.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_date-to-iso-string.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.date.to-string.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.date.to-primitive.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_date-to-primitive.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.is-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.from.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.join.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.slice.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.sort.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.for-each.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_array-species-constructor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.filter.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.some.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.every.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.reduce.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.reduce-right.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.index-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.last-index-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.copy-within.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.fill.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.find.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.find-index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.array.species.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.regexp.constructor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.regexp.to-string.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.regexp.match.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.regexp.replace.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.regexp.search.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.regexp.split.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_microtask.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_perform.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.set.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.weak-map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.weak-set.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.array-buffer.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.data-view.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.int8-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.uint8-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.int16-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.uint16-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.int32-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.uint32-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.float32-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.typed.float64-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.apply.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.construct.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.define-property.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.delete-property.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.enumerate.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.get.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.get-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.has.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.is-extensible.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.own-keys.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.prevent-extensions.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.set.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es6.reflect.set-prototype-of.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/array/includes.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.array.includes.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/array/flat-map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.array.flat-map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/_flatten-into-array.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/string/pad-start.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.string.pad-start.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/string/pad-end.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.string.pad-end.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/string/trim-start.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.string.trim-left.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/string/trim-end.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.string.trim-right.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/symbol/async-iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.symbol.async-iterator.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/object/get-own-property-descriptors.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/object/values.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.object.values.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/object/entries.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.object.entries.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/fn/promise/finally.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/es7.promise.finally.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/web/index.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/web.timers.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/web.immediate.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/modules/web.dom.iterable.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/fn/global.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/es7.global.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_export.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_ctx.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_a-function.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_hide.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_object-dp.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_an-object.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_ie8-dom-define.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_dom-create.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_to-primitive.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_property-desc.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/core-js/library/modules/_has.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/whatwg-fetch/fetch.js","webpack://SVP/./svp-player.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_baseGet.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_castPath.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_isKey.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_freeGlobal.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_getRawTag.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_objectToString.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/isObjectLike.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_stringToPath.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_memoizeCapped.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/memoize.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_MapCache.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_mapCacheClear.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_Hash.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_hashClear.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_baseIsNative.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/isFunction.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_isMasked.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_coreJsData.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_toSource.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_getValue.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_hashDelete.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_hashGet.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_hashHas.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_hashSet.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_ListCache.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_listCacheClear.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_listCacheDelete.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/eq.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_listCacheGet.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_listCacheHas.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_listCacheSet.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_Map.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_mapCacheDelete.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_isKeyable.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_mapCacheGet.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_mapCacheHas.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_mapCacheSet.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/toString.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_baseToString.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_arrayMap.js","webpack://SVP//var/lib/jenkins/workspace/SVP_web-player_v3.24.3/node_modules/lodash/_toKey.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/./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/./utils/image.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/keys.js","webpack://SVP/./player/playback/config/captions.js","webpack://SVP/./player/playback/config/jw-youbora.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/audioSkinResolver.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/config-button.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/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/sponsor-label.js","webpack://SVP/./player/plugins/podcast-experiment.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","global","core","hide","redefine","ctx","$export","type","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","P","IS_BIND","B","target","expProto","undefined","Function","U","W","R","ACTIVE","ACTIVE_PREVIEW","NOT_ACTIVE","NOT_ACTIVE_GEOBLOCKED","NOT_FOUND","NOT_ACTIVE_PAST","GENERAL_ERROR","NETWORK_ERROR","TOKEN_FETCH_ERROR","statusMessages","errorCode","translations","en","months","codeToString","STATUS_CODES","admessage","cuetext","skipmessage","skiptext","podmessage","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","forward","loginToListen","subscribeToListen","listen","se","config","version","__BUILD_VERSION__","keys","default","ab","adressa","adressabrandstudio","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","client","appnexus","vmap","ptv","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","window","self","__g","exec","e","isObject","it","TypeError","store","uid","USE_SYMBOL","toInteger","min","__e","a","anObject","IE8_DOM_DEFINE","toPrimitive","dP","f","O","Attributes","defined","has","SRC","$toString","TPL","split","inspectSource","val","safe","isFunction","join","String","fails","quot","createHTML","string","tag","attribute","p1","replace","NAME","test","toLowerCase","length","createDesc","IObject","method","arg","aFunction","fn","that","b","apply","arguments","ceil","floor","isNaN","pIE","toIObject","gOPD","getOwnPropertyDescriptor","KEY","toObject","toLength","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","res","index","result","push","toString","slice","LIBRARY","$typed","$buffer","anInstance","propertyDesc","redefineAll","toIndex","toAbsoluteIndex","classof","isArrayIter","getPrototypeOf","gOPN","getIterFn","wks","createArrayMethod","createArrayIncludes","speciesConstructor","ArrayIterators","Iterators","$iterDetect","setSpecies","arrayFill","arrayCopyWithin","$DP","$GOPD","RangeError","Uint8Array","ArrayProto","Array","$ArrayBuffer","ArrayBuffer","$DataView","DataView","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayFind","arrayFindIndex","arrayIncludes","arrayIndexOf","arrayValues","values","arrayKeys","arrayEntries","entries","arrayLastIndexOf","lastIndexOf","arrayReduce","reduce","arrayReduceRight","reduceRight","arrayJoin","arraySort","sort","arraySlice","arrayToString","arrayToLocaleString","toLocaleString","ITERATOR","TAG","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","CONSTR","TYPED_ARRAY","TYPED","VIEW","$map","allocate","LITTLE_ENDIAN","Uint16Array","FORCED_SET","set","toOffset","BYTES","offset","validate","C","speciesFromList","list","fromList","addGetter","internal","_d","$from","step","iterator","aLen","mapfn","mapping","iterFn","done","$of","TO_LOCALE_BUG","$toLocaleString","proto","copyWithin","start","every","fill","filter","find","predicate","findIndex","forEach","searchElement","includes","separator","map","reverse","middle","some","comparefn","subarray","begin","end","$begin","byteOffset","BYTES_PER_ELEMENT","$slice","$set","arrayLike","src","len","$iterators","isTAIndex","$getDesc","$setDesc","desc","configurable","writable","$TypedArrayPrototype$","constructor","wrapper","CLAMPED","GETTER","SETTER","TypedArray","Base","TAC","FORCED","ABV","TypedArrayPrototype","addElement","data","v","round","setter","$offset","$length","byteLength","klass","$len","iter","concat","$nativeIterator","CORRECT_ITER_NAME","$iterator","of","from","valueOf","META","setDesc","id","isExtensible","FREEZE","preventExtensions","setMeta","w","meta","NEED","fastKey","getWeak","onFreeze","baseGet","path","defaultValue","bitmap","px","$keys","enumBugKeys","max","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","style","display","appendChild","contentWindow","document","open","write","lt","Properties","hiddenKeys","getOwnPropertyNames","ObjectProto","UNSCOPABLES","_t","def","stat","spaces","space","ltrim","RegExp","rtrim","exporter","ALIAS","FORCE","trim","DESCRIPTORS","SPECIES","Constructor","forbiddenField","loadModule","moduleSrc","root","define","amd","Promise","resolve","require","scriptLoader","reject","onSuccess","onError","script","createElement","callback","async","onreadystatechange","onload","readyState","onerror","body","loadScript","cof","propertyIsEnumerable","ARG","T","tryGet","callee","D","copyright","IS_INCLUDES","el","fromIndex","getOwnPropertySymbols","isArray","SAFE_CLOSING","riter","skipClosing","arr","ignoreCase","multiline","unicode","sticky","builtinExec","regexpExec","REPLACE_SUPPORTS_NAMED_GROUPS","re","groups","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","nativeRegExpMethod","fns","nativeMethod","regexp","str","arg2","forceStringMethod","strfn","rxfn","BREAK","RETURN","iterable","navigator","userAgent","forOf","setToStringTag","inheritIfRequired","methods","common","IS_WEAK","ADDER","fixMethod","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","clear","getConstructor","setStrong","Typed","TypedArrayConstructors","nativeCreate","getNative","eq","array","isKeyable","__data__","is","shared","documentElement","check","setPrototypeOf","buggy","__proto__","count","Infinity","sign","x","$expm1","expm1","TO_STRING","pos","charCodeAt","charAt","$iterCreate","BUGGY","returnThis","DEFAULT","IS_SET","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","isRegExp","searchString","MATCH","$defineProperty","getIteratorMethod","endPos","addToUnscopables","iterated","_i","_k","Arguments","re1","re2","regexpFlags","nativeExec","nativeReplace","patchedExec","UPDATES_LAST_INDEX_WRONG","NPCG_INCLUDED","lastIndex","reCopy","match","at","defer","channel","port","invoke","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","run","listener","event","args","nextTick","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","BaseBuffer","abs","pow","log","LN2","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","NaN","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","view","isLittleEndian","intIndex","_b","pack","conversion","ArrayBufferProto","j","$setInt8","setInt8","getInt8","setUint8","bufferLength","getUint8","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","baseGetTag","isObjectLike","freeGlobal","freeSelf","wksExt","$Symbol","names","getKeys","defineProperties","windowNames","getWindowNames","gOPS","$assign","assign","A","K","k","getSymbols","isEnum","y","factories","construct","partArgs","bound","un","$parseInt","parseInt","$trim","ws","hex","radix","$parseFloat","parseFloat","msg","isFinite","log1p","descriptor","ret","original","memo","isRight","to","inc","forced","flags","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","versions","v8","$Promise","isNode","empty","newPromiseCapability","USE_NATIVE","promise","FakePromise","PromiseRejectionEvent","then","isThenable","notify","isReject","_n","chain","_c","_v","ok","_s","reaction","exited","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","console","unhandled","isUnhandled","emit","onunhandledrejection","reason","error","_a","onrejectionhandled","$reject","_w","$resolve","executor","err","onFulfilled","onRejected","capability","$$reject","all","remaining","$index","alreadyCalled","race","PromiseCapability","$$resolve","promiseCapability","$iterDefine","SIZE","getEntry","entry","_f","_l","$has","uncaughtFrozenStore","UncaughtFrozenStore","findUncaughtFrozen","splice","ufstore","number","Reflect","ownKeys","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","isEntries","runtime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","context","Context","_invoke","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","makeInvokeMethod","obj","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","pop","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","getRawTag","objectToString","symToStringTag","baseIsNative","getValue","isLoaded","exportz","conf","u","g","fromCharCode","h","q","fireEvent","createEvent","initCustomEvent","dispatchEvent","track","M","isEnabled","encodeURIComponent","homad_url_prefix_alias","homad_track_key","homad_track_value","message","V","J","I","H","L","N","X","z","Date","appCodeName","appName","appVersion","platform","language","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","getTime","XMLHttpRequest","status","JSON","parse","responseText","substr","setRequestHeader","send","location","hostname","onFailure","globalConfig","clientConfig","clearInterval","_global","_babelPolyfill","warn","$fails","wksDefine","enumKeys","_create","gOPNExt","$GOPS","$JSON","_stringify","stringify","HIDDEN","TO_PRIMITIVE","SymbolRegistry","AllSymbols","OPSymbols","QObject","findChild","setSymbolDesc","protoDesc","sym","isSymbol","$defineProperties","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","replacer","$replacer","symbols","$getPrototypeOf","$freeze","$seal","$preventExtensions","$isFrozen","$isSealed","$isExtensible","FProto","nameRE","HAS_INSTANCE","FunctionProto","$Number","BROKEN_COF","TRIM","toNumber","argument","third","maxCode","first","digits","aNumberValue","$toFixed","toFixed","ERROR","multiply","c2","divide","numToString","acc","fractionDigits","x2","$toPrecision","toPrecision","precision","EPSILON","_isFinite","isInteger","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","Number","sqrt","$acosh","acosh","MAX_VALUE","$asinh","asinh","$atanh","atanh","cbrt","clz32","LOG2E","cosh","fround","EPSILON32","MAX32","MIN32","$abs","$sign","hypot","value1","value2","div","sum","larg","$imul","imul","xn","yn","xl","yl","log10","LOG10E","log2","sinh","tanh","trunc","$fromCodePoint","fromCodePoint","raw","callSite","tpl","$at","point","codePointAt","$endsWith","endsWith","endPosition","search","$startsWith","startsWith","color","size","toJSON","toISOString","pv","$toISOString","lz","num","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","hint","createProperty","upTo","cloned","$sort","$forEach","STRICT","$filter","$some","$every","$reduce","$indexOf","NEGATIVE_ZERO","$find","$flags","$RegExp","CORRECT_NEW","tiRE","piRE","fiU","proxy","advanceStringIndex","regExpExec","$match","maybeCallNative","rx","fullUnicode","matchStr","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","REPLACE","$replace","searchValue","replaceValue","functionalReplace","results","accumulatedResult","nextSourcePosition","matched","position","captures","namedCaptures","replacerArgs","replacement","getSubstitution","tailPos","ch","capture","sameValue","SEARCH","$search","previousLastIndex","callRegExpExec","$min","$push","SUPPORTS_Y","SPLIT","$split","internalSplit","limit","lastLength","output","lastLastIndex","splitLimit","separatorCopy","splitter","unicodeMatching","lim","macrotask","Observer","MutationObserver","WebKitMutationObserver","last","flush","parent","standalone","toggle","node","createTextNode","observe","characterData","strong","add","InternalMap","each","weak","NATIVE_WEAK_MAP","IS_IE11","ActiveXObject","$WeakMap","$isView","isView","fin","viewS","viewT","init","rApply","fApply","thisArgument","argumentsList","rConstruct","NEW_TARGET_BUG","ARGS_BUG","Target","newTarget","$args","propertyKey","attributes","deleteProperty","Enumerate","enumerate","receiver","existingDescriptor","ownDesc","setProto","$includes","flatMap","flattenIntoArray","arraySpeciesCreate","sourceLen","IS_CONCAT_SPREADABLE","depth","mapper","thisArg","element","spreadable","targetIndex","sourceIndex","mapFn","padStart","$pad","WEBKIT_BUG","padEnd","trimLeft","trimRight","getOwnPropertyDescriptors","getDesc","$values","onFinally","MSIE","boundArgs","$task","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","collections","explicit","Collection","IS_WRAP","virtual","support","Blob","viewClasses","isArrayBufferView","normalizeName","normalizeValue","iteratorFor","items","shift","Headers","headers","append","header","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","rejected","arrayBuffer","readAsText","chars","readArrayBufferAsText","formData","decode","json","oldValue","Request","input","options","upcased","credentials","signal","toUpperCase","referrer","form","decodeURIComponent","Response","bodyInit","statusText","clone","response","redirectStatuses","redirect","DOMException","stack","fetch","request","aborted","xhr","abortXhr","abort","rawHeaders","getAllResponseHeaders","line","parts","responseURL","ontimeout","onabort","withCredentials","responseType","removeEventListener","polyfill","loadSvpLibrary","SVP","preInitialize","postInitialize","loadJwPlayer","PLAYER_LIB","moduleLoader","jwplayer","onReady","onSvpPlayerReady","library","initEvent","castPath","toKey","isKey","stringToPath","reIsDeepProp","reIsPlainProp","objectProto","nativeObjectToString","isOwn","unmasked","memoizeCapped","rePropName","reEscapeChar","quote","subString","memoize","func","cache","MapCache","resolver","memoized","Cache","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","Hash","ListCache","Map","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","toSource","reIsHostCtor","funcProto","funcToString","reIsNative","coreJsData","maskSrcKey","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","assocIndexOf","other","getMapData","baseToString","arrayMap","symbolProto","symbolToString","iteratee","idCounter","_","MAX_ARRAY_INDEX","getLength","isEmpty","isString","isArguments","uniqueId","prefix","Events","eventSplitter","eventsApi","events","opts","on","internalOn","listening","_events","onApi","_listeners","listenTo","_listenId","listeningTo","_listeningTo","thisId","objId","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","isIOS","isAppleIOS","isIPhone","isSafari","isAndroidNative","isChrome","isFirefox","isIE","isDesktop","isMobile","isTablet","isSamsungInternet","isWindowsPhone","getChromeVersion","getPixelRatio","devicePixelRatio","getFlashVersion","flash","plugins","description","GetVariable","getDeviceType","canAutoplay","isMergeableObject","cloneIfNecessary","optionsArgument","deepmerge","defaultArrayMerge","destination","arrayMerge","mergeObject","jwUtils","utils","jwUnderscore","extend","merge","ajax","isUndefined","isNumber","omit","createNode","addStyleSheet","addClass","removeClass","throttle","template","tmpl","getElementById","innerHTML","device","durationToSeconds","hours","minutes","shareTimeToSeconds","seconds","compact","hasFlash","zeroPad","escape","escapeMap","getTimeFormatted","timestamp","inherit","model","protoProps","staticProps","child","Surrogate","__super__","getScrollSnapPrefix","scrollSnapSupport","jsonToUrl","counters","block","itemKey","localStorage","getItem","unshift","ServerTime","_time","_responseTime","resolveRequest","SimpleModel","attr","oldVal","Category","initialize","additional","background","main","image","logo","playerLogo","playerLogoImage","relatedExperiments","experiment","traffic","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","destroy","getAgeLimit","isSponsored","sponsored","getCategoryTitle","title","getNextAssetId","getNextAssetSource","getChapter","chapterIndex","getChapters","getThumbnail","getTitle","getCategory","getEndpoint","categoryId","getNextFromEpisodeList","assetId","assets","getNextEpisode","engine","getList","VIDEO","requestNumber","currentServerId","getServer","getImageTransform","serversAmount","getListEndpoint","params","filters","queryParams","getById","getByIds","getClosestAsset","order","publishedDate","getMockAsset","streamType","streamUrls","hls","URL","createObjectURL","streamConfiguration","properties","getImageQuality","pixelRatio","imageId","width","height","cacheKey","transform","maxDimension","idLen","transformType","transformSizes","dimensions","normalizeTransformSize","curr","getClosestSize","getImageSrc","extension","Stream","streams","hds","mp4","mediaType","assetType","snapshots","captions","externalId","duration","is360","pseudostreaming","audioStream","audio","disableNextVideo","showAds","cuePoints","getId","hasProperty","getDuration","getCuePoints","isSecure","isMock","isGeoblocked","isLive","wasLive","isActive","isPast","isFuture","hasHds","isDisabledNextVideo","hasPlayableSource","getTimeToStart","isOnHttp","protocol","streamUrl","getPoster","getPosterSrc","containerWidth","getSnapshots","hasSnapshots","getCaptions","hasMp4Streams","hasAudioOnlyStream","getMp4Streams","stream","streamData","bitrate","getPlaybackTime","hasCreatives","getExternalId","getDisplayType","hasAdsDisabled","isAudio","getKey","ExcludedAssets","getAll","getStorage","setItem","excludedAssets","useMlEngine","experimentsList","seed","randomIndex","experimentVariant","experimentName","createResponse","hasPlayNext","asset","includeCategory","hasNextInCategory","fetchNextFromSeries","seriesService","fetchNextFromCategory","assetService","fetchNextById","fetchNextFromRelatedEngine","relatedService","relatedHelpers","getNext","nextAssetId","fetchNextParams","experiments","fetchNext","translate","substitute","setTranslations","getMonthName","date","getMonth","prop","capitalizeFirstLetter","isDomainInArray","origin","domainBeginning","Domain","na","vendors","getPermissions","isBlacklisted","fetchToken","isFetching","expire","Token","assetAccess","maxBitrate","configuration","isValid","query","expiry","getCountryCode","buildQueryParamsString","queryObject","tagOptions","globalOptions","countryCode","supplyType","publisherName","slotIds","preroll","midroll","postroll","JwAdsConfig","setParams","getTag","adSlotConfig","adConfig","appnexusTag","adLabel","getConfig","getParams","memberId","member","getJwAdSchedule","adSlots","adsConfig","hasNext","cuePoint","getAdsConfig","schedule","getAdPlacements","adPlacements","globalParams","placements","placementId","appnexusTagBuilder","parseAdPlacements","getClientConfig","adn","svpAdConfig","svpPlayer","logger","adSchedule","adOptions","getLiveMidrollTag","maxDuration","vmaxduration","createMidroll","startTime","hasEntered","onEnterCallback","setTime","onEnter","getPlaylist","minDvrWindow","addPlaylistMetadata","playlistItem","mediaId","mediaid","starttime","addProgressiveMediaSources","mp4Stream","sources","label","file","addSnapshots","tracks","addCaptions","caption","add3dSupport","stereomode","preload","advertising","autoplayMuted","autoplayadsmuted","vpaidcontrols","preloadAds","adschedule","addAppnexusAds","globals","defaults","heading","canAutostart","autoplay","autostart","mute","skin","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","js_beautify","prettier","playerContainer","container","clientWidth","clientHeight","isAudioWithoutCustomTitle","getDescription","getToken","hasValidToken","getStreamUrl","isStreamPlayable","getSettings","catch","getJwConfig","abouttext","aboutlink","localization","jwConfig","addPlaylist","getPlaylistSettings","addSharing","native","renderCaptionsNatively","setCaptions","setPlaybackOptions","content_id","owner","addYoubora","jw","hasRecommended","getRecommended","permissions","freeze","Viewport","current","labels","update","newIndex","compare","comp","binarySearch","newBreakpoint","getViewportByIndex","currentBreakpoint","getTagUrl","potOffset","getAdPotTag","parseHomadEvent","details","detail","containerId","adMessages","SvpPlayer","Player","isHomadLoaded","homadConfig","skipable","skipAdOnContextChange","runInsideContainer","adjustAdVolumeToContentPlayer","postrollUseCompleteEvent","muteButton","audioIcon","unmuteButton","audioMuted","playButton","playIcon","pauseButton","pauseIcon","skipableButton","skipButton","prerollAdTag","midrollAdTag","postrollAdTag","aabConfig","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","playerClassList","classList","adStarted","useClasses","setAdPlaying","setAdComplete","getPlaybackState","volumeBtn","float","adjustVolumePosition","onAdError","hasAdBlocked","adPlayerLoading","pauseReason","onAdBreakStart","getCurrentTime","adposition","forwardEvent","eventName","adPlaying","HomadAds","adPosition","adId","impression","impressionURL","mutations","mutation","nodes","addedNodes","video","childList","canDeviceAutoplay","supposedCurrentTime","onSeeking","onTimeUpdate","seeking","videoElement","loadedStylesheets","href","rel","loadStylesheet","forwardIcon","forward30Icon","audioSkinResolver","useAudioSkin","Boolean","seekForward","getPosition","seek","getControls","getStream","forwardTooltip","displayControl","cover","forwardButton","forwardControl","durationInfo","addButton","controls","displayStyle","setAttribute","innerText","iconsMap","icons","avButton","audioIconsMap","audioIcons","defsLoaded","loadIcons","isAudioStream","replaceableIconsMap","customIcon","selector","replaceableIcons","querySelectorAll","replaceableIcon","svpIcon","getAttribute","replaceChild","contains","submenu","right","offsetWidth","offsetLeft","copyToClipboard","focus","select","execCommand","hasMediaId","getSharingLink","updateElement","previousSibling","replaceElement","sourceEl","newEl","svpPlayerModel","handleAppnexusClass","skinLoader","loader","styleLoader","svpSkin","settingsMenu","icon","infoNode","dataset","tip","isPrettierLoaded","configButton","sharingBox","containerClass","levels","levelsIcon","PlayerModel","isInitalized","isStopped","viewport","onViewportChange","bindJwMethod","getAdPosition","slotId","pre","mid","post","onPlaybackEndAvailable","playbackEnd","onTime","eventData","setup","preventAdSeeking","accountCode","enableAnalytics","onPlaylistItemLoad","onPlay","onPause","onComplete","onPlayerResize","onViewable","onAutostartNotAllowed","onMeta","onMetadataCueParsed","getCaptionsList","sequence","xml","adSelector","adData","podcount","parseAdData","playNext","togglePlayback","streamPoster","playbackType","getVolume","setVolume","getMute","setMute","getState","nextStream","isAdPlaying","loadStream","force","getAdBlock","getProvider","provider","playerCaptions","setCurrentCaptions","captionsIndex","playlistItemId","onFirstFrameLoad","playbackEndTime","viewable","currentViewport","previousViewport","slotDuration","onTimeChange","adTag","playAd","content","skipAd","TXXX","insertAd","cancelAd","playReason","forwardedMethods","HomadAdsJw","proxyMethod","sourceMethod","Eventable","BackboneEvents","copyProperties","PluginModel","Plugins","register","getName","CustomPluginModel","createPluginClass","scripts","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","getViewable","timerId","onSeek","onResumeClick","render","adTagOptions","appnexusAdContainerId","pauseTemplate","closeIcon","closeButton","stopPropagation","AgeLimitPlugin","SponsorLabelPlugin","sponsor","pluginName","adFrom","assertUppercased","actual","expected","chooseVariant","variants","rangeNumber","winner","Percentage","percentage","prepareVariantsForExperiment","variantIds","experimentMetadataKeys","isLoginVariantType","variant","Type","PodcastExperimentPlugin","loginUrl","subscriptionUrl","articleUrl","OfferButton","isSubscriptionVariantType","useExtendedVariant","getHeight","buttonText","getButtonText","uiElementId","getUiElementId","pulseStatsPlugin","PulseStats","trackEngagement","productType","playbackEvents","Offer","OfferHeader","OfferPreamble","redirectUrl","preventDefault","experimentInfo","experimentOverlay","leadingZeros","numValue","numLen","CountdownPlugin","liveDOM","countdownDOM","countdownTemplate","intervalId","getDateData","repaint","liveDate","isCountdownActive","sec","currentState","getDate","getHours","getMinutes","endDate","diff","dateData","years","days","mapResponse","getEngine","fetchByIds","fetchFromRelatedEngine","Recommended","ml","recommendedList","nextAssetSource","disableNext","getThumbnailUrl","initSnapScroll","scrollSnapPrefix","gridItem","getByClass","onGridItemClicked","onPlaybackStart","recommended","getAsset","gridItemsReady","grid","getItems","getNextAsset","onInitialize","fetchDuration","onPlaybackComplete","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","trackers","pulse","getTracker","storedTracker","PROVIDER_TRACKER_ID","tracker","AdEvents","adSequencePosition","adSequenceCount","beforeUnload","onAdSlotComplete","onPlaylistItem","onAdSlotStart","onAdStarted","onAdProgress","onAdFinished","onAdPause","onAdPlay","onPauseAdVisible","onHomadEvent","adIds","adID","abbAdPlayed","onHdEvent","slotData","previousPosition","sendStopEvent","PlaybackEvents","watchData","previousTime","session","createSession","beforeStreamStart","onBeforeUnload","playMethod","onAssetPlay","onPlayNext","onLiveTime","onRecommendedPlay","eventInterval","wasViewed","previousAssetId","eventTime","trackTimeEvent","playbackSource","onRecommendedVisible","CategoryTree","categories","parentId","instances","getMediaAssetId","PulseStatsPlugin","decorator","embed","adSequenceDuration","categoryPath","categoryTree","getPath","getCategoryPath","playerAsset","resolveTracker","adEvents","uiEvents","UiEvents","PulseTracker","onAdEvent","onPlaybackEvent","onUiEvent","onAdMeta","onHomadAdMeta","textContent","intent","trackingData","muted","fullScreen","getFullscreen","adBlock","mediaAssetId","toLocaleLowerCase","accessControl","access","getTags","stories","getStories","originAssetId","destroyPlugin","clearError","previousErrorNode","displayError","errorIcon","posterSrc","errorNode","translatedMessage","statusCode","errorDetails","isCompleted","onPlayerEvent","callFunction","onceConfigReady","Provider","handleReady","handleError","SvpPlugins","pluginConfig","addPlugin","setAsset","onAssetReady","NextAsset","isExperiment","loggedIn","experimentId","isPodcast","experimentRange","sessionStorage","pulseConfig","onAssetError","isPlayNextAvailable","serverTime","getCurrentQuartile","getCurrentCaptions","setCaptionsStyles","styles","setPlayer","getPlugin","hasAdblock","detected","bait","offsetParent","offsetHeight","offsetTop","getComputedStyle","baitTemp","getPropertyValue","__defaults","aab","setLocale","svpYoubora","loadYoubora"],"mappings":"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AAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,IACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,EAAQ,KACR,E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,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,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,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,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,GAAI,IAAK,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,MAAO,CAAElQ,KAAM,c,6oCCEp3J,ICFQ6mD,GAAeC,GAAwBjiD,GAAQkiD,GAAWC,GAAmBC,GDY/EC,GAAkB,SAAC,GAAkC,QAAhCC,cAAgC,MAAvB,GAAuB,MAAnBC,eAAmB,MAAT,GAAS,EACjDC,EAAc,GAAIF,GAMxB,OAJIC,EAAQl7C,OAAS,GACjBm7C,EAAYh5C,KAAZ,kBAA4B+4C,EAAQ/7C,KAAK,OAG7C,iBAAiBg8C,EAAYn7C,OAAS,EAArB,WAA6Bm7C,EAAYh8C,KAAK,MAAS,KAwD7D,IACXi8C,QAtDS,8BAAG,+BAAAn9C,EAAA,6DAASvD,EAAT,EAASA,OAAQ2/C,EAAjB,EAAiBA,QAAjB,kBAA+B//C,GAC3CI,EAdA,kBAeiB2/C,EAfjB,uBANmB,CACf,WAAY,WAAY,YAAa,aAAc,UACnD,qBAAsB,YAAa,cAAe,YAClD,WAAY,SAAU,OAAQ,WAGYl7C,KAAK,QAavC,2CAAH,sDAuDTk8C,SAlDU,8BAAG,iCAAAp9C,EAAA,6DAASvD,EAAT,EAASA,OAAQm1C,EAAjB,EAAiBA,IAAjB,SACUv1C,GACnBI,EACAsgD,GAAgB,CACZC,OAAQ,CAAC,SAAD,OAAUpL,EAAI7vC,SACtBk7C,QAAS,CAAC,YAAD,OAAarL,EAAI1wC,KAAK,UAL1B,cACPipC,EADO,yBAUNA,EAAS+Q,WAAa/Q,EAAS+Q,UAAUmB,QAAU,IAV7C,2CAAH,sDAmDVgB,gBAtCiB,8BAAG,6CAAAr9C,EAAA,6DACpBvD,EADoB,EACpBA,OAAQ6gD,EADY,EACZA,MAAOpB,EADK,EACLA,WAAYE,EADP,EACOA,QAASmB,EADhB,EACgBA,cAE9B3gD,EAAWmgD,GAAgB,CAC7BC,OAAQ,CACJ,UACA,kBAEW,SAAVM,EAAA,gBAA4BC,EAAgB,GAA5C,iBAA4DA,EAAgB,IAGjFN,QAAS,CAAC,eAAD,OACUf,MAZH,SAgBG7/C,GACnBI,EACAG,GAlBgB,aAgBdutC,EAhBc,SAuBJA,EAAS+Q,WAAa/Q,EAAS+Q,UAAUmB,QAvBrC,wBAyBIlS,EAAS+Q,UAAUmB,OAzBvB,KAyBTrB,EAzBS,OA2BCA,EAAUvsC,KAAO2tC,EA3BlB,yCA4BLpB,GA5BK,gCAgCb,MAhCa,4CAAH,sDAuCjBwC,aD7EiB,iBAAO,CACxB/uC,GAAI,EACJ8iB,OAAQ,SACRksB,WAAY,OACZC,WAAY,CACRC,IAAKC,IAAIC,gBAAgBpB,KAG7Bz+C,OAAQ,CACJ66C,KAAM,MAGViF,oBAAqB,CACjBC,WAAY,IAEhBnD,SAAU,MEQV,SAASoD,GAAgBC,GACrB,OAAQA,GAAc,EAAK,GAAK,GAxBpCrB,GAGW,SAASsB,GACZ,OAAIA,GAHqB,IAOtBxB,KACIC,KAAoBG,KACnBH,IAAmB,GAGvBD,GAAgB,EAChBC,MAGJD,KAEOwB,EAAQv8C,QAAQ,OAAQjH,GAAOuD,QAAQ0+C,MAdnC,IA6CnBE,GAAqB,WACjB,IAAIvP,EAAQ,GAEZ,OAAO,SAASx4C,EAAKqpD,EAAOC,GACxB,IAAIH,EAXDhhD,KAAK0S,IAAI,EAAG1S,KAAK6C,IAAI,EAAGpF,GAAOw5C,kBAY9BmK,EAAWvpD,EAAMqpD,EAAQC,EAASH,EAGtC,GAAG3Q,EAAM+Q,GACL,OAAO/Q,EAAM+Q,GASjB,IANA,IAImCC,EAAWC,EAJ1C9vC,EAAK3Z,EAAI+L,MAAM,KACftN,EAAI,EACJirD,EAAQ/vC,EAAG1M,OACX08C,EAAiBL,EAASD,EAAS,YAAc,aACjDO,EAAiBhkD,GAAOwD,MAEtB3K,EAAIirD,GAAO,CAGb,KAFAE,EAAiBA,EAAejwC,EAAGlb,KAG/B,MAAM,IAAIo2B,MAAM,wCAA0C70B,GAG9DvB,IAMJgrD,EAAkC,eAAlBE,EAAkCN,EAAQC,EAG1D,IAAIO,EAzDZ,SAAgCpkB,EAAM0jB,GAElC,MAAO,CACH1jB,EACAyjB,GAAgBC,IAqDCW,CAjDzB,SAAwBF,EAAgBH,GACpC,OAAOG,EAAep3C,QAAO,SAAUxO,EAAM+lD,GACzC,OAAQ5hD,KAAK+f,IAAI6hC,EAAON,GAAgBthD,KAAK+f,IAAIlkB,EAAOylD,GAAgBM,EAAO/lD,KA+CvCgmD,CANxCJ,EAAiBA,EAAeD,GAIhCF,GAA8BN,GAEwDA,GAStF,OAJAK,GADAA,EAA+B,cAAlBG,EAAiC,IAAM,IAC5BE,EAAW,GAAK,IAAMA,EAAW,GAEzDrR,EAAM+Q,GAAYC,EAEXA,GA3CM,GA+DNxF,OAhBP,CACJJ,WAAY,SAASnP,GACjB7uC,GAAS6uC,EACTuT,GAAgBvT,EAAQtrC,QAAQ8D,OAAS,EACzC26C,GAAgB,EAChBC,GAAkB,GAEtBoC,YAAa,SAASb,EAASppD,EAAKqpD,EAAOC,GACvC,GAAGF,EAAS,CACR,IAAIc,GAA0C,IAA7Bd,EAAQphD,QAAQ,UAA+C,IAA7BohD,EAAQphD,QAAQ,QAAiB,OAAS,GAC7F,OAAO8/C,GAAUsB,GAAWc,EAAY,QAAUnC,GAAkB/nD,EAAKqpD,EAAOC,GAEpF,OAAO,OC1Gba,GAAS,SAAU1V,GACrBxsC,KAAKklC,WAAa,CACdxzB,GAAI,GAGR1R,KAAK27C,WAAWnP,IAGpB0V,GAAO9pD,UAAY,CACfujD,WADe,SACJprC,GACP8nC,EAAME,OAAOv4C,KAAKklC,WAAYllC,KAAK00B,MAAMnkB,KAS7CmkB,MAXe,SAWTnkB,GACF,IAAMrJ,EAAS,CACXwK,GAAInB,EAAKmB,GACThS,OAAQ6Q,EAAK7Q,OACb++C,MAAOluC,EAAKkuC,MAEZ0D,QAAS,CACLvB,IAAKrwC,EAAKowC,WAAWC,IACrBwB,IAAK7xC,EAAKowC,WAAWyB,IACrBC,IAAK9xC,EAAKowC,WAAW0B,IAAM,CAAC9xC,EAAKowC,WAAW0B,KAAO,IAEvD7tB,OAAQjkB,EAAKikB,OACb17B,KAAMyX,EAAKmwC,WACX4B,UAAW/xC,EAAKgyC,UAChBxB,oBAAqBxwC,EAAKwwC,oBAE1B9/C,OAAQ,CACJ66C,KAAMvrC,EAAKtP,OAAO66C,KAClB0G,UAAWjyC,EAAKtP,OAAOuhD,WAAa,MAGxCC,SAAUlyC,EAAKkyC,UAAY,GAE3BhF,YAAa,CACTjwC,MAAO,KACPkB,IAAK,MAGT9S,SAAU,CACN6S,MAAO,KACPC,IAAK,MAGTyuC,YAAa5sC,EAAK4sC,aAAe,GACjCuF,WAAYnyC,EAAKmyC,YAAc,KAC/B7E,SAAUttC,EAAKstC,UAgDnB,OA7CIttC,EAAKoyC,WACLz7C,EAAOy7C,SAAWpyC,EAAKoyC,SAAW,KAGlCpyC,EAAKisC,WACLt1C,EAAO07C,MAAgC,SAAxBryC,EAAKisC,SAASoG,OAI7BryC,EAAKowC,WAAWkC,kBAChB37C,EAAOi7C,QAAQE,IAAMn7C,EAAOi7C,QAAQE,IAAIpxC,OAAOV,EAAKowC,WAAWkC,kBAG/DtyC,EAAKqrC,YAAcrrC,EAAKqrC,WAAWY,WAC/BjsC,EAAKqrC,WAAWY,SAASsG,cACzB57C,EAAOi7C,QAAQY,MAAQxyC,EAAKqrC,WAAWY,SAASsG,aAEpD57C,EAAO87C,iBAAmBzyC,EAAKqrC,WAAWY,SAASwG,kBAInDzyC,EAAKktC,cACLv2C,EAAOu2C,YAAc,CACjBjwC,MAAQ+C,EAAKktC,YAAYjwC,MAAQ+C,EAAKktC,YAAYjwC,MAAQ,KAC1DkB,IAAM6B,EAAKktC,YAAY/uC,IAAM6B,EAAKktC,YAAY/uC,IAAM,OAIxD6B,EAAK3U,WACLsL,EAAOtL,SAAW,CACd6S,MAAO8B,EAAK3U,SAAS6S,MACrBC,IAAK6B,EAAK3U,SAAS8S,MAKvB6B,EAAKpT,WACL+J,EAAO+7C,QAAU1yC,EAAKpT,SAAS8lD,SAInC/7C,EAAOg8C,UAAY3yC,EAAK2yC,UAIjBh8C,GAGXi8C,MAjGe,WAkGX,OAAOnjD,KAAK3I,IAAI,OAGpB0lD,UArGe,WAsGX,OAAO/8C,KAAK3I,IAAI,WAGpB4nD,YAzGe,WA0GX,OAAOj/C,KAAK3I,IAAI,aAGpB+rD,YA7Ge,SA6GHjrD,GACR,OAAO6H,KAAK3I,IAAI,uBAAuB2pD,WAAWjhD,QAAQ5H,IAAa,GAQ3EkrD,YAtHe,WAuHX,OAAOrjD,KAAK3I,IAAI,aAGpBisD,aA1He,WA2HX,OAAOtjD,KAAK3I,IAAI,cAOpBksD,SAlIe,WAmIX,OAAOvjD,KAAKojD,YAAY,iBAO5BI,OA1Ie,WA2IX,MAA4B,SAArBxjD,KAAK3I,IAAI,SAOpBosD,aAlJe,WAmJX,OAAOzjD,KAAKojD,YAAY,eAG5BM,OAtJe,WAuJX,MAA4B,SAArB1jD,KAAK3I,IAAI,SAGpBssD,QA1Je,WA2JX,MAA4B,YAArB3jD,KAAK3I,IAAI,SAGpBusD,SA9Je,WA+JX,MAA8B,WAAvB5jD,KAAK3I,IAAI,YAA2B2I,KAAK6jD,UAGpDC,SAlKe,WAmKX,SAAQ9jD,KAAK3I,IAAI,iBAAkB2I,KAAK3I,IAAI,eAAemW,QACrDxN,KAAK3I,IAAI,eAAemW,OAAQ,IAAIolB,MAAO0B,WAGrDuvB,OAvKe,WAwKX,SAAQ7jD,KAAK3I,IAAI,iBAAkB2I,KAAK3I,IAAI,eAAeqX,MACpD1O,KAAK3I,IAAI,eAAeqX,KAAM,IAAIkkB,MAAO0B,WAGpDyvB,OA5Ke,WA6KX,OAAO/jD,KAAKJ,OAAO,OAAOG,QAAQ,QAAU,GAGhDikD,oBAhLe,WAiLX,QAAShkD,KAAK3I,IAAI,qBAOtB4sD,kBAxLe,WAyLX,QAAIjkD,KAAKkkD,iBAAmB,IAAMlkD,KAAK4jD,aAO3ChkD,OAhMe,SAgMR8gD,GACH,IAAMyD,EAAWhiD,OAAO4yB,SAASqvB,SAASr/C,cAAcu4B,WAAW,SAC7DxkC,EAAO4nD,EAAW37C,cAEpBs/C,EAAYrkD,KAAK3I,IAAI,WAAWyB,GAMpC,OAJIu/C,EAAMiB,OAAO1C,QAAUuN,IACvBE,EAAYA,EAAUz/C,QAAQ,QAAS,SAGpCy/C,GAGXC,UA7Me,WA8MX,OAAOtkD,KAAK3I,IAAI,UAAUykD,MAS9ByI,aAvNe,SAuNFC,GACT,OAAOzI,GAAMiG,YAAYhiD,KAAKskD,YAAa,SAAUE,IAOzDC,aA/Ne,WAgOX,gBAAU9mD,IAAO2B,IAAIG,cAAgBO,KAAK+8C,YAA1C,mBAAgE/8C,KAAKmjD,UAMzEuB,aAtOe,WAuOX,OAAwC,OAAjC1kD,KAAK3I,IAAI,UAAUmrD,WAQ9BmC,YA/Oe,WAgPX,OAAO3kD,KAAK3I,IAAI,aAAe,IAQnCutD,cAxPe,WAyPX,OAAO5kD,KAAK3I,IAAI,WAAWgrD,IAAIr9C,OAAS,GAG5C6/C,mBA5Pe,WA6PX,MAA4C,iBAA9B7kD,KAAK3I,IAAI,WAAW0rD,OAGtC+B,cAhQe,WAiQX,IAAM3C,EAAU,GAgBhB,OAbIniD,KAAK4kD,iBACLvM,EAAM1U,KAAK3jC,KAAK3I,IAAI,WAAWgrD,KAAK,SAAC0C,GACjC,IAAMC,EAAaD,EAAOjhD,MAAM,KAAK2rB,MAAM7qB,QAAQ,OAAQ,IAAId,MAAM,KAErEq+C,EAAQh7C,KAAK,CACTpO,OAAQgsD,EACR3D,MAAO4D,EAAW,GAClB3D,OAAQ2D,EAAW,GACnBC,QAASD,EAAW,QAKzB7C,GASX+B,eA1Re,WA2RX,OAAQlkD,KAAK3I,IAAI,eAAemW,MAAQ2tC,EAAW7mB,WAAa,KAWpE4wB,gBAtSe,SAsSCpkB,GACZ,IAAMllC,EAAWoE,KAAK3I,IAAI,YAE1B,MAAiB,UAAbypC,EACI9gC,KAAK3I,IAAI,aAAe,EACjB2I,KAAK3I,IAAI,aAGZuE,EAAS6S,MAAQ,EAAK7S,EAAS6S,MAAQ,KAGlC,QAAbqyB,GAAsBllC,EAAS8S,IAAM,EAC9B9S,EAAS8S,IAGb,MAQXy2C,aA7Te,WA8TX,OAA0B,IAAnBnlD,KAAK3I,IAAI,OAOpB+tD,cArUe,WAsUX,OAAOplD,KAAK3I,IAAI,eAQpBguD,eA9Ue,WA+UX,OAAIrlD,KAAK4iD,QACE,MAGJ,MAMXA,MAzVe,WA0VX,OAA6B,IAAtB5iD,KAAK3I,IAAI,UAMpBiuD,eAhWe,WAiWX,OAA+B,IAAxBtlD,KAAK3I,IAAI,YAMpBkuD,QAvWe,WAwWX,MAAiC,UAA1BvlD,KAAK3I,IAAI,eAIxBghD,EAAME,OAAO2J,GAAO9pD,UAAWwkD,GAEhBsF,UCpXTsD,GAAS,SAAS9lD,GACpB,gBATwB,qBASxB,YAAiCA,IA4BtB+lD,GAzBQ,CACnBhiB,IADmB,SACf/jC,EAAQgS,GACR,IAAI4tC,EAASt/C,KAAK0lD,OAAOhmD,GAErBgS,KAC4B,IAAxB4tC,EAAOv/C,QAAQ2R,KAEf4tC,EAAOpE,QAAQxpC,GAEf4tC,EAASA,EAAO30B,OAAO,EAAG,KAG9B3qB,KAAK2lD,aAAaC,QAAQJ,GAAO9lD,GAAS+0B,KAAKuB,UAAUspB,MAIjEoG,OAhBmB,SAgBZhmD,GACH,OAAO+0B,KAAKC,MAAM10B,KAAK2lD,aAAa1K,QAAQuK,GAAO9lD,MAAa,IAGpEimD,WApBmB,WAqBf,OAAOxjD,OAAO64C,eC4BP,GA3DO,SAACt7C,EAAQ2/C,EAASC,GACpC,IAAMuG,EAAiBJ,GAAeC,OAAOhmD,GAG7C,IAAK4/C,EACD,OAAO,KAKX,IAFA,IAAIrB,EAAY,KAEPznD,EAAI,EAAGA,EAAI8oD,EAAOt6C,OAAQxO,GAAK,EAGpC,IAFAynD,EAAYqB,EAAO9oD,IAAM,IAEXkb,KAAO2tC,IAAqD,IAA1CwG,EAAe9lD,QAAQk+C,EAAUvsC,IAG7D,OADA+zC,GAAehiB,IAAI/jC,EAAQu+C,EAAUvsC,IAC9BusC,EAIf,OAAO,MAuCI,GAnBG,SAAC6H,EAAaC,EAAiBC,GAC7C,IAZ8BC,EACxB9f,EAWA+f,EAAoBhmD,KAAK0F,MAAa,IAAPogD,GAErC,IAAoB,IAAhBF,EACA,MAAO,UAGX,GAAIC,EAAgB/gD,OAAS,EAAG,CAC5B,IAAMmhD,GAnBoBF,EAmBgCC,GAlBxD/f,EAkBuC4f,EAlBvBn4C,MAAK,SAAC0uC,GAAD,OAAU2J,GAAe3J,EAAK9uC,OAASy4C,EAAc3J,EAAK5tC,SAEtEy3B,EAAQpvC,KACZovC,EAAQpvC,KAIZ,MAaH,GAAIovD,EACA,iCAA2BA,GAInC,MAAO,c,gUC/CX,IAAMC,GAAiB,SAAC,GAAD,IAAGnI,EAAH,EAAGA,UAAWllD,EAAd,EAAcA,OAAd,MAA4B,CAC/CklD,UAAWA,EAAY,IAAInB,GAAMmB,GAAa,KAC9CllD,WAqPWy7C,GAlPE,CAQb6R,YARa,SAQDC,EAAOC,GACf,MAAgC,SAA5BD,EAAMjvD,IAAI,kBAIVivD,EAAMjvD,IAAI,aAAaqa,KAIH,IAApB60C,GACOvmD,KAAKwmD,kBAAkBF,KAYtCE,kBA9Ba,SA8BKF,GACd,IAAMzI,EAAWyI,EAAMrH,cAEvB,GAAIpB,EAAU,CACV,GAAIA,EAASnB,WACT,OAAO,EAGX,GAAImB,EAASxmD,IAAI,qBACb,OAAO,EAIf,OAAO,GAULovD,oBArDO,YAuDV,IADC/mD,EACD,EADCA,OAAQ2/C,EACT,EADSA,QAAShC,EAClB,EADkBA,OAAQ8B,EAC1B,EAD0BA,WAC1B,wHACyBuH,GAAcnH,eAAe,CACjD7/C,SACA2/C,UACAF,aACA9B,WALL,cACOY,EADP,yBAQQmI,GAAe,CAClBrtD,OAAQ,SACRklD,eAVL,8CAqBG0I,sBA5EO,YA8EV,IADCjnD,EACD,EADCA,OAAQi+C,EACT,EADSA,UAAWwB,EACpB,EADoBA,WAAYoB,EAChC,EADgCA,MAChC,wHACyBqG,GAAatG,gBAAgB,CACjD5gD,SACAi+C,YACA4C,QACApB,eALL,cACOlB,EADP,yBAQQmI,GAAe,CAClBrtD,OAAQ,YAAF,OAAcwnD,GACpBtC,eAVL,8CAsBG4I,cApGO,YAoG4B,IAAnBnnD,EAAmB,EAAnBA,OAAQ2/C,EAAW,EAAXA,QAAW,wHACbuH,GAAaxG,QAAQ,CACzC1gD,SACA2/C,YAHiC,cAC/BpB,EAD+B,yBAM9BmI,GAAe,CAClBrtD,OAAQ,OACRklD,eARiC,8CAYnC6I,2BAhHO,YAgH6D,IAAvCpnD,EAAuC,EAAvCA,OAAQ2/C,EAA+B,EAA/BA,QAA+B,IAAtBtmD,cAAsB,MAAb,UAAa,4HACjDguD,GAAetH,QAAQ,CACxCD,OAAQzmD,EACR2G,SACA2/C,YAJkE,cAChEC,EADgE,OAOlErB,EAAY,KAIZA,EAFW,6BAAXllD,EAEYumD,EAAO,GAEP0H,GAA6BtnD,EAAQ2/C,EAASC,GAbQ,kBAgB/D8G,GAAe,CAClBnI,YACAllD,YAlBkE,8CA8BpEkuD,QA9IO,SA8ICX,EA9ID,GA8IyB,WAAfR,EAAe,EAAfA,YAAe,2HAC5BpmD,EAAS4mD,EAAMvJ,YACfsC,EAAUiH,EAAMjvD,IAAI,MACpBwmD,EAAWyI,EAAMrH,cACjBiI,EAAcZ,EAAM5H,iBAEpBS,EAAatB,EAASxmD,IAAI,MAC1BgmD,EAASx4B,SAASyhC,EAAMjvD,IAAI,UAAW,MAIzCwmD,EAASnB,YAAcW,EAAS,GAXF,wBAYxB8J,EAAkB,CACpB9J,SACA8B,aACAz/C,SACA2/C,WAhB0B,UAmBT,EAAKoH,oBAAoBU,GAnBhB,YAmBxBjgD,EAnBwB,QAsBlB+2C,UAtBkB,0CAuBnB,EAAKwI,oBAAoBvvD,OAAO8sB,OAAOmjC,EAAiB,CAC3D9J,OAAQ8J,EAAgB9J,OAAS,EACjCgC,QAAS,SAzBa,iCA4BvBn4C,GA5BuB,WAkCP,KAHrBkgD,EAAcvJ,EAASpB,yBAGbz3C,SAAgBkiD,EAlCE,0CAmCvB,EAAKL,cAAc,CACtBxH,QAAS6H,EACTxnD,YArC0B,mCA2CjB,EAAKonD,2BAA2B,CACzC/tD,OAAQiuD,GACJlB,EACAsB,EACAlnD,KAAKC,UAETT,SACA2/C,YAlD0B,qGAqDvB,EAAKyH,2BAA2B,CACnC/tD,OAAQiuD,GACJlB,EACA,CAAC,CAAE/uD,KAAM,aAAc0X,MAAO,EAAGC,IAAK,MACtC,GAEJhP,SACA2/C,aA5D0B,8DA0EhCgI,UAxNO,SAwNGf,EAAO9Z,GAAS,uIACQ,EAAKya,QAAQX,EAAO9Z,GAD5B,mBACpByR,EADoB,EACpBA,UAAWllD,EADS,EACTA,OAEdklD,EAHuB,yCAIjB5oC,QAAQI,OAAO,CAClBmT,OAAQ,oBACR7vB,YANoB,UAUb,IAAImpD,GAAOjE,EAAU/Y,YAExB0e,WAZgB,0CAajBvuC,QAAQI,OAAO,CAClBmT,OAAQ,qBACR7vB,YAfoB,iCAmBrB,CACHklD,YACAllD,WArBwB,gDCvOhCgC,GAAe,GAiBJ,IACXusD,UAXc,SAACvvD,EAAKwvD,GAEpB,OAAOxsD,GAAahD,UAA+B,IAAfwvD,EAA6BxvD,EAAMwvD,IAUvEC,gBAjBoB,SAACj3C,GACrBxV,GAAewV,GAiBfk3C,aARiB,SAACC,GAElB,OADe3sD,GAAaE,QAAU,IACxBysD,EAAKC,aAAeD,EAAKC,a,gPCZ3C,IAAM/2B,GAAiB,SAAjBA,EAAkBnD,GAEpB,IAAMjpB,EAAS,GAQf,QAAYzK,IAAR0zB,EACA,OAAOrpB,OAAOqpB,GAChB,GAAqB,WAAjB,GAAQA,IAA6B,OAARA,QAA8B1zB,IAAb0zB,EAAItpB,KAAqB,CACzE,IAAK,IAAMyjD,KAAQn6B,EACXA,EAAIp1B,eAAeuvD,IAAOpjD,EAAO2C,KAAP,UAAeygD,EAAf,aAAwBh3B,EAAenD,EAAIm6B,MAG7E,iBAAWpjD,EAAOL,KAAK,KAAvB,KAGF,GAAqB,WAAjB,GAAQspB,IAA6B,OAARA,QAA+B1zB,IAAb0zB,EAAItpB,KAAqB,CAC1E,IAAK,IAAMyjD,KAAQn6B,EACfjpB,EAAO2C,KAAKypB,EAAenD,EAAIm6B,KAEnC,iBAAWpjD,EAAOL,KAAK,KAAvB,KAWJ,MARuB,mBAATspB,EACVjpB,EAAO2C,KAAKsmB,EAAIrmB,YAIhB5C,EAAO2C,KAAKstB,KAAKuB,UAAUvI,IAGxBjpB,EAAOL,KAAK,MAGjB0jD,GAAwB,SAACrjD,GAC3B,IACI,OAAOA,EAAOqX,OAAO,GAAG+wB,cAAgBpoC,EAAO6C,MAAM,GACvD,MAAO9E,GAEL,OAAOiC,IC1Cf,SAASsjD,GAAgBC,EAAQjmD,GAC7B,IAAImmB,EACAtM,EACAqsC,EAKJ,GAAuB,QAAnBrqD,IAAOC,QACP,OAAO,EAIX,IAAKy6C,EAAMnhC,QAAQpV,GACf,OAAO,EAKX,IAFA,IAAMoN,EAAMpN,EAAQkD,OAEXxO,EAAI,EAAGA,EAAI0Y,EAAK1Y,GAAK,EAI1B,GAAkB,OAHlByxB,EAASnmB,EAAQtL,IAGN,IAiBX,GAAIyxB,EAAOloB,QAAQgoD,IAAW,EAC1B,OAAO,OAVP,GANA9/B,EAASA,EAAO5gB,MAAM,GACtBsU,EAAMosC,EAAOhoD,QAAQkoB,GAErB+/B,EAAkBD,EAAOA,EAAO/iD,OAASijB,EAAOjjB,OAAS,GAGrD2W,GAAO,GAAKosC,EAAO/iD,OAAS2W,IAAQsM,EAAOjjB,cACfjL,IAApBiuD,GAAqD,MAApBA,GACzC,OAAO,EAYnB,OAAO,EAWX,SAAS7N,GAAQlX,EAAQsX,GACrB,OAAQtX,GAAU,IAAIhyB,OAAOspC,GAAS,IAG1C,IAwEe0N,GAxEA,CACXhgC,OAAQ,KAGR9qB,SAAU,CAEN8E,SAAS,EAETimD,IAAI,GAGRC,QAAS,GAETxM,WAbW,SAaA1zB,GACPjoB,KAAKioB,OAASA,GASlBwlB,MAvBW,SAuBL/tC,GAKF,OAJKM,KAAKmoD,QAAQzoD,KACdM,KAAKmoD,QAAQzoD,GAAU2V,QAAQC,QAAQ3X,IAAOmE,UAG3C9B,KAAKmoD,QAAQzoD,IASxB0oD,eArCW,SAqCI1oD,GAAQ,WACnB,OAAOM,KAAKytC,MAAM/tC,GAAQynB,MAAK,SAAC5W,GAC5B,IAAMrJ,EAAS,GASf,OAPAmxC,EAAM1U,KAAKpzB,GAAM,SAAC+rC,EAAMvkD,GACpBmP,EAAOnP,GAAO+vD,GACV,EAAK7/B,OACLkyB,GAAQmC,EAAK9jD,OAAQ8jD,EAAK58C,QAI3BwH,MAUfmhD,cA1DW,SA0DG3oD,GAAQ,IACVqC,EAAcpE,IAAOmE,QAArBC,UAKR,MAAuB,QAAnBpE,IAAOC,SAIJkqD,GAAgB9nD,KAAKioB,OAAQkyB,GAAQp4C,EAAUvJ,OAAQuJ,EAAUrC,O,+KC9HhF,IAAM4oD,GAAa,SAASrI,GAAQ,WAGhC,OAFAjgD,KAAKuoD,YAAa,EAEX,IAAIlzC,SAAQ,SAACC,EAASG,GAEzB4iC,EAAMI,KAAK,EAAKl5C,IAAI0gD,IAAS,SAAC7S,GAC1B,EAAKob,QAAU,IAAI51B,KAAS,IAC5B,EAAKn7B,MAAQ21C,EAASzY,aACtB,EAAK4zB,YAAa,EAClBjzC,EAAQ,EAAK7d,UACd,WACC,EAAK8wD,YAAa,EAClB9yC,EAAO7a,SACR,OAIL6tD,G,WACF,WAAYpJ,EAASqJ,EAAaC,I,4FAAY,SAI1C3oD,KAAKq/C,QAAUA,EAMfr/C,KAAK0oD,YAAcA,EAMnB1oD,KAAKvI,MAAQ,KAKbuI,KAAKwoD,OAAS,KAMdxoD,KAAK2oD,WAAaA,GAAc,KAEhC3oD,KAAK0tC,QAAU,KACf1tC,KAAKuoD,YAAa,E,qDAGhBK,GACF,IAAK5oD,KAAK6oD,UAAW,CACjB,GAAI7oD,KAAK0tC,SAAW1tC,KAAKuoD,WACrB,OAAOvoD,KAAK0tC,QAIZ1tC,KAAK0tC,QADoB,mBAAlBkb,EACQA,EAAc5oD,KAAKq/C,QAASr/C,KAAK0oD,aAAavhC,KAAKmhC,GAAWtwD,KAAKgI,OAEnEsoD,GAAW3xD,KAAKqJ,MAIvC,OAAOA,KAAK0tC,U,0BAGZuS,GACA,IAAM6I,EAAQ,CAAC,UAAD,OACAnrD,IAAO2B,IAAII,SAezB,OAZIugD,GAAUA,EAAO8I,QAAU9I,EAAOxoD,OAClCqxD,EAAM3hD,KAAN,kBAAsBnH,KAAKq/C,UAC3ByJ,EAAM3hD,KAAN,kBAAsB84C,EAAO8I,SAC7BD,EAAM3hD,KAAN,eAAmB84C,EAAOxoD,SAE1BqxD,EAAM3hD,KAAK,UAGXnH,KAAK2oD,YACLG,EAAM3hD,KAAN,qBAAyBnH,KAAK2oD,aAGlC,UAAUhrD,IAAO2B,IAAIE,SAArB,YAAiCspD,EAAM3kD,KAAK,Q,iCAI5C,OAAOnE,KAAKvI,Q,gCAKZ,OAAS,IAAIm7B,KAAS5yB,KAAKwoD,Y,kCAKnCnQ,EAAME,OAAOkQ,GAAMrwD,UAAWigD,EAAM9E,QAErBkV,UClGf,SAASO,GAAetpD,GACpB,MAAmB,OAAXA,GAA8B,QAAXA,EAAoB,KAAO,KAG1D,SAASupD,GAAuBhJ,GAC5B,IAAMiJ,EAAc7Q,EAAME,OAAO,CAC7Bt4C,GAAKC,KAAKuQ,MAAsB,KAAhBvQ,KAAKC,WACtB8/C,GAEH,OAAO5H,EAAMuC,UAAUsO,GAGZ,gBACDjJ,GACN,IAAME,EAAc8I,GAAuBhJ,GAC3C,gBAAUtiD,IAAOyC,IAAIG,SAASE,IAA9B,YAAqC0/C,IAH9B,YAMAF,GACP,IAAME,EAAc8I,GAAuBhJ,GAC3C,gBAAUtiD,IAAOyC,IAAIG,SAASC,KAA9B,YAAsC2/C,IAR/B,YAWEgJ,EAAYC,GACrB,OAAO/Q,EAAME,OAAO,GAAIF,EAAMG,MAAM4Q,EAAeD,KAZ5C,YAeMpE,GACb,IAAMrlD,EAASqlD,EAAOhI,YAEtB,MAAO,CACHsM,YAAaL,GAAetpD,GAC5B4pD,WAAY,OAAF,OAnCXjR,EAAMiB,OAAO5B,iBAoCZ6R,cAAe7pD,EACf8pD,QAAS,CACLC,QAAS,EACTC,QAAS,EACTC,SAAU,KCzCpBC,GAAc,SAAU7E,GAC1B/kD,KAAK+kD,OAASA,EACd/kD,KAAKrC,OAAS,GACdqC,KAAKigD,OAAS,IAGlB2J,GAAYxxD,UAAY,CACpByxD,UADoB,SACV5J,GACNjgD,KAAKigD,OAASA,GAOlB6J,OAToB,SASbC,GACH,IAAMC,EAAW3R,EAAMG,MAAMx4C,KAAKigD,OAAQ8J,GAE1C,OAAI/pD,KAAK+kD,OAAOQ,UACL0E,GAAsBD,GAG1BC,GAAuBD,IAGlCvmB,IAnBoB,SAmBhBsmB,EAAc79C,EAAQg+C,GAElBH,IACA/pD,KAAKrC,OAAOusD,EAAUhqD,KAAK0F,MAAsB,IAAhB1F,KAAKC,UAAkB,GAAK,CACzD+L,OAAQA,EACRzH,IAAKzE,KAAK8pD,OAAOC,MAK7BI,UA7BoB,WA8BhB,OAAOnqD,KAAKrC,SAILisD,U,0HCdf,SAASQ,GAAUnK,EAAQoK,GACvB,OAAIA,EACOhS,EAAME,OAAO,GAAI,CACpB+R,OAAQD,GACTpK,GAGAA,EAaX,SAASsK,GAAgBp1B,EAAc4vB,EAAQ5nD,GAAU,IAC7CqtD,EAAYr1B,EAAZq1B,QAER,OAAIA,EA9CR,SAAsBR,EAAUjF,EAAQ5nD,GACpC,IAAMqtD,EAAUR,EAASQ,SAAW,GAC9BvK,EAAS+J,EAAS/J,QAAU,GAC5BwK,EAAY,IAAIb,GAAY7E,GAC1B2F,GAAavtD,GAAY,IAAzButD,QAgBR,OAdAD,EAAUZ,UAAU5J,GACpBwK,EAAUhnB,IAAI+mB,EAAQf,QAAS,MAAO,WAEtCpR,EAAM1U,KAAKohB,EAAOzB,gBAAgB,SAAUqH,GACpCA,GAAYA,EAAS3M,UACrByM,EAAUhnB,IAAI+mB,EAAQd,QAASiB,EAAS3M,SAAU,gBAK1C,IAAZ0M,IAAkC,IAAZA,IAA8C,IAA1B3F,EAAO1tD,IAAI,aACrDozD,EAAUhnB,IAAI+mB,EAAQb,SAAU,OAAQ,YAGrCc,EAAUN,YA2BNS,CAAa,CAChBJ,QAASA,EAAQK,SACjB5K,OAAQmK,GAAUI,EAAQvK,OAAQ9qB,EAAam1B,SAChDvF,EAAQ5nD,GAGR,GAGX,SAAS2tD,GAAgB31B,GAAc,IAC3B41B,EAAiB51B,EAAjB41B,aAER,OAAI51B,EAAam1B,QAAUS,EA1B/B,SAA2BA,EAAcC,GACrC,IAAMC,EAAa,GAMnB,OAJA5S,EAAM1U,KAAKonB,GAAc,SAAU/gD,EAAQkhD,GACvCD,EAAWC,GAAeC,GAAgCnhD,EAAQghD,MAG/DC,EAoBIG,CACHL,EAAaF,SACbT,GAAUW,EAAa9K,OAAQ9qB,EAAam1B,SAI7C,GAGX,IAAMe,GAAe,e,EAAA,G,EAAA,UAAG,WAAOtG,EAAQ5nD,GAAf,mBAAA8F,EAAA,yDAGZilD,EAAY/qD,EAAZ+qD,GAAIoD,EAAQnuD,EAARmuD,KAED,IAAPpD,GAAgBoD,IAAOvG,EAAOO,iBALd,yCAMT,MANS,UAShBiG,EAAc,GAEC,mBAARD,EAXS,gCAYIA,EAAIvG,EAAQoG,GAAoCpG,GAASuG,EAAIE,WAZjE,OAYhBD,EAZgB,qBAepBE,EAAO,OAAOtrC,IAAI,YAAaorC,GAfX,kBAiBbA,GAjBa,2C,iLAAH,wDAuDN,IACXpB,UADW,SACDpF,EAAQ5nD,GACd,OAAOkuD,GAAgBtG,EAAQ5nD,GAAUgqB,MAAK,SAAUgO,GAEpD,OAAqB,OAAjBA,EACO,GAGJ,CACHu2B,WAAYnB,GAAgBp1B,EAAc4vB,EAAQ5nD,GAClD4tD,aAAcD,GAAgB31B,GAC9Bw2B,UAAWx2B,EAAaqX,SAAW,QAK/Cof,kBAhBW,SAgBOC,EAAa9G,EAAQ5nD,GAEnC,OAAOkuD,GAAgBtG,EAAQ5nD,GAAUgqB,MAAK,SAAUgO,GACpD,GAAIA,EAAc,KACNq1B,EAAYr1B,EAAZq1B,QACFd,EAAUc,GAAWA,EAAQK,UAAYL,EAAQK,SAASnB,QAEhE,GAAIA,EAAS,CACT,IAAMzJ,EAASmK,IAAWI,GAAW,IAAIvK,OAAQ9qB,EAAam1B,QAG9D,OAFArK,EAAO6L,aAAeD,EAEfV,GAA8B9S,EAAMG,MAAMyH,EAAQyJ,UAKzEqC,cA5DkB,SAAC,GAAuB,IAArBtnD,EAAqB,EAArBA,IAAKunD,EAAgB,EAAhBA,UACtBC,GAAa,EACbC,EAAkB,aAmBtB,MAAO,CACHC,QARY,SAACnrD,IACM,IAAfirD,IAAyBjrD,GAAQgrD,GAA2B,QAAdA,KAC9CE,EAAgBznD,GAChBwnD,GAAa,IAMjBG,QAnBY,SAACt2C,GACbo2C,EAAkBp2C,GAmBlBo5B,QAhBY,SAACp5B,GACTrR,GACAqR,QCkDGu2C,OA/Jf,SAAqBhI,EAAWU,EAAQvY,EAASrvC,GAAU,IAEnD+E,EACAsqC,EADAtqC,OAAQd,EACRorC,EADQprC,OAAQq9C,EAChBjS,EADgBiS,MAAOjH,EACvBhL,EADuBgL,YAAa8U,EACpC9f,EADoC8f,aAGxC,SAASC,EAAoBC,GACzB,IAAMC,EAAU1H,EAAOK,gBACjB4G,EAAYjH,EAAOG,gBAAgB,SAwBzC,OArBIuH,IACAD,EAAaE,QAAUD,GAIvBhO,IACA+N,EAAa/N,MAAQA,GAGrBjH,IACAgV,EAAahV,YAAcA,GAI3BwU,IACAQ,EAAaG,UAAYX,GAGzBM,IACAE,EAAaF,aAAeA,GAEzBE,EAGX,SAASI,EAA2BJ,GAQhC,OAPAnU,EAAM1U,KAAKohB,EAAOD,iBAAiB,SAAU+H,GACzCL,EAAaM,QAAQ3lD,KAAK,CACtB4lD,MAAO,GAAF,OAAKF,EAAUxL,OAAf,KACL2L,KAAMH,EAAU9zD,YAIjByzD,EAGX,SAASS,EAAaT,GASlB,OARIzH,EAAOL,gBAEP8H,EAAaU,OAAO/lD,KAAK,CACrB6lD,KAAMjI,EAAON,eACbpoC,KAAM,eAIPmwC,EAGX,SAASW,EAAYX,GAYjB,OAXIzH,EAAOJ,cAAc3/C,OAAS,GAC9BqzC,EAAM1U,KAAKohB,EAAOJ,eAAe,SAAUyI,GACvCZ,EAAaU,OAAO/lD,KAAK,CACrB6lD,KAAMI,EAAQ7tD,IACdwtD,MAAO7qD,EAAOolD,UAAU8F,EAAQn6B,UAChC5W,KAAM,WACNte,SAA6B,IAApBqvD,EAAQrvD,aAKtByuD,EAqBX,SAASa,EAAab,GAKlB,MAJgC,QAA5BzH,EAAOM,mBACPmH,EAAac,WAAa,cAGvBd,EAGX,OAAO,SAAU7uD,GACb,IAAM7E,EAAmC,UAA5BisD,EAAO1tD,IAAI,cAA4B0tD,EAAOH,gBAAkB,MAAQ,MACrF,OAAOvvC,QAAQC,QAAQ,CACnB5D,GAAIqzC,EAAO5B,QACXpH,MAAO36C,EACP0rD,QAAS,CAAC,CACNE,KAAe,QAATl0D,EAAiBisD,EAAOnlD,OAAO9G,GAAQurD,EAE7CvrD,KAAMisD,EAAOvB,SAAW,YAAc1qD,EACtCiF,SAAS,EACTwvD,QAAS,SAEbjL,UAAWyC,EAAO1tD,IAAI,aACtB61D,OAAQ,KAEP/lC,KAAKolC,GACLplC,KAAKylC,GACLzlC,KAAKgmC,GACLhmC,KAAK8lC,GACL9lC,KAAKkmC,GACLlmC,MAAK,SAAUqlC,GACZ,OAAOjsD,GAAS4pD,UAAUpF,EAAQ5nD,GAAUgqB,MAAK,SAAU6iC,GACvD,IAAM2B,EAAY3B,EAAS2B,WAAa,GAmBxC,OAjBAhuD,EAAO6vD,YAAcnV,EAAME,OAAO,CAC9Bj4C,OAAQ,QACT4B,EAAOolD,UAAU,OAAO,SAEY,IAA5BqE,EAAU8B,gBACjB9vD,EAAO6vD,YAAYE,iBAAmB/B,EAAU8B,gBAGpB,IAA5B9B,EAAUgC,gBACVhwD,EAAO6vD,YAAYG,eAAgB,IAGV,IAAzBhC,EAAUiC,aACVjwD,EAAO6vD,YAAYI,YAAa,GAIhC7I,EAAOvB,SACAgJ,EApE3B,SAAwBxC,EAAUwC,GAAc,MACNxC,GAAY,GAA1C0B,EADoC,EACpCA,WAAYX,EADwB,EACxBA,aAcpB,OAXIW,GAAcx0D,OAAO4G,KAAK4tD,GAAY1mD,OAAS,GAC/CqzC,EAAME,OAAOiU,EAAc,CACvBqB,WAAYnC,IAKhBX,IACAyB,EAAazB,aAAeA,GAGzByB,EAwDYsB,CAAe9D,EAAUwC,SAGvCrlC,MAAK,SAAUqlC,GAQZ,OAPA7uD,EAAOvB,SAAW,CAACowD,GAEnBA,EAAa3rD,IAAM,CACfkkD,OAAQA,EACR5nD,SAAUA,GAGPQ,O,uOCnJvB,IAAMwsD,GAAY,SAAC,GAKb,IAJF3d,EAIE,EAJFA,QAASuY,EAIP,EAJOA,OAIP,IAJegJ,eAIf,MAJyB,CACvBpsD,QAASinD,IAAcjnD,QACvB88C,MAAOv8C,GAAOolD,UAAU,YAE1B,EACF,IAAgB,IAAZ9a,EACA,OAAO,KAGX,IAAMwhB,EAAWD,EAAQpsD,SAAW,GAC9BjC,EAASqlD,EAAOhI,YAEhBp7C,EAAUzK,OAAO8sB,OAAO,GAAIgqC,EAASx1D,QAuB3C,OApBIw1D,EAAStuD,IACTxI,OAAO8sB,OAAOriB,EAASqsD,EAAStuD,IAIb,WAAnB,GAAO8sC,GACPt1C,OAAO8sB,OAAOriB,EAAS6qC,GACG,mBAAZA,GACdt1C,OAAO8sB,OAAOriB,EAAS6qC,EAAQuY,EAAO7f,aAItCvjC,EAAQE,OACRF,EAAQE,KAAOkwB,mBAAmBpwB,EAAQE,OAGzCF,EAAQssD,UACTtsD,EAAQssD,QAAUF,EAAQtP,OAGvB98C,GC5BI,YAAUojD,EAAQvY,GAE7B,OAAO,SAAU7uC,GACb,IAAIuwD,EAAe1hB,EAAQ2hB,SA0B3B,GAvBIpJ,GAAUA,EAAOxB,aACjB5lD,EAAO2wC,iBAAkB,GAIxByW,EAAOd,sBAERtmD,EAAO4vD,QAAU,OACjB5vD,EAAOywD,WAAY,IAIF,IAAjB5hB,EAAQ6hB,OACR1wD,EAAO0wD,MAAO,GAId7hB,EAAQ8hB,OACR3wD,EAAO2wD,KAAO9hB,EAAQ8hB,MApCf,SAAC3wD,GAChB,IAAM6uD,EAAe7uD,GAAUA,EAAOvB,SAAS,GAG/C,QAAIowD,EAAaqB,YACN32D,OAAO8S,OAAOwiD,EAAaqB,YAC7Bv/C,MAAK,SAACigD,GAAD,MAA0B,QAAhBA,EAAKriD,UAmCrBsiD,CAAW7wD,KAAmD,IAAxCA,EAAO6vD,YAAYE,iBACzC,KACwB,IAAhB/vD,EAAO0wD,MAA2D,SAA1CrT,aAAaC,QAAQ,mBAC7CiT,GAAe,EAEfvwD,EAAO0wD,MAAO,GAEpB,MAAOxlC,IA0Bb,OApBIk8B,EAAOjB,aACPoK,GAAe,QAGS,IAAjBA,IACPvwD,EAAOywD,UAAYF,GAIG,aAAtB1hB,EAAQiiB,YACR9wD,EAAO+wD,UAAY,CACfC,aAAa,KAKE,IAAnBniB,EAAQxhB,SACRrtB,EAAOqtB,OAASwhB,EAAQxhB,QAGrBrtB,IC7EX+vC,GAAU,KAgDCkhB,GA9CI,CACfjiC,MAAO,WACP6f,QAAS,GAETqiB,KAJe,WAII,WAAdriB,EAAc,uDAAJ,GAYX,OAXAxsC,KAAKwsC,QAAUA,EACC,OAAZkB,KACA1tC,KAAK2sB,MAAQ,WAEb+gB,GAAUsB,aAAarxC,IAAOiD,IAAIG,UAC1BomB,MAAK,WAA8B,IAA7BpmB,EAA6B,uDAAnBoB,OAAOpB,QAC3B,EAAK4rB,MAAQ,QACbxqB,OAAOpB,QAAUA,MAIlB2sC,IAGXiO,WAnBe,SAmBJjgD,GAAsB,IAAd8wC,EAAc,uDAAJ,GAEzB,GAAmB,UAAfxsC,KAAK2sB,OAAoC,WAAf3sB,KAAK2sB,MAAnC,CAF6B,MAMTxqB,OAAZpB,EANqB,EAMrBA,QAGR,GAAKA,EAIL,IACI,IAAM+tD,EAAS,IAAI/tD,EAAQ2nC,OAAOxxC,OAAO8sB,OACrCwoB,EAASxsC,KAAKwsC,UAGlBsiB,EAAOC,WAAW,IAAIhuD,EAAQiuD,SAASC,SAASvzD,IAEhDsE,KAAK2sB,MAAQ,SACf,MAAOpqB,GACLgmB,QAAQM,MAAM,gCAAiCtmB,O,iWChB3D,IAAM2sD,GAAS,WACXlvD,KAAKklC,WAAa,CAEd9B,KAAM,KAEN1jC,OAAQ,KAERyvD,IAAK,aAELpK,OAAQ,KAER3D,MAAO,OAEPC,OAAQ,OAERtD,QAAS,KAEToQ,UAAU,EAEV/sD,QAAQ,EAERq9C,MAAO,KAEPz9C,KAAM,KAENgqB,QAAQ,EAERshC,aAAc,KAEdgC,KAAM3wD,IAAO4D,MAAMxD,QAEnByD,MAAO,CACHE,KAAM,SACND,KAAM,IAGV2tD,MAAO,MAMXpvD,KAAKqvD,WAAa,CACdC,QAAS,KACTC,SAAS,EACTC,KAAM7xD,IAAOiD,IAAIlF,OACjB+zD,YAAa,GAAF,OAAK9xD,IAAOiD,IAAIlF,OAAhB,uBACXg0D,MAAO,cACP33D,IAAK4F,IAAOjC,OAAOoC,KAAKC,QACxBwvD,QAAS,QAGbvtD,KAAKovD,MAAQ,MAGjBF,GAAO92D,UAAY,CAOfu3D,cAPe,WAQX,OAAgC,KAAzB3vD,KAAK3I,IAAI,eAGpBu4D,UAXe,SAWL7K,GACN/kD,KAAK+kD,OAASA,EAEd/kD,KAAKovD,MAAQ,IAAI3G,GAAM1D,EAAO1tD,IAAI,MAAO0tD,EAAO1tD,IAAI,UAAW2I,KAAK2vD,kBAOxEE,OArBe,WAsBX,OAAO7vD,KAAK8vD,YAAc,IAOxBC,KA7BS,WA6BF,I,EAAA,c,EAAA,8GVjEU/gB,aAAa,4DACnC7nB,MAAK,SAAC5wB,GACH,OAAIA,GAAwC,mBAAvBA,EAAOy5D,YACjBz5D,EAAOy5D,YAEX7tD,OAAO6tD,eU4DL,cACHC,EADG,yBAEFA,EAASr/B,GAAe,EAAKi/B,YAF3B,0C,oLAYbvL,UAzCe,SAyCLS,EAAQmL,GACd,IAAMC,EAAYD,GAAmB38C,SAAS6lC,eAAep5C,KAAK3I,IAAI,SAEhE+pD,EAAQphD,KAAK3I,IAAI,SACjBgqD,EAASrhD,KAAK3I,IAAI,UAExB,OAAIghD,EAAMlF,SAASnzC,KAAK3I,IAAI,WACjB2I,KAAK3I,IAAI,UAGhB84D,GAAapL,EACNhJ,GAAMiG,YACT+C,EAAOT,YACP,SAEAjM,EAAMM,SAASyI,GAASA,EAAQ+O,EAAUC,YAC1C/X,EAAMM,SAAS0I,GAAUA,EAAS8O,EAAUE,cAI7C,MAOXrR,SApEe,SAoEN+F,GACL,IAAMtG,EAAQz+C,KAAK3I,IAAI,SACjBi5D,EAA4BvL,EAAOQ,YAAclN,EAAMlF,SAASsL,GAEtE,OAAc,IAAVA,GAAkB6R,EACXvL,EAAO1tD,IAAI,SAGfonD,GAOX8R,eAnFe,SAmFAxL,GACX,GAAIA,EAAOQ,UACP,OAAOR,EAAO9F,cAAc5nD,IAAI,UAUxCm5D,SA/Fe,WAgGX,OAAIxwD,KAAK+kD,OAAOxB,WACLvjD,KAAKovD,MAAM3hB,MAAMztC,KAAK3I,IAAI,UAG9Bge,QAAQC,QAAQ,OAQ3Bm7C,cA5Ge,WA6GX,OAAQzwD,KAAK+kD,OAAOxB,YAAcvjD,KAAKovD,MAAMvG,WAGjD6H,aAhHe,SAgHF53D,GAAM,WAEf,OAAKkH,KAAK+kD,OAMH/kD,KAAKwwD,WAAWrpC,MAAK,SAACioC,GACzB,IAAM/K,EAAY,EAAKU,OAAOnlD,OAAO9G,GAC/B6vD,EAAa,EAAKgH,gBAClB1P,EAAS,GAgBf,MAda,QAATnnD,GAAkBs2D,GAClBnP,EAAO94C,KAAP,gBAAqB4qB,mBAAmBq9B,KAGxCzG,GACA1I,EAAO94C,KAAP,cAAmBwhD,IAKnB,EAAK5D,OAAOrB,UACZzD,EAAO94C,KAAK,iBAGTk9C,GAAcpE,EAAOj7C,OAAS,EAAjB,WAA0Bi7C,EAAO97C,KAAK,MAAS,QAvBnEokB,QAAQM,MAAM,oDACP,OAgCf8nC,iBArJe,WAqJI,WACP5L,EAAW/kD,KAAX+kD,OACF5nD,EAAW6C,KAAK4wD,cAEtB,OAAO,IAAIv7C,SAAQ,SAACC,EAASG,IACA,IAArBtY,EAAS8E,QACTqT,EAAQna,MACD4pD,EAAOnB,WACVmB,EAAOtB,iBAAmBsB,EAAOjB,WACjC,EAAK4M,aAAa,OAAOvpC,MAAK,SAACk9B,GAE3BhM,EAAMI,KAAK4L,EAAW/uC,GAAS,WAC3B,IAAM83B,GAAW,0CAAW,GAE5B,OAAwB,MAApBA,EAAS5Y,OACF/e,EAAOta,MAGXsa,EAAOta,SACf,MACJ01D,MAAMp7C,GAETH,EAAQna,MAEL4pD,EAAOlB,SACdpuC,EAAOta,MAEPsa,EAAOta,UAKnB21D,YArLe,SAqLH/L,GAAQ,ICxQCrlD,EDwQD,OACVvC,EAAW6C,KAAK4wD,cAEtB,OAAOv7C,QAAQC,QAAQ,CACnB8rC,MAAOphD,KAAK3I,IAAI,SAChBgqD,OAAQrhD,KAAK3I,IAAI,UACjB05D,UAAW/wD,KAAK3I,IAAI,SAASqK,KAC7BsvD,UAAWhxD,KAAK3I,IAAI,SAASoK,KAC7BE,QAAS02C,EAAME,OAAO,GAAI56C,IAAOgE,QAAQnJ,QACzC82D,QAAStvD,KAAK3I,IAAI,YAAc,QAChC45D,aAAc/uD,GAAOolD,UAAU,UAAU,GACzC/P,QAAS,GACTt7C,KAAM,KACPkrB,MAAK,SAAC+pC,GAAD,OAAc,EAAKR,aAAa,OAAOvpC,MAAK,SAACk9B,GAAD,OAAe8M,GAC/D9M,EACAU,EACA,CACI3jD,OAAQ,EAAKkjD,UAAUS,GACvBtG,MAAO,EAAKO,SAAS+F,GACrBvN,YAAa,EAAK+Y,eAAexL,GACjC7iD,OAAQA,GACRoqD,aAAc,EAAKj1D,IAAI,iBAE3B,EAAK+5D,sBAV0DD,CAWjED,SACG/pC,KH5OM,sCAAI9H,EAAJ,yBAAIA,EAAJ,uBAAa,SAAU1hB,GACtC,IAAMgE,EAAUwoD,GAAS,WAAT,EAAa9qC,GAQ7B,OANgB,OAAZ1d,SACOhE,EAAOgE,QAEdhE,EAAOgE,QAAUA,EAGdhE,GGmOO0zD,CAAW,CACb7kB,QAASxsC,KAAK3I,IAAI,WAClB0tD,YAEH59B,KEvSE,WAAwB,IAAdqlB,EAAc,uDAAJ,GAE/B,OAAO,SAAU0kB,GAUb,OATuB,IAAnB1kB,EAAQ8kB,SACRJ,EAASK,wBAAyB,SAC3B/kB,EAAQ8kB,QAGfp6D,OAAO4G,KAAK0uC,GAASxnC,OAAS,IAC9BksD,EAASzO,SAAWjW,GAGjB0kB,GF2RGM,CAAYxxD,KAAK3I,IAAI,cAC1B8vB,KAAKsqC,GAAmB1M,EAAQ,CAC7BsJ,KAAMruD,KAAK3I,IAAI,QACfi3D,KAAMtuD,KAAK3I,IAAI,QACf82D,SAAUnuD,KAAK3I,IAAI,YACnBo3D,UAAWzuD,KAAK3I,IAAI,aACpB2zB,OAAQhrB,KAAK3I,IAAI,aAGpB8vB,KGhTE,SAAU49B,EAAQjzB,GAE7B,OAAO,SAAUn0B,GAEb,GAAIm0B,GACIn0B,EAAOvB,UAAYuB,EAAOvB,SAAS,GAAI,CACvC,IAAM2kD,EAAsBgE,EAAO1tD,IAAI,wBAChC0tD,EAAO1tD,IAAI,uBAAuB2pD,WAEnCnD,EAAWkH,EAAO9F,cAExBthD,EAAOvB,SAAS,GAAG2E,QAAU,CACzB,mBAAoBgkD,EAAOnlD,OAAO,OAClC,iBAAkBmlD,EAAOrB,SACzB,gBAAiBqB,EAAO1tD,IAAI,SAC5B,mBAAoB0tD,EAAO1B,cAC3B,cAAe,SACf,mBAAoB,CAChBqO,WAAY3M,EAAO5B,QACnBwO,MAAO5M,EAAOhI,aAGlB,eAAgBgI,EAAO5B,QACvB,eAAgB4B,EAAOhI,YACvB,eAAgBgE,EAAoB58C,KAAK,KACzC,eAAgB05C,GAAYA,EAASxmD,IAAI,OAKrD,OAAOsG,GHkRGi0D,CACF7M,EACkB,UAAlBhkD,GAAQ4rB,QAEXxF,MClTYznB,EDkTAM,KAAK3I,IAAI,UChTvB,SAAU65D,GAAU,IACfpzD,EAASH,IAAOjC,OAAhBoC,KAIR,OAFAozD,EAASn5D,IAAM+F,EAAK4B,IAAW5B,EAAKC,QAE7BmzD,KD4SF/pC,MAAK,SAAC+pC,GAAD,OAAc7Y,EAAMG,MAAMH,EAAME,OAAO,GAAI,EAAK8W,WAAY6B,GAAW/zD,EAAS00D,IAAM,QAMpGC,eAtOe,WAwOX,OAAmC,IAA5B9xD,KAAK3I,IAAI,iBAAmD,IAAvB2I,KAAK3I,IAAI,WAGzD06D,eA3Oe,WA4OX,OAAO/xD,KAAK3I,IAAI,gBAGpBqzD,QA/Oe,WAgPX,QAAK1qD,KAAK8xD,oBAIN9xD,KAAK+xD,mBAAoD,IAA/B/xD,KAAK+xD,iBAAiB/1D,WACH,IAA/BgE,KAAK+xD,iBAAiB/1D,OAO5Co1D,oBA5Pe,WA6PX,OAAO/Y,EAAME,OAAO,CAChB+S,IAAKtrD,KAAK3I,IAAI,OACdqzD,QAAS1qD,KAAK0qD,WACf1qD,KAAK4wD,gBAGZhF,kBAnQe,SAmQG5qD,GACd,OAAOT,GAASqrD,kBACZ5qD,EACAhB,KAAK+kD,OACL/kD,KAAKoxD,wBAIb18B,MA3Qe,SA2QT8X,GACF,IAAM8Z,EAAS9Z,EAAQ8Z,OAAS9Z,EAAQ96B,GAClClQ,EAAQ7D,IAAO6D,MAAMgrC,EAAQ9sC,QAC7B4uD,EAAOjW,EAAME,OAAO,GAAK56C,IAAO4D,MAAMirC,EAAQ9sC,SAAW/B,IAAO4D,MAAMxD,SA2C5E,MAxC4B,WAAxB,GAAOyuC,EAAQ8hB,OACX9hB,EAAQ8hB,KAAKv3D,OACbu3D,EAAKv3D,MAAL,WAAiBy1C,EAAQ8hB,KAAKv3D,OAG9By1C,EAAQ8hB,KAAK/uD,MACb+uD,EAAK/uD,IAAMitC,EAAQ8hB,KAAK/uD,aAIrBitC,EAAQ8hB,KAInB9hB,EAAQ8hB,KAAOA,GAGV9hB,EAAQhrC,OAASA,IAClBgrC,EAAQhrC,MAAQA,GAIhB8kD,UACO9Z,EAAQ8Z,MAIfjO,EAAMlF,SAAS3G,EAAQuR,UAAYvR,EAAQuR,QAAQ9/B,MAAM,WACzDuuB,EAAQuR,QAAUl5B,SAAS2nB,EAAQuR,QAAS,KAI5CvR,EAAQxrC,OACRwrC,EAAQxrC,KAAOq3C,EAAMr3C,KAAK04C,mBAAmBlN,EAAQxrC,OAGrDwrC,EAAQrvC,iBACDqvC,EAAQrvC,SAGZqvC,IAKft1C,OAAOC,eAAe+3D,GAAO92D,UAAW,aAAc,CAClDX,MADkD,SAC5C+0C,GAAS,WACH9sC,EAAW8sC,EAAX9sC,OACFowD,EAAazX,EAAME,OAAO,GAAI/L,GAEpCxsC,KAAK8vD,WAAaA,EAElB7H,GAAOG,eAAe1oD,GAAQynB,MAAK,SAAC6qC,GAChC,IAAM70D,EAAW,IAEa,IAA1B60D,EAAYhwD,WAAsBwqC,EAAQrvC,SAC1Ck7C,EAAME,OAAOp7C,EAAUqvC,EAAQrvC,WACE,IAA1B60D,EAAYhwD,WAAuBwqC,EAAQrvC,UAAYqvC,EAAQrvC,SAAS00D,KAC/E10D,EAAS00D,GAAK,GACdxZ,EAAME,OAAOp7C,EAAS00D,GAAIrlB,EAAQrvC,SAAS00D,MAGnB,IAAxBG,EAAY/vD,gBACL9E,EAAS8E,SAIO,IAAvBtE,IAAOyC,IAAIV,KACXvC,EAAS+qD,IAAK,GAGlBhxD,OAAOC,eAAe,EAAM,WAAY,CACpCM,MAAOP,OAAO+6D,OAAO90D,GACrBsS,UAAU,IAGd4oC,EAAME,OAAO,EAAKrT,WAAY,EAAKxQ,MAAM8X,IACzC,EAAK2I,QAAQ,QAAS2a,EAAY3yD,OAG1CsS,UAAU,IAIdvY,OAAOC,eAAe+3D,GAAO92D,UAAW,cAAe,CACnDX,MADmD,WAE/C,OAAOuI,KAAK7C,UAEhBsS,UAAU,IAGd4oC,EAAME,OAAO2W,GAAO92D,UAAWwkD,GAEhBsS,UInaf,IAAMgD,GAAW,WACblyD,KAAKmyD,QAAU,MAGnBD,GAAS95D,UAAY,CACjBg6D,OAAQ,CACJ,OAAQ,aAAc,oBACtB,wBAAyB,4BAA6B,kCAE1DjxD,MAAO,CAAC,EAAG,IAAK,IAAK,IAAK,KAAM,MAOhCkxD,OAZiB,SAYVjR,GACH,IAAMkR,EA7Cd,SAAsBh7C,EAAKi7C,GAQvB,IANA,IAGI37D,EACA47D,EAJA/7D,EAAI,EAEJa,EAAIggB,EAAItS,OAAS,EAIdvO,GAAKa,GAKR,IAFAk7D,EAAOD,EAAQj7C,EADf1gB,EAAIH,GAAMa,EAAIb,GAAM,MAGT,EAEPA,EAAIG,EAAI,MACL,MAAI47D,EAAO,GAId,OAAO57D,EAFPU,EAAIV,EAAI,EAMhB,OAAOH,EAAI,EAqBUg8D,CAAazyD,KAAKmB,OAAO,SAACoa,GAAD,OAAOA,EAAI6lC,KAErD,GAAIphD,KAAKmyD,UAAYG,EAAU,CAC3B,IAAMI,EAAgB1yD,KAAK2yD,mBAAmBL,GACxCM,EAAoB5yD,KAAK2yD,mBAAmB3yD,KAAKmyD,SAEvDnyD,KAAKm1C,QAAQ,SAAUud,EAAeE,GAEtC5yD,KAAKmyD,QAAUG,IAIvBK,mBAzBiB,SAyBE1rD,GACf,MAAO,CACHm6C,MAAOphD,KAAKmB,MAAM8F,GAClB8lD,MAAO/sD,KAAKoyD,OAAOnrD,MAK/BoxC,EAAME,OAAO2Z,GAAS95D,UAAWm7C,GAElB2e,U,0FC9Cf,SAASW,GAAUC,GACf,OAAO,SAAUp3D,GACb,IAAM8wD,EAAe9wD,EAAO2wD,cAAc,GACtC5nD,GAAM,EAYV,OAVI+nD,EAAaqB,aACbppD,EApBZ,SAAqByH,EAAQ2hD,GACzB,IAAM/vD,EAAO5G,OAAO4G,KAAK+vD,GACrBppD,EAAM,KASV,OAPA4zC,EAAM1U,KAAK7lC,GAAM,SAAU/F,GACnBA,EAAIgI,QAAQmM,IAAW,IAEvBzH,EAAMopD,EAAW91D,GAAK0M,QAIvBA,EASOsuD,CAAYD,EAAWtG,EAAaqB,aAI1CppD,IADAA,GACMA,EAAIG,QAAQ,OAAQ,WAuDtC,SAASouD,GAAgB5zC,GAErB,IAAM6zC,EAAU7zC,GAASA,EAAM8zC,OAC/BzH,EAAO,eAAetrC,IAAI,QAAS8yC,GAG9BA,GAAYjzD,KAAK0zC,OAAOuf,EAAQE,cAIrCnzD,KAAK0zC,OAAOuf,EAAQE,aAAahe,QAAQ8d,EAAQl8D,KAAMk8D,GAG5C5a,SAAME,OAAO,CAGxB7E,OAAQ,GACRiI,WAJwB,WAKpB,IA7CMyX,EA6CAC,EAAYlxD,OAAOwsC,IAAI2kB,OAE7B,IAAKD,EAAUE,cAAe,CAC1BF,EAAUE,eAAgB,EAE1B,IAAMC,EApEY,CAC1Bt+B,aAAc,uFACdC,aAAc,qBACd/5B,UAH0B,WAItB,OAAO8G,GAAOolD,UAAU,WAAWlsD,WAEvCq4D,UAAU,EACVC,uBAAuB,EACvBC,oBAAoB,EACpBC,+BAA+B,EAC/BC,0BAA0B,EAC1B3kB,QAX0B,aAa1B4kB,WAAY,+GAAF,OAAiHC,KAAjH,UACVC,aAAc,sHAAF,OAAwHC,KAAxH,UACZC,WAAY,6GAAF,OAA+GC,KAA/G,UACVC,YAAa,8GAAF,OAAgHC,KAAhH,UACXC,gBACUlB,EAAalxD,GAAOolD,UAAU,OACpC,+EAA+E8L,EAAW73D,SAA1F,gHACyE63D,EAAW93D,YAAYsJ,QAAQ,KAAM,UAD9G,qWAOJ2vD,WAAa,WACT,IAAMnB,EAAalxD,GAAOolD,UAAU,OAEpC,oHAA8G8L,EAAW73D,SAAzH,kEAC6C63D,EAAW73D,SADxD,gVAHS,GAQb,qBAAsB,GACtBi5D,aAAc3B,GAAU,OACxB4B,aAAc5B,GAAU,OACxB6B,cAAe7B,GAAU,SAkCbQ,EAAUrF,SAAS2G,YACnBnB,EAAYr+B,aAAek+B,EAAUrF,SAAS2G,WAGlDt0D,aAAMmzD,GAENrxD,OAAOyd,iBAAiB,UAAWozC,GAAgBh7D,KAAKgI,SAWhE40D,UA9BwB,SA8BdC,GAMN,OAJK70D,KAAK0zC,OAAOmhB,KACb70D,KAAK0zC,OAAOmhB,GAAYxc,EAAME,OAAO,GAAIF,EAAM9E,SAG5CvzC,KAAK0zC,OAAOmhB,IASvBC,aA7CwB,SA6CXD,GACL70D,KAAK0zC,OAAOmhB,KACZ70D,KAAK0zC,OAAOmhB,GAAUpgB,MACtBz0C,KAAK0zC,OAAOmhB,GAAUjgB,gBAEtB50C,KAAK0zC,OAAOmhB,GAAY,YACjB70D,KAAK0zC,OAAOmhB,MAG5Bxc,EAAM9E,Q,sVC7JT,IAyEMwhB,GAAkB,SAACr5D,EAAQs5D,EAAUC,GACvC,IAAM9E,EAAYz0D,EAAOw5D,eACjBC,EA5DiB,SAACF,GAC1B,IAAMG,EAAoBH,EAAkBI,cAAc,YAAYzhC,WAAWA,WAMjF,MAAO,CACHuhC,cALkB,SAACG,GACnBF,EAAkB/hD,YAAYiiD,KAwDRC,CAAqBN,GAAvCE,cAEFK,EAhCqB,SAACrF,GAC5B,IAAMsF,EAAmBtF,EAAUkF,cAAc,uBAAuBK,WAAU,GAKlF,MAAO,CACHJ,QAASG,EACTE,QANY,SAACC,GACbH,EAAiB71C,iBAAiB,QAASg2C,GAAa,KA6BnCC,CAAuB1F,GAChDqF,EAAiBG,SAAQ,kBArBJ,SAACG,GACtB,IACIA,EAASC,gBACX,MAAOxzD,KAkBsByzD,CAAiBt6D,EAAOA,WACvDy5D,EAAcK,EAAiBF,SAE/B,IAAMW,EAtDgB,SAAC9F,GACvB,IAAM8F,EAAU9F,EAAUkF,cAAc,kBAAkBK,WAAU,GACpEO,EAAQZ,cAAc,wBAAwBa,SAC9CD,EAAQZ,cAAc,gBAAgBliD,MAAMiuC,MAAQ,KAEpD,IAAM+U,EAAiBF,EAAQZ,cAAc,gBAEvCe,EAAc,SAAC3+D,GACjB0+D,EAAehjD,MAAMiuC,MAArB,UAAgC3pD,EAAhC,MAGJ,MAAO,CACH69D,QAASW,EACThnC,MAAO,kBAAMmnC,EAAY,IACzBA,eAwCYC,CAAkBlG,GAClC6E,EAASp1C,iBACL,cACA,kBAAMq2C,EAAQG,YAAapB,EAASsB,YAActB,EAASrS,SAAY,QACvE,GAEJwS,EAAcc,EAAQX,SAduC,MAzExC,SAACnF,GACtB,IAAMoG,EAAkBpG,EAAUqG,UAC5BC,EAAY,CAAC,cAAe,qBAE5BC,EAAa,SAACjzB,EAAKyyB,GACrBK,EAAgB9yB,IAAhB,MAAA8yB,EAAe,GAAQ9yB,IACvB8yB,EAAgBL,OAAhB,MAAAK,EAAe,GAAWL,KAG9B,MAAO,CACHS,aAAc,kBAAMD,EAAWD,EAAW,CAAC,uBAC3CG,cAAe,kBAAMF,EAAW,GAAID,KA8EAI,CAAiB1G,GAAjDwG,EAhBqD,EAgBrDA,aAAcC,EAhBuC,EAgBvCA,cACtBl7D,EAAOq5C,KAAK,cAAekhB,EAAQhnC,OACnCvzB,EAAOq5C,KAAK,cAAe4hB,GAC3Bj7D,EAAOq5C,KAAK,iBAAkB6hB,GA3BL,SAAC3B,GAC1B,IAAM6B,EAAY7B,EAAkBI,cAAc,mBAE9CyB,IACAA,EAAUljC,WAAWzgB,MAAM4jD,MAAQ,QAyBvCC,CAAqB/B,ICxCzB,SAASgC,KACL,IAAMpF,EAAK7xD,KAAKtE,OACVy0D,EAAYnwD,KAAKk1D,eAEvBl1D,KAAKk3D,cAAe,EAGpBl3D,KAAK+0C,KAAK,aAAa,WACnB/0C,KAAKm3D,iBAAkB,IACxBn3D,MAEHA,KAAK+0C,KAAK,kBAAkB,WACxBob,EAAUqG,UAAUN,OAAO,uBAC5Bl2D,MAEHA,KAAKi1C,aAAa4c,EAAI,QAAQ,WAC1B7xD,KAAKm3D,iBAAkB,IACxBn3D,MAEHA,KAAKi1C,aAAa4c,EAAI,SAAS,SAAUrlB,GAGjCA,GAAmC,aAAxBA,EAAQ4qB,cACnBp3D,KAAKm3D,iBAAkB,KAE5Bn3D,MAGP,SAASq3D,GAAe9mD,GACpB,IAAMoyC,EAAW3iD,KAAKqjD,cAChBiT,EAAct2D,KAAKs3D,iBACnBnH,EAAYnwD,KAAKk1D,gBAGlB3kD,GAA4B,QAApBA,EAAKgnD,YAA0BjB,EAAc,IAAM3T,EAAW2T,EAAc,MACrFnG,EAAUqG,UAAU/yB,IAAI,qBAGxB1jB,YAAW,WACPowC,EAAUqG,UAAUN,OAAO,uBAC5B,KAEHl2D,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,UAAU,WACrCy0D,EAAUqG,UAAUN,OAAO,yBASvC,SAASsB,GAAaC,GAClBz3D,KAAKk0C,SAASl0C,KAAK0zC,OAAQ+jB,GAAW,YAEX,IAAnBz3D,KAAK03D,WAEL13D,KAAKm1C,QAAQsiB,KAElBz3D,MAGP,SAASkvC,KAAU,WACf,IAAiC,IAA7BP,IAAI2kB,OAAOC,cAAf,CAKA,IA9GiBtwB,EAAQhjC,EA+BDvE,EA+ElBm5D,EAAW70D,KAAKrC,OAAOtG,IAAI,QAEjC2I,KAAK0zC,OAASikB,GAAS/C,UAAUC,GAEjC70D,KAAKk0C,SAASl0C,KAAK0zC,OAAQ,qBAAqB,WAC5C1zC,KAAKk1D,eAAesB,UAAUN,OAAO,uBACtCl2D,MAEHA,KAAKk0C,SAASl0C,KAAK0zC,OAAQ,OAAO,SAAUt0B,EAAO7O,GAC/Ck7C,EAAO,OAAOtrC,IAAIf,EAAO7O,KAC1BvQ,MAEHA,KAAKk0C,SAASl0C,KAAK0zC,OAAQ,WAAW,SAAUnjC,GAC5CvQ,KAAK43D,WAAarnD,EAAKoc,OAEA,IAAnB3sB,KAAK03D,YACL13D,KAAKm1C,QAAQ,cAAe,CACxBrU,SAAU9gC,KAAK43D,aAGnB53D,KAAK03D,WAAY,GAGrB13D,KAAKm1C,QAAQ,eACdn1C,MAEHA,KAAKk0C,SAASl0C,KAAK0zC,OAAQ,mBAAmB,WAC1C1zC,KAAKk1D,eAAesB,UAAUN,OAAO,gBAEd,IAAnBl2D,KAAK03D,YACL13D,KAAKm1C,QAAQ,iBAAkB,CAC3BrU,SAAU9gC,KAAK43D,aAGnB53D,KAAK03D,WAAY,MAIzB13D,KAAKk0C,SAASl0C,KAAK0zC,OAAQ,UAAU,SAAUnjC,GACvCA,EAAK+lD,aAAet2D,KAAK03D,WACzB13D,KAAKm1C,QAAQ,aAAc5kC,EAAK+lD,YAAa/lD,EAAKoyC,YAEvD3iD,MAEHA,KAAKk0C,SAASl0C,KAAK0zC,OAAQ,UAAU,SAAUnjC,GACvCA,GACAvQ,KAAKm1C,QAAQ,SAAU,CACnB0iB,KAAMtnD,EAAKsnD,MAAQ,KACnBC,WAAYvnD,EAAKwnD,eAAiB,SAG3C/3D,MAEHq4C,EAAM1U,KAAK,CAAC,aAAc,YAAa,UAAW,UAAW6zB,GAAax/D,KAAKgI,OAG/EA,KAAK+0C,KAAK,SAAU4iB,GAAS7C,aAAa98D,KAAK2/D,GAAU9C,IAEzD70D,KAAKk0C,SAASl0C,KAAKtE,OAAQ,UAAWu7D,GAAUj/D,KAAKgI,OACrDA,KAAKk0C,SAASl0C,KAAKtE,OAAQ,eAAgB27D,GAAer/D,KAAKgI,OAG/DA,KAAKk0C,SAASl0C,KAAKtE,OAAQ,gBAAgB,SAAC8wD,GACpCA,EAAalQ,OAASkQ,EAAalQ,KAAKuR,aACxC,EAAK6J,WAAY,EACjB,EAAKP,iBAAkB,MAK/Bn3D,KAAKk0C,SAASl0C,KAAKtE,OAAQ,UAAU,WACjC,EAAKg8D,WAAY,EACjB,EAAKP,iBAAkB,KAG3Bn3D,KAAKm3D,iBAAkB,EAzLNl0B,EA2LLjjC,KAAKk1D,eA5JOx5D,EA4J4BsE,KA3L3BC,EAmClB,SAAU+0D,EAAUC,GACvBA,EAAkBuB,UAAU/yB,IAAI,oBAChC/nC,EAAOw5D,eAAesB,UAAUN,OAAO,sBACvCnB,GAAgBr5D,EAAQs5D,EAAUC,IArCrB,IAAIpyB,kBAAiB,SAASm1B,GAC3CA,EAAUjqD,SAAQ,SAASkqD,GACvB,GAAsB,cAAlBA,EAASn/D,KAAsB,CAC/B,IAAMo/D,EAAQD,EAASE,WAEvB,GAAID,GAASA,EAAM,IAAoC,IAA9BA,EAAM,GAAG1B,UAAUxxD,OAAc,CACtD,IAAMozD,EAAQF,EAAM,GAAG7C,cAAc,SAEjC+C,GACAn4D,EAAGm4D,EAAOF,EAAM,YAQ3B50B,QAAQL,EAAQ,CACrBiC,YAAY,EACZmzB,WAAW,EACX90B,eAAe,KCUR,QACXoU,YAdJ,SAAqBh6C,GACjB,IAAI26D,EAAoBjgB,EAAMiB,OAAO3B,cAGjCzwC,EAAgC,WAAtBoxD,EAMd,MAJ0B,UAAtBA,GA7BR,SAAoB36D,GAChB,IAAM6uD,EAAe7uD,GAAUA,EAAOvB,SAAS,GAC3C8K,GAAS,EAUb,OARIslD,EAAaqB,YACbxV,EAAM1U,KAAK6oB,EAAaqB,YAAY,SAAUU,GACtCA,GAAwB,QAAhBA,EAAKriD,SACbhF,GAAS,MAKdA,EAiB+BsnD,CAAW7wD,KAC7CuJ,GAAS,GAGNA,IC8BI2nD,GA9BF,SAACrD,GACV,IAxCI+M,EACAH,EAEEI,EAQAC,EA6BA1wC,GAxCFwwC,EAAsB,EACtBH,EAAQ,KAENI,EAAY,WAGVt4D,KAAK+f,IAAIm4C,EAAM9B,YAAciC,GAAuB,MACpDH,EAAM9B,YAAciC,IAItBE,EAAe,WACZL,EAAMM,UACPH,EAAsBH,EAAM9B,cAqB7B,CACHhyB,KAlBS,SAACq0B,IACVP,EAAQO,KAIJP,EAAMx4C,iBAAiB,UAAW44C,GAClCJ,EAAMx4C,iBAAiB,aAAc64C,KAYnCvC,OARK,WACPkC,IACAA,EAAM5pB,oBAAoB,UAAWgqB,GACrCJ,EAAM5pB,oBAAoB,aAAciqB,OAkChDjN,EAAU5X,GAAG,eAXS,WAClB7rB,EAAQuc,KAAcknB,EANU0J,eAAeG,cAAc,aAiBjE7J,EAAU5X,GAAG,0BALY,WACrB7rB,EAAQmuC,aC9DV0C,GAAoB,GAqCX,gBAACtmD,GACZ,OAAO,IAAI+C,SAAQ,SAACC,EAASG,GAAV,OApCvB,SAAwBojD,EAAMnjD,EAAWC,GACrC,GAAGijD,GAAkB74D,QAAQ84D,IAAS,EAClC,OAAOnjD,IAGX,IAAMI,EAAWJ,GAAa,aACxB4d,EAAQ/f,SAASogB,qBAAqB,QAAQ,GAC9ClyB,EAAQ8R,SAASsC,cAAc,QAErCpU,EAAKq3D,IAAO,aACZr3D,EAAK3I,KAAO,WACZ2I,EAAKo3D,KAAOA,EAEZ,IAAI3rD,GAAO,EAEXzL,EAAKuU,mBAAqBvU,EAAKwU,OAAS,WAC9B/I,GAAUlN,KAAKkW,YACG,WAApBlW,KAAKkW,YAA+C,aAApBlW,KAAKkW,aACrChJ,GAAO,EACP4I,IAGArU,EAAKwU,OAASxU,EAAKuU,mBAAqB,OAIhDvU,EAAK0U,QAAU,WACXyiD,GAAkBjuC,OAAOiuC,GAAkB74D,QAAQ84D,GAAO,GAC1DljD,KAGJijD,GAAkBzxD,KAAK0xD,GACvBvlC,EAAKjgB,YAAY5R,GAIuBs3D,CAAezmD,EAAMgD,EAASG,O,iLC1BpEujD,GAAcC,KAAcr0D,QAAQ,OAAQ,gDAsCnC,SAASs0D,GAAkB1N,GACtC,IAAMlE,EAAYplD,GAAOolD,UAAU,UAC3B3pD,EAA6B6tD,EAA7B7tD,OAAgBm4D,EAAatK,EAArB9vD,OACVy9D,EAAeC,QAAQz7D,EAAOtG,IAAI,eAhDb,GAmD3B,GAFAo0D,EAAO,aAAatrC,IAAIg5C,EAAe,KAAO,OAEzCA,EAAL,CAIA,IAAME,EAAc,WAChB,IAAMv4B,EAAWg1B,EAASwD,cACpB3W,EAAWmT,EAASzS,cAC1BmI,EAAU+N,KAAKr5D,KAAK6C,IAAI4/C,EAAU7hB,EAAW,MAGjD0qB,EAAU5X,GAAG,gBAAgB,WACzB,GAAK4X,EAAU9vD,OAAO89D,cAAtB,CAIA,IAvCsBzM,EAuChBoD,EAAY3E,EAAU0J,eACtBnQ,EAASyG,EAAUiO,YACnBlU,EAAUR,EAAOQ,UACjB5C,EAAWoC,EAAO1B,cAClBqW,EAAiBpS,EAAUhqD,QAE3Bq8D,EAAiBxJ,EAAUkF,cAAc,6CACzCuE,EAAQzJ,EAAUkF,cAAc,0BAClCwE,EAAgB1J,EAAUkF,cAAV,0BAxEF,oBAyEdyE,EAAiB3J,EAAUkF,cAAV,iCAxEF,4BAyEf0E,EAAe5J,EAAUkF,cAAV,qBAxEF,iBAqFjB,GAXKuE,GACDzJ,EAAUkF,cAAc,eAAehiD,YACnCglC,EAAMQ,WAAW,8BAIpBghB,IACD/D,EAASkE,UAAUhB,GAAaU,EAAgBL,EAAa,UAnF/C,mBAoFdQ,EAAgB1J,EAAUkF,cAAV,0BApFF,sBAuFbyE,EAAgB,CACjB,IAAMG,EAAW9J,EAAUkF,cAAc,wBA/DvBtI,EAgEoB2M,GAAtCI,EA/DDzhB,EAAMQ,WAAN,0DAzBgB,0BAyBhB,yEA1Be,kBA0Bf,gIAMmBkU,EANnB,6CAQOiM,GARP,0CAgEgBp5C,iBAAiB,QAASy5C,GACzCY,EAAS5mD,YAAYymD,GAGzB,IAAKC,EAAc,CACf,IAAMtb,EAAQ0R,EAAUkF,cAAc,aACtC0E,EAAe1hB,EAAMQ,WAAN,sBA9FF,eA8FE,SACf4F,EAAMprC,YAAY0mD,GAGtB,IAzFYpgB,EAyFNugB,EAAe3U,EAAU,KAAO,QACbA,EAAUlN,EAAMU,SAAWV,EAAMW,aACzCmX,EAAW,wBAC5BwJ,EAAeQ,aAAa,aAAc5U,EAAU+B,EAAU7pD,OAAS6pD,EAAU1rD,UACjFi+D,EAAc1mD,MAAMC,QAAU8mD,EAC9BJ,EAAe3mD,MAAMC,QAAU8mD,EAC/BH,EAAa5mD,MAAMC,QAAU8mD,EAC7BH,EAAaK,UAAY7U,GAhGb5L,EAgGkCgJ,GA/FpC,GACV,UAAUziD,KAAK0F,MAAM+zC,GAArB,QAEAA,EAAU,KACV,UAAUz5C,KAAK0F,MAAM+zC,EAAU,IAA/B,QAEJ,UAAUz5C,KAAKuQ,MAAMkpC,EAAU,IAAM,IAArC,QAyF8D,Q,8TC7G5D0gB,GAAW,CACb,oBAAqBC,KACrB,qBAAsBA,KACtB,kCAAmCA,KACnC,wBAAyBA,KACzB,uBAAwBA,KAExB,qBAAsBA,KACtB,sBAAuBA,KAEvB,wBAAyBA,KACzB,yBAA0BA,KAC1B,0BAA2BA,KAE3B,6BAA8BA,KAC9B,8BAA+BA,KAE/BjsC,KAAMisC,KACNC,SAAUD,MAIRE,GAAgBtjE,OAAO+6D,OAAO,CAChC,oBAAqBwI,KACrB,qBAAsBA,KACtB,sBAAuBA,KACvB,sBAAuBA,KAEvB,wBAAyBA,KACzB,yBAA0BA,KAC1B,0BAA2BA,OAI3BC,IAAa,EA2CF,SAASC,GAAUnP,GAC9B,IAAMsK,EAAWtK,EAAU9vD,OACrBqpD,EAASyG,EAAUiO,YACnBmB,IAAgB7V,GAASA,EAAOQ,UAChCsV,EAA6CD,EAV5CviB,EAAMG,MAAM6hB,GAAUG,IAHlBH,GAeXvE,EAAS/gB,KAAK,YAAY,WACtB,IAAMob,EAAY3E,EAAU0J,eAE5B7c,EAAM1U,KAAKk3B,GAAqB,SAACC,EAAYC,GACzC,IAAMC,EAAmB9xD,MAAM9Q,UAAUiP,MAAM1Q,KAAKw5D,EAAU8K,iBAAiBF,IAE1EC,EAAiBh2D,QAItBqzC,EAAM1U,KAAKq3B,GAAkB,SAACE,GAC1B,GAAKA,EAAL,CAIA,IAAMC,EAAU9iB,EAAMQ,WAAWiiB,GACjCK,EAAQhB,aAAa,QAASe,EAAgBE,aAAa,UAC3DF,EAAgBtnC,WAAWynC,aAAaF,EAASD,aCzGjE,IAmBe,YAAC1P,GACPA,EAAU9vD,OAAO89D,eAItBhO,EAAU5X,GAAG,SAAS,WAxBH,IAACuc,KAwBuB3E,EAAU0J,gBAvB3CG,cAAc,uCAAuCz1C,iBAAiB,SAAS,SAACR,GAAU,IACxFvlB,EAAWulB,EAAXvlB,OAGR,GAAIA,EAAO28D,UAAU8E,SAAS,+BACvBzhE,EAAO28D,UAAU8E,SAAS,uBAAwB,CACrD,IAAMC,EAAUpL,EAAUkF,cAAc,qBAGlCmG,EAAQt7D,KAAKuQ,MACd0/C,EAAUsL,aAAe5hE,EAAO6hE,WAAa7hE,EAAO4hE,YAAc,GAAMF,EAAQE,YAAc,GAGnGF,EAAQpoD,MAAMqoD,MAAd,UAAyBA,EAAzB,cCVNG,GAAkB,SAAAprD,GACpB,IAAMwG,EAAKxD,SAASsC,cAAc,YAClCkB,EAAGtf,MAAQ8Y,EACXwG,EAAGojD,aAAa,WAAY,IAC5BpjD,EAAG5D,MAAM2tB,SAAW,WACpB/pB,EAAG5D,MAAMgY,KAAO,UAChB5X,SAAS6C,KAAK/C,YAAY0D,GAC1BA,EAAG6kD,QACH7kD,EAAG8kD,SAEH,IACItoD,SAASuoD,YAAY,QACvB,MAAO1yC,GACLb,QAAQpI,IAAI,kBAGhB5M,SAAS6C,KAAK0J,YAAY/I,I,gUClBf,ICQTglD,GAAa,SAACt6D,GAAD,OAAUA,GAAQA,EAAK1B,QAAQ,YAAc,GAS1Di8D,GAAiB,SAAC9mD,GAAD,IAAOzT,EAAP,uDAAcU,OAAO4yB,SAAS8jC,KAA9B,gBAA0C3jD,GAA1C,OAAiD6c,mBAAmBtwB,KAOrFw6D,GAAgB,SAACllD,EAAItf,GACnBsf,GAAMA,EAAGmlD,iBAAmBzkE,IAC5Bsf,EAAGmlD,gBAAgB9B,UAAY3iE,IAUjC0kE,GAAiB,SAACC,EAAU36D,GAC9B,GAAI26D,EAAU,CACV,IAAMC,EAAQD,EAAS1G,WAAU,GACjC0G,EAASxoC,WAAWynC,aAAagB,EAAOD,GAExCC,EAAMz8C,iBAAiB,SAAS,WAC5Bzd,OAAOqR,KAAK/R,EAAM,aACnB,KA8CI,YAAC+pD,GACZA,EAAU5X,GAAG,eAAe,kBApCNuc,EAqClB3E,EAAU0J,eArCmBnQ,EAsC7ByG,EAAUiO,YAtC2BjtB,EAuCrCgf,EAAU7tD,OAAOtG,IAAI,WAvC4B,EAC9B8yD,GAAU,CAC7BpF,SACAvY,aACE,GAHE/qC,EAD6C,EAC7CA,MAAMI,EADuC,EACvCA,QAMmB,IAArBk6D,GAAWl6D,IACnBo6D,GACI9L,EAAUkF,cAAc,6BACxBxzD,QAKJJ,IAA6B,IAArBs6D,GAAWt6D,KACnBw6D,GACI9L,EAAUkF,cAAc,4BACxB5zD,GAMJ06D,GACIhM,EAAUkF,cAAc,yCACxB2G,GAhFe,+CAgFoBv6D,IAEvC06D,GACIhM,EAAUkF,cAAc,wCACxB2G,GAnFc,wCAmFoBv6D,MA9BrB,IAAC0uD,EAAWpL,EAAQvY,EAAY,EAC7C/qC,EAAMI,MCnCH,YAAUy6D,GACrBA,EAAe1oB,GAAG,gBAAgB,WAC9B,IAAMuc,EAAYmM,EAAepH,gBAlBb,SAAC/E,EAAWzwD,GtCGX,asCArBA,EACA24C,EAAMU,SAASoX,EAPK,cASpB9X,EAAMW,YAAYmX,EATE,cAuBpBoM,CACIpM,EACAmM,EAAe7C,YAAY1c,aAG/BoT,EAAUqG,UAAUN,OA3BH,uBA8BrBoG,EAAe1oB,GAAG,YAAY,SAAChrB,GAC3B,IAAMunC,EAAYmM,EAAepH,eAElB,SAAXtsC,GACAunC,EAAUqG,UAAU/yB,IAlCP,wBCalB,SAAS+4B,GAAWtL,GAAgC,IAAtBuL,EAAsB,uDAAbC,GAc1C,OAZIxL,EAAS5C,MAAQ4C,EAAS5C,KAAK/uD,MAC/Bk9D,EAAOvL,EAAS5C,KAAK/uD,KAEjB2xD,EAAS5C,KAAKv3D,KACdm6D,EAAS5C,KAAO,CACZv3D,KAAMm6D,EAAS5C,KAAKv3D,aAGjBm6D,EAAS5C,MAIjB4C,EAQI,SAASyL,GAAQL,GNKzB,IAAkB9Q,EAmBDz0D,EAnBCy0D,EMJZ8Q,ENKL5B,KAIJA,IAAa,EAEblP,EAAUzW,KAAK,SAAS,WACpB,IAAMob,EAAY3E,EAAU0J,eAExB/E,GACAA,EAAU98C,YAAYglC,EAAMQ,WAAWyhB,WMb/CpB,GAAkBoD,GAClBM,GAAaN,GHzCF,SAAC9Q,EAAD,GAAyB,IAAXqR,EAAW,EAAXA,KACzB,GAAKrR,EAAU9vD,OAAO89D,cAAtB,CAIA,IAAIxoC,GAAW,EAEfw6B,EAAUzW,KAAK,SAAS,WACpB,IAAMob,EAAY3E,EAAU0J,eAE5B/E,EAAUvwC,iBAAiB,eAAe,WACtC,IAAiB,IAAboR,EAAoB,CACpB,IAAMsrB,EAAO6T,EAAU8K,iBAAiB,2CAA2C,GACnF3e,EAAKka,UAAU/yB,IAAI,mBAEnB,IAAMq5B,EAAWvpD,SAASsC,cAAc,QACxCinD,EAASzjB,UAAYwjB,EACrBC,EAAStG,UAAU/yB,IAAI,UAAW,mBAClCq5B,EAASC,QAAQC,IAAM,wBAEvB1gB,EAAKjpC,YAAYypD,GAEjB,IAAIG,GAAmB,EAEvBH,EAASl9C,iBAAiB,QAA1B,aAAmC,4BAAA3c,EAAA,sEACVuoD,EAAU7tD,OAAOoyD,OADP,OACzBpyD,EADyB,OAG/Bm/D,EAAStG,UAAU/yB,IAAI,iBAEE,IAArBw5B,GACAl9C,YAAW,WACP+8C,EAAStG,UAAUN,OAAO,kBAC3B,KAEH+G,GAAmB,EACnBH,EAAStG,UAAU/yB,IAAI,6BAEvBq5B,EAASC,QAAQC,IAAM,SAEvBrB,GAAgBh+D,GAEhBoiB,YAAW,WACP+8C,EAAStG,UAAUN,OAAO,kBAC3B,MAnBwB,4CAqBhC,GAEHllC,GAAW,MAEhB,OGPPksC,CAAaZ,EAAgB,CACzBO,MNkBgB9lE,EMlBF,ONmBXsjE,GAAStjE,MMjBhB4jE,GAAU2B,GACVa,GAAWb,GC9CA,SAAC9Q,GACPA,EAAU9vD,OAAO89D,eAItBhO,EAAU5X,GAAG,gBAAgB,WAAuB,IAAtB4Y,EAAsB,uDAAP,GACzC,GAAIlT,EAAOjD,QAAS,CAChB,IAAMof,EAAmBjK,EAAU0J,eAAeG,cAAc,uBAC1DjiD,EAAsC,eAA5Bo5C,EAAac,WAA8B,OAAS,UAEpE9B,EAAU5X,GAAG,eAAe,WACxB6hB,EAAiBtiD,MAAMC,QAAUA,SDoC7CqiD,CAAiB6G,GACjBc,GAAed,GEpCJ,SAAC9Q,GACZA,EAAU5X,GAAG,gBAAgB,WACzB5zC,KAAKi1C,aACDuW,EAAU9vD,OACV,UACA,SAAC2hE,GAAD,OAjBqB9sD,EAiBe8sD,EAnBlBlN,EAmB+C3E,EAAU0J,qBAjBhD2H,EAFK1M,EAAUkF,cAAc,wBAI5DwH,EAAK1pD,MAAMC,QAAU,GAIjB7C,GAAQA,EAAK8sD,QAAiC,IAAvB9sD,EAAK8sD,OAAOr4D,SACnC63D,EAAK1pD,MAAMC,QAAU,UAPD,IAAC7C,EAAMssD,EAFT1M,Y,GFmD1BmN,CAAWhB,G,gUGvCf,IAAMiB,GAAc,SAAU5/D,GAK1BqC,KAAKtE,OAAS,KACdsE,KAAK+kD,OAAS,KACd/kD,KAAKrC,OAASA,EAEdqC,KAAKw9D,cAAe,EAMpBx9D,KAAKy9D,WAAY,EAOjBz9D,KAAKwsD,aAAe,KAOpBxsD,KAAKs2D,YAAc,KAMnBt2D,KAAK09D,SAAW,IAAIxL,GACpBlyD,KAAKk0C,SAASl0C,KAAK09D,SAAU,SAAU19D,KAAK29D,iBAAkB39D,MAO9DA,KAAK03D,WAAY,EAOjB13D,KAAK43D,WAAa,MAWtB,SAASJ,GAAap4C,GAClBpf,KAAKk0C,SAASl0C,KAAKtE,OAAQ0jB,EAAOpf,KAAKm1C,QAAQn9C,KAAKgI,KAAMof,IAS9D,SAASw+C,GAAaz4D,GAClB,OAAO,WACH,IAAMka,EAAOnW,MAAM9Q,UAAUiP,MAAM1Q,KAAK+O,WAExC,OAAK1F,KAAKtE,OAMHsE,KAAKtE,OAAOyJ,GAAQM,MAAMzF,KAAMqf,IAJnCkJ,QAAQgN,KAAR,iBAAuBpwB,EAAvB,+CACO,OAoBnB,SAAS04D,GAAcC,GAGnB,MAFiB,CAAEC,IAAK,UAAWC,IAAK,UAAWC,KAAM,YAEzCH,GA2CpB,SAASI,GAAuBC,GAAa,WACnCC,EAAS,SAACt9B,GACRA,EAAWq9B,GACX,EAAKhpB,QAAQ,cAAej1C,KAAKuQ,MAAMqwB,KAI/C9gC,KAAK4zC,GAAG,OAAQwqB,GAEhBp+D,KAAK+0C,KAAK,wBAAwB,WAC9B/0C,KAAKy0C,IAAI,OAAQ2pB,MAQzB,SAASlvB,GAAQ1C,EAAS6xB,GACtBr+D,KAAKm1C,QAAQ,QAASkD,EAAME,OAAO/L,EAAS6xB,IAGhDd,GAAYnlE,UAAY,CACpBujD,WADoB,WAEhB37C,KAAKtE,OAASuzC,SAASjvC,KAAKrC,OAAOtG,IAAI,SACvC2I,KAAKm1C,QAAQ,eAGjBmpB,MANoB,WAMZ,WACJt+D,KAAK27C,aAGA37C,KAAKtE,OAAO4iE,MAMjBt+D,KAAKmqD,YAAYhjC,MAAK,SAACxpB,GAAW,IAEtBjC,EAAW,EAAXA,OAERA,EAAO4iE,MAAM3gE,GAEbg/D,GAAQ,GACR4B,GAAiB,GAEb,EAAKxZ,QAAsC,SAA5B,EAAKA,OAAO1tD,IAAI,SAC/B0J,GAAQ46C,WAAW,EAAKjgD,OAAQ,CAC5B8iE,YAAa,YACbC,iBAAiB,IAGzBhT,EAAO,MAAMtrC,IAAI,SAAUxiB,GAG3B06C,EAAM1U,KAAK,CACP,OAAQ,eAAgB,kBAAmB,UAAW,SAAU,sBAAuB,UACvF,aAAc,SAAU,QACzB6zB,GAAc,GAEjB,EAAKtjB,SAASx4C,EAAQ,mBAAoB,EAAKia,QAAS,GACxD,EAAKu+B,SAASx4C,EAAQ,eAAgB,EAAKgjE,mBAAoB,GAE/D,EAAKxqB,SAASx4C,EAAQ,OAAQ,EAAKijE,OAAQ,GAC3C,EAAKzqB,SAASx4C,EAAQ,QAAS,EAAKkjE,QAAS,GAC7C,EAAK1qB,SAASx4C,EAAQ,WAAY,EAAKmjE,WAAY,GACnD,EAAK3qB,SAASx4C,EAAQ,QAASwzC,GAAQl3C,KAAK,EAAM,CAC9C2/C,YAAawW,GAASxW,YAAYh6C,MAGtC,EAAKu2C,SAASx4C,EAAQ,OAAQ,EAAK0iE,OAAQ,GAC3C,EAAKlqB,SAASx4C,EAAQ,SAAU,EAAKojE,eAAgB,GACrD,EAAK5qB,SAASx4C,EAAQ,WAAY,EAAKqjE,WAAY,GACnD,EAAK7qB,SAASx4C,EAAQ,sBAAuB,EAAKsjE,sBAAuB,GAEzE,EAAK9qB,SAASx4C,EAAQ,OAAQ,EAAKujE,OAAQ,GAC3C,EAAK/qB,SAASx4C,EAAQ,oBAAqB,EAAKwjE,oBAAqB,GAErE,EAAKhrB,SAASx4C,EAAQ,QAAQ,SAAU6U,GACpCvQ,KAAKs2D,YAAc/lD,EAAKrE,SACzB,GACH,EAAKgoC,SAASx4C,EAAQ,UAAU,WAC5BsE,KAAKm1C,QAAQ,SAAUn1C,KAAKs2D,aAE5Bt2D,KAAKs2D,YAAc,OACpB,GAGH,EAAKvhB,KAAK,gBAAgB,WACtB/0C,KAAKk0C,SAASx4C,EAAQ,kBAAmBsE,KAAKrE,KAAMqE,QACrD,GAEH,EAAK+0C,KAAK,eAAe,WACrB/0C,KAAKi1C,aAAav5C,EAAQ,gBAAgB,WACtCsE,KAAKm1C,QAAQ,eAAgBn1C,KAAKm/D,qBACnCn/D,QACJ,GAEH,EAAK4zC,GAAG,eAAe,WACnB,EAAK6pB,WAAY,KAGrB,EAAKvpB,SAASx4C,EAAQ,gBAAgB,SAAU6U,GACxCA,GAAQA,EAAKgnD,aACbv3D,KAAK43D,WAAaiG,GAActtD,EAAKgnD,cAGlB,IAAnBv3D,KAAK03D,YACL13D,KAAKm1C,QAAQ,cAAe,CACxBrU,SAAU9gC,KAAK43D,WACfxqB,SAAU78B,GAAQA,EAAK68B,SACvBp7B,KAAMzB,IAGVvQ,KAAK03D,WAAY,GAGrB13D,KAAKm1C,QAAQ,aAET5kC,GAAQA,EAAK68B,UACbptC,KAAKm1C,QAAQ,SA5JjC,SAAqB5kC,GAAM,IACf6uD,EAAa7uD,EAAb6uD,SACFC,EAAM9uD,GAAQA,EAAK68B,SAErBr0C,EAAS,UACTumE,EAAa,KACbC,EAAS,KAcb,OAZIF,IAEIA,EAAIxe,MAAQtwC,EAAK9L,MACjB1L,EAAS,SACTumE,EAAa,gBAAH,OAAmBF,EAAnB,OAKdG,GAFAA,EAASr2D,MAAM9Q,UAAUiP,MAAM1Q,KAAK0oE,EAAIpE,iBAAiBqE,MAEtCC,EAAO,GAAKA,EAAO,GAAK,MAGxC,CACHH,SAAUA,EACVhkD,MAAO7K,EAAKivD,SACZ7iC,IAAK4iC,EACLxmE,OAAQA,EACRiZ,KAAMzB,GAmI6BkvD,CAAYlvD,MAExC,GAEH,EAAK2jC,SAASx4C,EAAQ,WAAW,SAAU6U,GACnCA,GAAQA,EAAKgnD,aACbv3D,KAAK43D,WAAaiG,GAActtD,EAAKgnD,eAE1C,GAEH,EAAKrjB,SAASx4C,EAAQ,UAAU,SAAU6U,GAClCA,EAAKuwB,UAAYvwB,EAAKoyC,UACtB3iD,KAAKm1C,QAAQ,aAAc5kC,EAAKuwB,SAAUvwB,EAAKoyC,YAEpD,GAEH,EAAK/O,GAAG,eAAe,WACnB5zC,KAAKi1C,aAAav5C,EAAQ,cAAc,YACb,IAAnBsE,KAAK03D,YACL13D,KAAKm1C,QAAQ,iBAAkB,CAC3BrU,SAAU9gC,KAAK43D,aAGnB53D,KAAK03D,WAAY,KAEtB13D,QACJ,GAEH,EAAKk0C,SAASx4C,EAAQ,aAAa,WAC/BsE,KAAKm1C,QAAQ,eACd,GAEH,EAAKjB,SAASx4C,EAAQ,cAAc,WAChCsE,KAAKm1C,QAAQ,gBACd,GAEH,EAAKqoB,cAAe,EAEpB/R,EAAO,MAAMtrC,KAAI,SAACA,GACd,EAAK+zB,SAASx4C,EAAQ,OAAO,SAAU0jB,GAC/B,CAAC,gBAAgBrf,QAAQqf,GAAS,GAClCe,EAAIf,EAAOlW,MAAM9Q,UAAUiP,MAAM1Q,KAAK+O,UAAW,UAK7D,EAAKyvC,QAAQ,YArIb5sB,QAAQM,MAAR,+CAAsD7oB,KAAKrC,OAAOtG,IAAI,QAAtE,gBAyIRqoE,SArJoB,SAqJX3a,GAAQ,WAEb/kD,KAAK+kD,OAASA,EAEd/kD,KAAKqwB,SAAS,YAETrwB,KAAKw9D,aAGNx9D,KAAKmqD,UAAUpF,GAAQ59B,MAAK,SAACxpB,GACzB,EAAKjC,OAAOmzD,KAAKlxD,EAAOvB,UAGpB2oD,EAAOb,iBAAmB,EAE1B,EAAKxoD,OAAOC,MAAK,GAEjB,EAAKD,OAAOi0B,UAVpB3vB,KAAKs+D,SAgBPqB,eA5Kc,SA4KC7mE,GAAM,8HACjB4nD,EAAsB,UAAT5nD,GAAoB,EAAKisD,OAAOH,gBAAkB,MAAQ,MAC7Er8B,QAAQpI,IAAIm5B,EAAOjD,SACnB9tB,QAAQpI,IAAIugC,GAHW,SAIC,EAAK/iD,OAAO+yD,aAAahQ,GAJ1B,OAIjB2D,EAJiB,OAKjBub,EAAe,EAAKjiE,OAAO2mD,UAAU,EAAKS,QAChD,EAAKrpD,OAAOmzD,KAAK,CAAC,CACdn9C,GAAI,EAAKqzC,OAAO5B,QAChBpH,MAAO6jB,EAEP9S,QAAS,CAAC,CACNE,KAAM3I,EAENvrD,KAAM4nD,EACN3iD,SAAS,IAEb4uD,UAAW,EAAK2K,iBAChBuI,aAAc/mE,EACdo0D,OAAQ,MAGZ,EAAKxxD,OAAOC,MAAK,GArBM,8CA2B3B00B,SAvMoB,WAwMhBrwB,KAAK03D,WAAY,EAGb13D,KAAKs3D,iBAAmB,GAAKt3D,KAAKs3D,mBAAqBt3D,KAAKqjD,eAC5DrjD,KAAKm1C,QAAQ,aAQrB+f,aApNoB,WAqNhB,OAAOl1D,KAAKtE,OAAOw5D,gBAOvB4K,UA5NoB,WA6NhB,OAAO9/D,KAAKtE,OAAOokE,aAOvBC,UApOoB,SAoOVjkE,GACNkE,KAAKtE,OAAOqkE,UAAUjkE,IAO1BkkE,QA5OoB,WA6OhB,OAAOhgE,KAAKtE,OAAOskE,WAOvBC,QApPoB,SAoPZxoE,GACJuI,KAAKtE,OAAOukE,QAAQxoE,IAMxB8hE,KA3PoB,SA2Pfv4D,GAE6B,IAA1BhB,KAAKs3D,kBAG0B,YAA3Bt3D,KAAKtE,OAAOwkE,YACZlgE,KAAKrE,OAGTqE,KAAK+0C,KAAK,YAAa/0C,KAAKtE,OAAO69D,KAAKvhE,KAAKgI,KAAKtE,OAAQsF,KAE1DhB,KAAKtE,OAAO69D,KAAKv4D,IASzBmpD,UA/QoB,SA+QVpF,GAAQ,WACRob,EAAapb,GAAU/kD,KAAKy5D,YAElC,OAAOz5D,KAAKrC,OACPmzD,YAAYqP,GACZh5C,KAAKq1C,IACL3L,OAAM,SAACjoC,GACJ,EAAKusB,QAAQ,QAASvsB,OASlCgnC,UA/RoB,SA+RV7K,GACN/kD,KAAK+kD,OAASA,GAQlB0U,UAxSoB,WAyShB,OAAOz5D,KAAK+kD,QAMhBqb,YA/SoB,WAgThB,OAAOpgE,KAAK03D,WAShB2I,WAzToB,WAyTP,WACT,OAAO,IAAIhrD,SAAQ,SAACC,GAEX,EAAKkoD,aAINloD,KAHA,EAAKgpD,QACL,EAAK5iE,OAAOk4C,GAAG,QAASt+B,QAUpC3Z,KAxUoB,WA0UhBqE,KAAKqgE,aACAl5C,KAAKnnB,KAAKtE,OAAOC,KAAK3D,KAAKgI,KAAKtE,UAOzCG,MAlVoB,SAkVdykE,GACFtgE,KAAKtE,OAAOG,MAAMykE,IAMhB3wC,KAzVc,WAyVP,yHAGc,IAAnB,EAAK8tC,UAHA,wBAIL,EAAKtoB,QAAQ,WAAY,QAJpB,SAMsB,EAAKgV,YAN3B,gBAMG/tD,EANH,EAMGA,SAER,EAAKV,OAAOmzD,KAAKzyD,GACjB,EAAKV,OAAOi0B,OAGZ,EAAK68B,aAAe,KAEpB,EAAKiR,WAAY,EAdZ,+CAqBbvH,OA9WoB,WAgXhBl2D,KAAKy0C,MAEDz0C,KAAKtE,SACLsE,KAAKnE,OAAM,GAEXmE,KAAKtE,OAAO+4C,MACZz0C,KAAKtE,OAAOw6D,SAEZl2D,KAAKm1C,QAAQ,YASrBkO,YAjYoB,WAkYhB,IAAMV,EAAW3iD,KAAKtE,OAAO2nD,cAE7B,OAAIV,EAAW,GACHA,EAGLA,GAQX2U,eAhZoB,WAgZH,IACPhB,EAAgBt2D,KAAhBs2D,YAEN,OAAIA,IAMCt2D,KAAKtE,QAIV46D,EAAct2D,KAAKtE,OAAO49D,eAER,EACNt5D,KAAKqjD,cAAgBiT,EAG1Bt2D,KAAKtE,OAAO49D,cATR,IAYf4G,SAtaoB,WAuahB,OAAIlgE,KAAKogE,cACE,YAGJpgE,KAAKtE,OAAOwkE,YAIvBK,WA/aoB,WAgbhB,GAAIvgE,KAAKtE,OACL,OAAOsE,KAAKtE,OAAO6kE,cAU3Bjc,UA3boB,SA2bVS,EAAQoL,GACd,OAAOnwD,KAAKrC,OAAO2mD,UAAUS,EAAQoL,IASzCqQ,YArcoB,WAschB,IAAMC,EAAWzgE,KAAKtE,OAAO8kE,cAE7B,OAAIC,GAA8B,UAAlBA,EAAS1pE,KACd,QAGJ,SAQXooE,gBApdoB,WAqdhB,IAAMuB,EAAiB1gE,KAAKtE,OAAOyjE,kBAC7B1c,EAAWziD,KAAKy5D,YAAY9U,cAYlC,OATAtM,EAAM1U,KAAK+8B,GAAgB,SAACtT,GACxB/U,EAAM1U,KAAK8e,GAAU,SAACnG,GACd8Q,EAAQ17C,KAAO4qC,EAAK/8C,MACpB6tD,EAAQn6B,SAAWqpB,EAAKrpB,SACxBm6B,EAAQrvD,QAAUu+C,EAAKv+C,eAK5B2iE,GAOXC,mBAzeoB,SAyeD15D,GACf,IAAIqrD,EAAWrrD,GAAS,EAEnBoxC,EAAMM,SAAS1xC,KAChBoxC,EAAM1U,KAAK3jC,KAAKm/D,mBAAmB,SAAC/R,EAASwT,GACrCxT,GAAWA,EAAQn6B,WAAahsB,IAChCqrD,EAAWsO,MAKdvoB,EAAMM,SAAS2Z,KAChBA,EAAW,IAKnBtyD,KAAKtE,OAAOilE,mBAAmBrO,IAMnC38C,QAhgBoB,SAggBZpF,GAAM,IACF1O,EAAS0O,EAAT1O,KACFswB,EAAU5hB,EAAK4hB,QAAU5hB,EAAK4hB,QAAQ/qB,WAAa,GAYzD,KANmB,CACf,0BACA,0BAIWrH,QAAQoyB,IAAY,GAInC,OAAa,SAATtwB,GAGA7B,KAAKnE,aACLmE,KAAKm1C,QAAQ,sBAIjBn1C,KAAKm1C,QAAQ,QAAS,CAClBhjB,UACAtwB,UAQR68D,mBApiBoB,SAoiBDlS,GAAc,WAC7B,IAAKxsD,KAAKwsD,cAAgBxsD,KAAKwsD,aAAaQ,OAASR,EAAalQ,KAAK0Q,KAAM,CAEzEhtD,KAAK40C,cAAc50C,KAAKtE,OAAQ,cAE3BsE,KAAKwsD,cAAgBxsD,KAAKwsD,aAAa96C,KAAO86C,EAAalQ,KAAK5qC,KAEjE1R,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,cAAc,WACrCsE,KAAK+kD,OAAOb,iBAAmB,GAC/BlkD,KAAKm1C,QAAQ,iBAElBn1C,MAICA,KAAK+kD,OAAOxB,YAGZvjD,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,gBAAgB,WACtCsE,KAAKrC,OAAO8yD,iBAA8C,YAA3BzwD,KAAKtE,OAAOwkE,YAC5ClgE,KAAKrE,SAEVqE,MAGPA,KAAKm1C,QAAQ,eAAgBqX,EAAalQ,MAI1Ct8C,KAAK03D,WAAY,EAEjB13D,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,cAAc,WACzC,EAAKmlE,eAAiBrU,EAAalQ,KAAK5qC,GACxC,EAAKovD,iBAAiB,EAAKD,oBAInC7gE,KAAKwsD,aAAeA,EAAalQ,KAGjC,IAAMykB,EAAkB/gE,KAAK+kD,OAAOG,gBAAgB,OAGhD6b,EAAkB,GAClB7C,GAAuBvnE,KAAKqJ,KAAM+gE,KAW9C3C,OA3lBoB,SA2lBb7tD,GACCA,EAAKuwB,SAAW,EAChB9gC,KAAKm1C,QAAQ,SAAU5kC,EAAKoyC,SAAWpyC,EAAKuwB,WAAavwB,EAAKoyC,UAE9D3iD,KAAKm1C,QAAQ,OAAQ5kC,EAAKuwB,SAAUvwB,EAAKoyC,WAOjDme,iBAtmBoB,SAsmBHD,GAAgB,WAEvBve,EAAYtiD,KAAK+kD,OAAO1tD,IAAI,aAC5B20D,EAAYhsD,KAAK+kD,OAAOG,gBAAgB,UAAY,EAEtD5L,EAAOtC,qBAAqC,UAAdsL,GAC9BjK,EAAMW,YAAYh5C,KAAKk1D,eAAgB,uBAG3Cl1D,KAAK+0C,KAAK,QAAQ,WAGV8rB,IAAmB,EAAK9b,OAAO5B,SAC/B,EAAKhO,QAAQ,YAAa6W,OAQtC8S,eA3nBoB,SA2nBLvuD,GACXvQ,KAAK09D,SAASrL,OAAO9hD,EAAK6wC,QAG9B2d,WA/nBoB,SA+nBTV,GAAW,IACV2C,EAAa3C,EAAb2C,SAERhhE,KAAKm1C,QAAQ,WAAY,CACrB6rB,cAIRhC,sBAvoBoB,SAuoBEzuD,GAGH,qBAFIA,EAAXqY,QAGJ5oB,KAAKtE,OAAOukE,SAAQ,IAI5BtC,iBA/oBoB,SA+oBHsD,EAAiBC,GAE1BA,EAAiBnU,OACjB1U,EAAMW,YAAYh5C,KAAKk1D,eAAvB,uBAAuDgM,EAAiBnU,QAG5E1U,EAAMU,SAAS/4C,KAAKk1D,eAApB,uBAAoD+L,EAAgBlU,QAEpE/sD,KAAKm1C,QAAQ,WAAY8rB,EAAiBC,IASxCnV,cAhqBc,SAgqBAoV,EAAcnV,GAAW,iIACzBzrD,GADyB,SAE1B,EAAK5C,OAAOiuD,kBAAkBuV,GAFJ,wBAGrCnV,EAHqC,MAErCvnD,IAFqC,KAGrCunD,UAHqC,MACnCtC,EADmC,KAChBqC,cADgB,gBAMnCqV,EAAe,kBAAM1X,EAAQyC,QAAQ,EAAKzwD,OAAO47D,mBAEvD5N,EAAQxa,SAAQ,WACZ,EAAK0E,GAAG,OAAQwtB,GAEhB,EAAKxtB,GAAG,YAAY,kBAAM,EAAKa,IAAI,OAAQ2sB,SAG/C1X,EAAQ0C,QAAQ,SAAUiV,GAAO,WACvBvgC,GAAa5gC,KAAK+f,IAAIjgB,KAAKtE,OAAO49D,eACxCt5D,KAAKy0C,IAAI,OAAQ2sB,GAEjBphE,KAAK+0C,KAAK,kBAAkB,WACxB,EAAKE,aAAa,EAAKv5C,OAAQ,sBAAsB,WACjD,EAAKA,OAAO69D,KAAKz4B,SAIzB9gC,KAAKtE,OAAO4lE,OAAOD,IACrBrpE,KAAK,IAzBkC,+CAgC7CknE,oBAhsBoB,SAgsBA3uD,GAChB,GAAKvQ,KAAK+kD,OAAOrB,SAAjB,CADsB,MAKUnzC,EAAKisC,UAAY,GAAzC/3C,EALc,EAKdA,IAAK88D,EALS,EAKTA,QAAS/zD,EALA,EAKAA,MAEV,kBAAR/I,EACAzE,KAAK+rD,cAAclnC,SAAS08C,EAAS,IAAK/zD,GAC3B,iBAAR/I,GACPzE,KAAKtE,OAAO8lE,WAQpBvC,OAltBoB,SAktBb1uD,GACH,GAAKvQ,KAAK+kD,OAAOrB,SAAjB,CAIA,IAAMzD,EAAS1vC,EAAKisC,UAAYjsC,EAAKisC,SAASilB,KAE9C,GAAIxhB,EAAQ,CAGR,GAAIA,EAAOyhB,UAAYpoB,EAAO9C,WAAY,CACtC,IAAMmM,EAAW99B,SAASo7B,EAAOyhB,SAAU,IAC3C1hE,KAAK+rD,cAAcpJ,EAAU,OAKT,QAApB1C,EAAO0hB,UAAsBroB,EAAO9C,YACpCx2C,KAAKtE,OAAO8lE,YAKxB7C,OAzuBoB,SAyuBbpuD,GACHvQ,KAAKm1C,QAAQ,OAAQ,CACjBysB,WAAYrxD,EAAKqxD,cAGzBhD,QA9uBoB,SA8uBZruD,GACJ8nC,EAAMW,YAAYh5C,KAAKk1D,eAAgB,sBAEvCl1D,KAAKm1C,QAAQ,QAAS5kC,IAM1BsuD,WAvvBoB,WAyvBhB7+D,KAAKm1C,QAAQ,cAQrBkD,EAAME,OAAOglB,GAAYnlE,UAAWigD,EAAM9E,OA/0B1C,SAAwBh6B,GACpB,IAAMsoD,EAAmB,GAMzB,OAJAxpB,EAAM1U,KAAKpqB,GAAS,SAAUpU,GAC1B08D,EAAiB18D,GAAUy4D,GAAajnE,KAAKqJ,KAAMmF,KACpDnF,MAEI6hE,GAw0BsDlrE,KAAK4mE,GAAYnlE,UAAW,CACzF,qBAAsB,uBAIX0pE,Od9uBA,SAAUxO,GAAQ,IACrBgL,EAAUhL,EAAOl7D,UAAjBkmE,MAGR,IAAKjmB,EAAMiB,OAAOzC,YACd,OAAOyc,EAUX,SAASyO,EAAYhrE,EAAMkJ,GACvB,IAAM+hE,EAAe1O,EAAOl7D,UAAUrB,GAEtCu8D,EAAOl7D,UAAUrB,GAAQ,WACrB,IAAMsoB,EAAOnW,MAAM9Q,UAAUiP,MAAM1Q,KAAK+O,WAExC,OAAiC,IAA7BipC,IAAI2kB,OAAOC,cACJyO,EAAav8D,MAAMzF,KAAMqf,GAG7Bpf,EAAGtJ,KAAKqJ,KAAMgiE,EAAc3iD,IAoD3C,OAhDAi0C,EAAOl7D,UAAUkmE,MAAQ,WAErB,OADAt+D,KAAK+0C,KAAK,QAAS7F,IACZovB,EAAM3nE,KAAKqJ,OAItB+hE,EAAY,oBAAoB,SAAUjB,GAClC9gE,KAAKk3D,aACLl3D,KAAKtE,OAAOq5C,KAAK,QAAQ,WACrB/0C,KAAKtE,OAAOq5C,KAAK,sBAAsB,WACnC+rB,EAAiBnqE,KAAKqJ,KAAMA,KAAK6gE,kBAClC7gE,QACJA,MAEH8gE,EAAiBnqE,KAAKqJ,KAAMA,KAAK6gE,mBAIzCkB,EAAY,UAAU,SAAU3D,EAAQ/+C,GAC/Brf,KAAK03D,YAAsC,IAAzB13D,KAAKm3D,iBACxBiH,EAAO34D,MAAMzF,KAAMqf,MAK3B0iD,EAAY,UAAU,SAAUpD,EAAQt/C,GACpC,IAA6B,IAAzBrf,KAAKm3D,gBACL,OAAOwH,EAAOl5D,MAAMzF,KAAMqf,MAKlC0iD,EAAY,WAAW,SAAUnD,EAASv/C,IACf,IAAnBrf,KAAK03D,YAAgD,IAAzB13D,KAAKm3D,iBACjCyH,EAAQn5D,MAAMzF,KAAMqf,MAI5B0iD,EAAY,cAAc,SAAUlD,EAAYx/C,IACrB,IAAnBrf,KAAK03D,YAAiD,IAAzB13D,KAAKm3D,sBAAsDp9D,IAAzBiG,KAAKm3D,gBAGpEn3D,KAAKi1C,aAAaj1C,KAAK0zC,OAAQ,mBAAmB,WAC9CmrB,EAAWp5D,MAAMzF,KAAMqf,KACxBrf,MAJH6+D,EAAWp5D,MAAMzF,KAAMqf,MAQxBi0C,EciqBIwO,CAAWvE,I,aCn7BpB0E,G,oHACN/qE,OAAO8sB,OAAOi+C,GAAU7pE,UAAW8pE,GAEpBD,UCRf,SAASE,GAAetoE,EAAQd,GAAQ,2BACpC,YAAgB+xB,QAAQC,QAAQhyB,GAAhC,+CAAyC,KAAhChB,EAAgC,QACrC,GAAY,gBAARA,GAAiC,cAARA,GAA+B,SAARA,EAAgB,CAChE,IAAIwX,EAAOrY,OAAO+O,yBAAyBlN,EAAQhB,GACnDb,OAAOC,eAAe0C,EAAQ9B,EAAKwX,KAJP,mF,ynCCIlC6yD,G,YACF,WAAY51B,GAAS,yBACjB,6BAEK9wC,OAAS,KACd,EAAKqb,GAAK,KAEqB,mBAApB,EAAK4kC,YACZ,EAAKA,WAAWnP,GAPH,E,iEAajB,MAAM,IAAI5f,MAAM,4C,0IAUVlxB,GACNsE,KAAKtE,OAASA,EACdsE,KAAKs+D,MAAM5iE,Q,gCA1BOumE,IAwCXG,M,gUCxCf,IAAM7qB,GAAU,GAwCD8qB,GAtCC,CACZC,SADY,SACHxT,GACL,IAAM/3D,EAAO+3D,EAAOyT,UAGfhrB,GAAQxgD,KACTwgD,GAAQxgD,GDsBA,SAAC+3D,GAAW,IACtB0T,EADsB,kGACIJ,IAEhC,OADAD,GAAeK,EAAkBpqE,UAAW02D,GACrC0T,ECzBiBC,CAAkB3T,KAI1CD,KAVY,SAUPriB,GAED,IAAKA,EAED,OAAOn3B,QAAQC,UAGnB,IAAMotD,EAAUxrE,OAAO4G,KAAK0uC,GAPlB,mCAUV,WAA0Bm2B,GAA1B,SAAA1/D,EAAA,+EAEcuS,aAAamtD,GAF3B,sDAIQlX,IAAS5iC,MAAT,uCAA+C85C,IAJvD,gCAOWA,GAPX,yDAVU,sBAoBV,OAAOttD,QAAQoU,IAAIi5C,EAAQv0D,KApBjB,gDAuBd9W,IAjCY,SAiCRN,GACA,OAAOwgD,GAAQxgD,K,uOCnCRshD,SAAME,OAAO,CACxBvnB,SAAU,KAEV69B,KAHwB,WAGjB,WACH,OAAI1sD,OAAOygE,QACP5iE,KAAKgxB,UAAW,EACT3b,QAAQC,YACK,IAAlBtV,KAAKgxB,SAEA3b,QAAQI,OAAO,CAClBotD,WAAW,IAKZxqB,EAAMhiC,WAAW1Y,IAAOyC,IAAIG,SAASG,KAAKymB,MAAK,WAElD,EAAK6J,SAAoC,WAAzB,GAAO7uB,OAAOygE,WAC/B/R,OAAM,SAAChoC,GAIN,OAFA,EAAKmI,UAAW,EAET3b,QAAQI,OAAO,CAClBotD,WAAW,EACXh6C,cAKZi6C,UA7BwB,SA6BdC,EAAO5Z,GAAY,WACzB,OAAOnpD,KAAK6uD,OAAO1nC,MAAK,WACpB,IAAM67C,EAAY3qB,EAAMG,MAAM,CAC1ByqB,SAAUF,GACX5Z,GAEHyZ,OAAOjiE,MAAQhD,IAAOyC,IAAIG,SAASI,MAEnCiiE,OAAOE,UAAUzqB,EAAME,OAAO,GAAIyqB,IAElCJ,OAAOM,SAAS,CAACH,IACjBH,OAAOO,QAAQ,WAAYJ,EAAO,EAAK5tB,QAAQn9C,KAAK,EAAM,WAAY+qE,OACvElS,OAAM,SAAChoC,GACFA,EAAMg6C,WACNpX,EAAO,OAAOtrC,IAAI,8BAK9BijD,QAhDwB,SAgDhBL,GACA/iE,KAAKgxB,UACL4xC,OAAOQ,QAAQL,IAIvBM,WAtDwB,SAsDbN,GACH/iE,KAAKgxB,UACL4xC,OAAOU,QAAQ,CAACP,KAIxBQ,UA5DwB,SA4DdR,EAAOS,GACb,IAAMhmC,EAAO,CACT3Y,SAAS2+C,EAAY,GAAI,IACzB3+C,SAAS2+C,EAAY,GAAI,KAGzBxjE,KAAKgxB,UACL4xC,OAAOa,SAASV,EAAOvlC,IAI/BiX,IAvEwB,SAuEpBwuB,GACIjjE,KAAKgxB,UACL4xC,OAAOc,SAAS,WAAYT,KAGrC5qB,EAAM9E,Q,kqBC3EHowB,G,YACF,WAAYn3B,GAAS,a,4FAAA,UACjB,0BAAMA,KAEDo3B,aAAe,EACpB,EAAKC,eAAiB,EAJL,E,mPADCzB,IAc1B,SAAS0B,GAAU9B,GAEf,OAAO,WACH,GAAIhiE,KAAK+jE,YACL,OAAO/B,EAAav8D,MAAMzF,KAAMkJ,MAAM9Q,UAAUiP,MAAM1Q,KAAK+O,aAKvE,SAASs+D,GAAYhC,GAEjB,OAAO,WACH,IAA0B,IAAtBhiE,KAAK4jE,aAAsB5jE,KAAK6jE,eAAiB7jE,KAAK4jE,YACtD,OAAO5B,EAAav8D,MAAMzF,KAAMkJ,MAAM9Q,UAAUiP,MAAM1Q,KAAK+O,aAKvE2yC,EAAME,OAAOorB,GAAYvrE,UAAW,CAChC4mB,QAAS,EACTujD,QAFgC,WAG5B,MAAO,eAGXkB,SAAUK,IAAU,SAAU1iB,EAAOC,GACjC,IAAI7jB,EAAQ4jB,GAASC,EAAU,CAACD,EAAOC,GAAU,KAE5C7jB,IAEDA,EAAO,EADPA,EAAOx9B,KAAKtE,OAAOw5D,eAAe+O,yBACrB7iB,MAAO5jB,EAAK6jB,SAG7B9gD,GAASgjE,UAAUvjE,KAAKmzD,YAAa31B,MAGzCqxB,KAAMiV,IAAU,SAAUI,GACtBlkE,KAAKk0C,SAAS3zC,GAAU,YAAY,SAAUs3D,EAAM0H,GAE5C2E,IAAiBrM,IAIrB73D,KAAKyjE,WACLprB,EAAMU,SAAS/4C,KAAK+W,GAAI,2BAExB/W,KAAKm1C,QAAQ,YAAa,CACtB0iB,OACAsM,WAAY5E,EAAO4E,aAGvBnkE,KAAKokE,eAAgB,KACtBpkE,MAEHO,GAASuiE,UACLoB,EACAlkE,KAAK+jE,aACP58C,MAAK,WACH5mB,GAAS6iE,QAAQc,SAIzBG,KAAML,GAAYF,IAAU,SAAUvzD,GAAM,IAChC6mD,EAAgB7mD,EAAhB6mD,iBAIYr9D,IAAhBq9D,GAA6C,aAAhBA,GAA8C,wBAAhBA,GACb,IAA3Cp3D,KAAKtE,OAAO0+C,MAAM1+C,OAAO4oE,gBAC5BtkE,KAAK6jE,gBAAkB,GAEI,IAAvB7jE,KAAKokE,cACL7jE,GAAS8iE,WAAWrjE,KAAKmzD,aAEzBnzD,KAAK6uD,KAAK7uD,KAAKmzD,kBAK3Bz6D,KAAMorE,IAAU,WACZzrB,EAAMW,YAAYh5C,KAAK+W,GAAI,8BAO/B6nD,QAASoF,IAAY,SAAUzzD,GAAM,WAC7Bg0D,EAAU,KAEd,SAASC,IACDD,IACA7wC,aAAa6wC,GACbA,EAAU,MAIlBA,EAAUxkD,YAAW,WAGjB,EAAK60B,cAAc,EAAKl5C,OAAO0+C,MAAO,OAAQoqB,GAE9C,EAAKH,KAAK9zD,KACX,IAGHvQ,KAAKi1C,aAAaj1C,KAAKtE,OAAO0+C,MAAO,OAAQoqB,MAGjDC,cA1FgC,WA2F5BzkE,KAAKtE,OAAOC,OACZ08C,EAAMW,YAAYh5C,KAAK+W,GAAI,4BAG/BunD,MA/FgC,WAgG5BqF,GAAYvrE,UAAU4mB,SAAW,EACjChf,KAAKmzD,YAAL,2BAAuCwQ,GAAYvrE,UAAU4mB,SAE7Dhf,KAAKk0C,SAASl0C,KAAKtE,OAAO0+C,MAAO,gBAAgB,SAAUkC,GAAM,IACrDyO,EAAiBzO,EAAjByO,aAEJA,GAAgBA,EAAalvD,QAE7BmE,KAAK4jE,iBAAyD,IAAnC7Y,EAAalvD,MAAM+nE,aAAgC,EAAI/+C,SAASkmC,EAAalvD,MAAM+nE,YAAa,IAE3H5jE,KAAK6jE,eAAiB,EACtB7jE,KAAK0kE,OAAO3Z,EAAalvD,UAE9BmE,MAEHA,KAAKk0C,SAASl0C,KAAKtE,OAAO0+C,MAAO,QAASp6C,KAAK4+D,QAAS5+D,MACxDA,KAAKk0C,SAASl0C,KAAKtE,OAAQ,OAAQsE,KAAKtH,KAAMsH,OAGlD0kE,OAnHgC,SAmHzBC,GAAc,WACXC,EAAwB5kE,KAAKmzD,YAEnCnzD,KAAK+jE,YAAcY,EACnB3kE,KAAK+W,GAAKshC,EAAMQ,WAAWR,EAAMa,SAAS2rB,KAAe,CACrDD,sBAAuBA,EACvBE,UAAWA,QAGf,IAAM5Q,EAAal0D,KAAK+W,GAAGs+C,cAAc,qBACnC0P,EAAc/kE,KAAK+W,GAAGs+C,cAAc,oBAEtCnB,GACAA,EAAWt0C,iBAAiB,QAAS5f,KAAKykE,cAAczsE,KAAKgI,OAAO,GAGpE+kE,GACAA,EAAYnlD,iBAAiB,SAAS,SAACR,GACnCA,EAAM4lD,kBACN,EAAKtsE,UACN,GAEPsH,KAAKtE,OAAOw5D,eAAe7hD,YAAYrT,KAAK+W,IAE5C/W,KAAKk0C,SAASl0C,KAAKtE,OAAO0+C,MAAM1+C,OAAQ,UAAU,SAAU0lD,EAAOC,GAChC,WAA3BrhD,KAAKtE,OAAOwkE,YACZlgE,KAAKyjE,SAASriB,EAAOC,KAE1BrhD,MAEHA,KAAKm1C,QAAQ,WAGjBiJ,QApJgC,WAqJ5B79C,GAASk0C,IAAIz0C,KAAKmzD,aAElBnzD,KAAK40C,cAAc50C,KAAKtE,QACxBsE,KAAK40C,cAAc50C,KAAKtE,OAAO0+C,OAC/Bp6C,KAAK40C,cAAcr0C,IAEnBP,KAAK+jE,YAAc,KACnB/jE,KAAKokE,eAAgB,EAEjBpkE,KAAK+W,KACL/W,KAAKtE,OAAOw5D,eAAep1C,YAAY9f,KAAK+W,IAC5C/W,KAAK+W,GAAK,SAMP4sD,U,ozBChJAsB,G,YAjDX,WAAYz4B,GAAS,a,4FAAA,UACjB,0BAAMA,KACD0Q,SAAW1Q,EAAQ0Q,SAFP,E,kSAOjB,MAAO,mB,8BAIPl9C,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,YAAasE,KAAK0kE,OAAQ1kE,MAEzDA,KAAK+0C,KAAK,SAAU/0C,KAAKqkE,KAAMrkE,Q,+BAK/B,IAAMk9C,EAAWh7C,GAAOolD,UAAP,mBAA6BtnD,KAAKk9C,UAAYl9C,KAAKk9C,UAEpEl9C,KAAK+W,GAAKshC,EAAMQ,WAAN,wDAAkEqE,EAAlE,aAA+EA,EAA/E,WACVl9C,KAAKtE,OAAOw5D,eAAe7hD,YAAYrT,KAAK+W,IAE5C/W,KAAKm1C,QAAQ,Y,gCAIbn1C,KAAK40C,cAAc50C,KAAKtE,QAEpBsE,KAAK+W,KACL/W,KAAKtE,OAAOw5D,eAAep1C,YAAY9f,KAAK+W,IAC5C/W,KAAK+W,GAAK,Q,6BAKQ,OAAlB/W,KAAKk9C,WACL7E,EAAMU,SAAS/4C,KAAKtE,OAAOw5D,eAAgB,yBAG3Cl1D,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,OAAQqkB,WAAW/nB,KAAK,KAAMgI,KAAKtH,KAAKV,KAAKgI,MAAO,S,6BAKvFq4C,EAAMW,YAAYh5C,KAAKtE,OAAOw5D,eAAgB,8B,gCA9CzBkN,I,ozBCkCd8C,G,YAjCX,WAAY14B,GAAS,a,4FAAA,UACjB,0BAAMA,KACD24B,QAAU34B,EAAQ24B,QACvB,EAAKC,WAAa,qBAHD,E,kSAOjB,OAAOplE,KAAKolE,a,8BAIZplE,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,WAAYsE,KAAK0kE,OAAQ1kE,Q,+BAIxD,IAAMqlE,EAASnjE,GAAOolD,UAAU,WAE5BtnD,KAAKmlE,UACLnlE,KAAK+W,GAAKshC,EAAMQ,WAAN,yCAAmDwsB,EAAnD,YAA6DrlE,KAAKmlE,QAAlE,WACVnlE,KAAKtE,OAAOw5D,eAAe7hD,YAAYrT,KAAK+W,O,gCAKhD/W,KAAK40C,cAAc50C,KAAKtE,QAEpBsE,KAAK+W,KACL/W,KAAKtE,OAAOw5D,eAAep1C,YAAY9f,KAAK+W,IAC5C/W,KAAK+W,GAAK,W,gCA7BWqrD,I,g6CCIjC,SAASkD,GAAiBC,EAAQC,GAC9B,OAAOD,GAAUA,EAAO34B,gBAAkB44B,EAGvC,SAASC,KAA0C,IAA5BC,EAA4B,uDAAjB,GAAIC,EAAa,uCAChDC,EAAS1uE,OAAO8S,OAAO07D,GACxBn7D,QAAO,SAACxO,EAAD,EAA2BkL,GAAU,IAA5ByK,EAA4B,EAA5BA,GAAIm0D,EAAwB,EAAxBA,WACXC,EAAa1rC,OAAOyrC,GAC1B,OAAI5+D,EACOlL,EAAKkV,OAAO,CAAES,KAAI3O,IAAKhH,EAAKkL,EAAQ,GAAG2L,IAAKA,IAAK7W,EAAKkL,EAAQ,GAAG2L,IAAMkzD,IAE3E,CAAC,CAAEp0D,KAAI3O,IAAK,EAAG6P,IAAKkzD,MAC5B,IAAIl4D,MAAK,gBAAG7K,EAAH,EAAGA,IAAK6P,EAAR,EAAQA,IAAR,OAAkB+yD,EAAc5iE,GAAO4iE,EAAc/yD,KACrE,OAAOgzD,GAAUF,EAASE,EAAOl0D,IAG9B,SAASq0D,KAA4C,IAAfvpB,EAAe,uDAAJ,GAC9CwpB,EAAaxpB,EAASkpB,UAAYlpB,EAASkpB,SAAS5hE,MAAM,KAC1DmiE,EAAyB/uE,OAAO4G,KAAK0+C,GACtC7uC,QAAO,SAAC5V,GAAD,OAASA,EAAIkmB,MAAM,mBAE/B,OAAOgoD,EAAuB17D,QAAO,SAACxO,EAAMo2D,GAAY,SAC/B,wBAAwB7vD,KAAK6vD,GADE,GAC3CzgD,EAD2C,KACtC3Z,EADsC,KAKpD,OAHIiuE,EAAW/3D,SAASyD,KACpB3V,EAAK2V,GAAMxa,OAAO8sB,OAAOjoB,EAAK2V,IAAO,GAA1B,IAAgCA,MAAK3Z,EAAMykD,EAAS2V,MAE5Dp2D,IACR,IAIP,SAASmqE,KAAiC,IAAdC,EAAc,uDAAJ,GAClC,OAAOb,GAAiBa,EAAQC,KAAM,SAO1C,IA+IeC,G,YA5IX,gBAAwE,MAA1D30D,EAA0D,EAA1DA,GAAIy0D,EAAsD,EAAtDA,QAAaG,EAAyC,EAAzCA,SAAUC,EAA+B,EAA/BA,gBAAiBC,EAAc,EAAdA,WAAc,O,4FAAA,UACpE,0BAAM,CAAE90D,KAAIy0D,cACPz0D,GAAKA,EACV,EAAKy0D,QAAUA,EACf,EAAKG,SAAWA,EAChB,EAAKC,gBAAkBA,EACvB,EAAKC,WAAaA,EAClB,EAAKpB,WAAa,0BAPkD,E,kSAWpE,OAAOplE,KAAKolE,a,8BAIZ3Z,EAAO,oBAAoBtrC,IAAI,QAASngB,MACxCA,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,WAAYsE,KAAK0kE,OAAQ1kE,Q,sCAM5C,MACaA,KAAjBmmE,eADI,MACM,GADN,EAEN7e,EAAYplD,GAAOolD,UAAU,UAEnC,OAAI6e,EAAQM,YACDN,EAAQM,YAEfP,GAAmBC,GACZ7e,EAAU/pD,cArC7B,WAAiD,IAAd4oE,EAAc,uDAAJ,GACzC,OAAOb,GAAiBa,EAAQC,KAAM,gBAsC9BM,CAA0BP,GACnB7e,EAAU9pD,kBAEd8pD,EAAU7pD,S,+BAGZ,IAED0oE,EACAnmE,KADAmmE,QAASG,EACTtmE,KADSsmE,SAAUC,EACnBvmE,KADmBumE,gBAAiBC,EACpCxmE,KADoCwmE,WAAY9qE,EAChDsE,KADgDtE,OAF/C,EAIoBA,EAAO4qD,MAAMphB,WAA9BxzB,EAJH,EAIGA,GAAI+uD,EAJP,EAIOA,SACN3K,EAAWp6D,EAAO0+C,MAAM1+C,OACxBirE,EAAqB7Q,EAAS8Q,YAAc,IAC5CzW,EAAY2F,EAASZ,eACrB2R,EAAa7mE,KAAK8mE,gBAClBC,EAlDS,SAACtG,EAAU+F,EAAYnnB,GAAvB,qBAA2CohB,EAA3C,oBAA+D+F,EAA/D,oBAAqFnnB,GAkDhF2nB,CAAevG,EAAU1uC,mBAAmBy0C,GAAa90D,GACvEu1D,EAAmBvrE,EAAO67C,QAAQ2vB,WAExC,SAASC,IACDF,GACAA,EAAiBr1C,MAAM,gCAAiC,CACpD6uC,SAAU,CAAE2G,YAAa,OACzBtuE,KAAM,aACNZ,OAAQ,CAAE,MAAO6uE,EAAajuE,KAAM,YAAa/B,KAAM8vE,KAenE,GAVII,GACAA,EAAiBI,eAAetyB,KAAK,QAAQ,WACzCkyB,EAAiBr1C,MAAM,0BAA2B,CAC9C6uC,SAAU,CAAE2G,YAAa,OACzBtuE,KAAM,OACNZ,OAAQ,CAAE,MAAO6uE,EAAajuE,KAAM,YAAa/B,KAAM8vE,QAK9DV,EAAL,CAOgBb,GAAiBa,EAAQmB,MAAO,UAExCX,GACAtuB,EAAMU,SAASoX,EAlIM,gCAoIzB9X,EAAMU,SAASoX,EArIC,uBAsIhBA,EAAU98C,YACNglC,EAAMQ,WAAN,4CApIO,iBAoIP,oIAGcstB,EAAQoB,aAAe,GAHrC,sJAMcpB,EAAQqB,eAAiB,GANvC,qFAaR,IAAMC,EAAcvB,GAAmBC,GAAWG,EAAWC,EAU7DpW,EAAU98C,YACNglC,EAAMQ,WAAN,sCA7Jc,oBA6Jd,mBAC4C4uB,EAD5C,kEAEyCZ,EAFzC,iDAMgB1W,EAAUkF,cAAV,WAnKF,sBAoKNz1C,iBAAiB,SAjBF,SAACrd,GACxBA,EAAEmlE,iBACET,GACAE,IAEJpnD,YAAW,WACP5d,OAAO4yB,SAAS8jC,KAAO4O,IACxB,aAlCH/rE,EAAOq5C,KAAK,eAAe,WACvBoyB,S,gCA+CRnnE,KAAK40C,cAAc50C,KAAKtE,QACxB,IACMy0D,EADWnwD,KAAKtE,OAAO0+C,MAAM1+C,OACRw5D,eAE3B7c,EAAMW,YAAYmX,EA9KE,uBA+KpB9X,EAAMW,YAAYmX,EA9KW,gCAgL7B,IAAMwX,EAAiBxX,EAAUkF,cAAV,WA9KR,mBA+KXsS,GACAA,EAAe/zC,WAAW9T,YAAY6nD,GAG1C,IAAMC,EAAoBzX,EAAUkF,cAAV,WApLR,sBAqLduS,GACAA,EAAkBh0C,WAAW9T,YAAY8nD,GAG7Cnc,EAAO,oBAAoBtrC,IAAI,UAAWngB,W,gCAzIZoiE,I,q0BC1CtC,IAAMyF,GAAe,SAACC,EAAUC,GAI5B,IAHA,IAAM/iE,EAAS+iE,GAAU,EACrBjqC,EAAM15B,OAAO0jE,GAEVhqC,EAAI94B,OAASA,GAChB84B,EAAM,IAAH,OAAOA,GAGd,OAAOA,GA4LIkqC,G,YAlLX,WAAYx7B,GAAS,a,4FAAA,UACjB,0BAAMA,KAMDh/B,MAAQg/B,EAAQh/B,MAErB,EAAKy6D,QAAU,KACf,EAAKC,aAAe,KAVH,E,kSAejB,MAAO,c,8BAIPloE,KAAKk0C,SAASl0C,KAAKtE,OAAQ,eAAgBsE,KAAK0kE,OAAQ1kE,Q,gCAOxDA,KAAK40C,cAAc50C,KAAKtE,QAEpBsE,KAAK+W,KACL/W,KAAKtE,OAAOw5D,eAAep1C,YAAY9f,KAAK+W,IAC5C/W,KAAK+W,GAAK,Q,+BAKd,IACI/W,KAAKtE,OAAOw5D,eACd,MAAOrsC,GACL,OAGJ7oB,KAAK+W,GAAKshC,EAAMQ,WAAWR,EAAMa,SAASivB,OAC1CnoE,KAAKtE,OAAOw5D,eAAe7hD,YAAYrT,KAAK+W,IAE5CshC,EAAMU,SAAS/4C,KAAKtE,OAAOw5D,eAAgB,wBAI3Cl1D,KAAKioE,QAAUjoE,KAAK+W,GAAG8c,uBAAuB,kBAAkB,GAEhE7zB,KAAKkoE,aAAeloE,KAAK+W,GAAG8c,uBAAuB,4BAA4B,GAG/E7zB,KAAKm1C,QAAQ,SAEbn1C,KAAK+0C,KAAK,SAAU/0C,KAAKm1C,QAAQn9C,KAAKgI,KAAM,UAG5CA,KAAKooE,WAAa30C,YAAYzzB,KAAKsjE,QAAQtrE,KAAKgI,MAAO,KACvDA,KAAKsjE,Y,gCAIL,IAAM91D,EAAQxN,KAAKqoE,YAAYroE,KAAKwN,OAGhCxN,KAAKsoE,QAAQ96D,IACbxN,KAAKm1C,QAAQ,SAAU3nC,K,8BAIvBk6C,GACJ,IAAMljD,EAAS,GACT+jE,EAAWvoE,KAAKwN,MAsBtB,OApBIxN,KAAKwoE,qBACLhkE,EAAO2C,KAAP,UAAe0gE,GAAangB,EAAK3kD,KAAjC,MACAyB,EAAO2C,KAAP,UAAe0gE,GAAangB,EAAK+gB,KAAjC,0CAE0B,UAAtBzoE,KAAK0oE,eACL1oE,KAAK0oE,aAAe,QACpB1oE,KAAKioE,QAAQ5uB,UAAYn3C,GAAOolD,UAAU,uBAE1CjP,EAAMU,SAAS/4C,KAAKtE,OAAOw5D,eAAgB,0BAElB,SAAtBl1D,KAAK0oE,eACZ1oE,KAAK0oE,aAAe,OAEpBlkE,EAAO2C,KAAP,UAAeohE,EAASI,UAAxB,YAAqCzmE,GAAOulD,aAAa8gB,GAAzD,MACA/jE,EAAO2C,KAAP,UAAe0gE,GAAaU,EAASK,YAArC,MACApkE,EAAO2C,KAAM0gE,GAAaU,EAASM,eAEnC7oE,KAAKioE,QAAQ5uB,UAAYn3C,GAAOolD,UAAU,wBAG1C9iD,EAAOQ,OAAS,IAChBhF,KAAKkoE,aAAa7uB,UAAa70C,EAAOL,KAAK,KACpC,K,6BAUPnE,KAAKooE,YACLhzC,cAAcp1B,KAAKooE,YAGvBpoE,KAAKooE,WAAa,KAClBpoE,KAAK+W,GAAG6c,WAAW9T,YAAY9f,KAAK+W,IACpC/W,KAAK+W,GAAK,KAEVshC,EAAMW,YAAYh5C,KAAKtE,OAAOw5D,eAAgB,CAAC,uBAAwB,yBAEvEl1D,KAAKm1C,QAAQ,S,kCAGL2zB,GACR,IAAIC,GAAQD,EAAUl2C,KAAK8B,MAAM,IAAI9B,OAAW,IAG5Cm2C,GAAQ,IACRA,EAAO,EAEH/oE,KAAKooE,YACLpoE,KAAK2vB,QAIb,IAAMq5C,EAAW,CACbC,MAAO,EACPC,KAAM,EACN1vB,MAAO,EACPz2C,IAAK,EACL0lE,IAAK,GAyBT,OAtBIM,GAAS,WACTC,EAASC,MAAQ/oE,KAAK0F,MAAMmjE,EAAO,UACnCA,GAAyB,OAAjBC,EAASC,MAAiB,OAGlCF,GAAQ,QACRC,EAASE,KAAOhpE,KAAK0F,MAAMmjE,EAAO,OAClCA,GAAwB,MAAhBC,EAASE,MAGjBH,GAAQ,OACRC,EAASxvB,MAAQt5C,KAAK0F,MAAMmjE,EAAO,MACnCA,GAAyB,KAAjBC,EAASxvB,OAGjBuvB,GAAQ,KACRC,EAASjmE,IAAM7C,KAAK0F,MAAMmjE,EAAO,IACjCA,GAAuB,GAAfC,EAASjmE,KAGrBimE,EAASP,IAAMvoE,KAAK0F,MAAMmjE,GAEnBC,I,0CASP,IAAMzpD,EAAM,IAAIqT,KAGhB,OAAQ1yB,KAAK+f,IAAIjgB,KAAKwN,MAAM8mB,UAAY/U,EAAI+U,WAAc,a,gCA/KpC8tC,I,gUCxB9B,IAAM+G,GAAc,SAACzpE,EAAQ4/C,GAAT,OAAoBA,EAAOnxC,KAAI,SAACm4C,GAEhD,OAAO,IAAIxJ,GAAM5lD,OAAO8sB,OAAO,CAC3BtkB,UACD4mD,QASD8iB,GAAY,SAACtjB,GAAD,OAAkC,IAAhBA,EAAuB,aAAe,WA+B3D,IACXujB,WA9BY,8BAAG,iCAAApmE,EAAA,6DAASvD,EAAT,EAASA,OAAQm1C,EAAjB,EAAiBA,IAAjB,SACM+R,GAAavG,SAAS,CACvC3gD,SACAm1C,QAHW,cACTyK,EADS,yBAMR6pB,GAAYzpE,EAAQ4/C,IANZ,2CAAH,sDA+BZgqB,uBAtBwB,8BAAG,mCAAArmE,EAAA,6DAAQvD,EAAR,EAAQA,OAAQ2/C,EAAhB,EAAgBA,QAASyG,EAAzB,EAAyBA,YAAzB,SACRiB,GAAetH,QAAQ,CACtCD,OAAQ4pB,GAAUtjB,GAClBpmD,SACA2/C,YAJuB,UACvBC,EADuB,QAQP,IAAhBwG,GAA0C,IAAlBxG,EAAOt6C,OARR,gCASR+hD,GAAetH,QAAQ,CAClCD,OAAQ4pB,IAAU,GAClB1pE,SACA2/C,YAZmB,OASvBC,EATuB,uCAgBpB6pB,GAAYzpE,EAAQ4/C,IAhBA,2CAAH,uD,qSCiCbiqB,G,WAzDX,cAA2B,IAAbjjB,EAAa,EAAbA,MAAOkjB,EAAM,EAANA,I,4FAAM,SACvBxpE,KAAKsmD,MAAQA,EACbtmD,KAAK8lD,aAAsB,IAAP0jB,E,kEAQG,IAAdh9B,EAAc,uDAAJ,GACX8Z,EAAuBtmD,KAAvBsmD,MAAOR,EAAgB9lD,KAAhB8lD,YAGf,OAAItZ,EAAQ8Z,MACDrI,GAAU4I,cAAc,CAE3BnnD,OAAQ8sC,EAAQ8Z,MAAM5mD,QAAU4mD,EAAMvJ,YAEtCsC,QAAS7S,EAAQ8Z,MAAM50C,IAAM86B,EAAQ8Z,QAItCrI,GAAUoJ,UAAUrnD,KAAKsmD,MAAO,CACnCR,kB,8CAYO3b,G,8EACH2b,EAAgB9lD,KAAhB8lD,YAEFpmD,EAASM,KAAKsmD,MAAMvJ,YACpBsC,EAAUr/C,KAAKsmD,MAAMjvD,IAAI,MAE1BghD,EAAMnhC,QAAQizB,IAA2B,IAAjBA,EAAMnlC,O,yCACxBykE,GAAgBH,uBAAuB,CAC1C5pE,SACA2/C,UACAyG,iB,gCAID2jB,GAAgBJ,WAAW,CAC9Bx0B,IAAK1K,EACLzqC,Y,mqCC1CZ,SAASggE,GAASrgB,EAAStmD,GAAQ,WACzBmhB,EAAQ,WACVm+B,EAAMW,YAAY,EAAKjiC,GAAI,CAAC,kBAAmB,kBAAmB,cAAe,qBAGrF/W,KAAK40C,cAAc50C,KAAKtE,OAAQ,aAGD,IAA3BsE,KAAK7C,SAASgxD,UACdnuD,KAAKtE,OAAOgkE,SAASrgB,GAIV,WAAXtmD,GAAkC,SAAXA,GACvBiH,KAAKm1C,QAAQ,gBAAiBn1C,KAAKi+C,UAAuB,SAAXllD,EAAqB,OAAS,QAAS,CAClFA,OAAQiH,KAAK0pE,kBAGjBrxB,EAAMU,SAAS/4C,KAAK+W,GAAI,mBACxBgJ,WAAW7F,EAAO,OAGlBla,KAAKm1C,QAAQ,kBAAmBkK,GAChCnlC,KAOR,SAASyvD,KACL3pE,KAAKm1C,QAAQ,iBAAkBn1C,KAAKi+C,WACpCj+C,KAAKi+C,UAAY,KACjB5F,EAAMW,YAAYh5C,KAAK+W,GAAI,+CAS/B,SAAS6yD,GAAgB7xE,GACrB,OAAOgkD,GAAMiG,YAAYjqD,EAAK,SAAU,KAM5C,SAAS8xE,KACL,IAAMC,EAAmBzxB,EAAMqC,sBACzBqvB,EAAW/pE,KAAKgqE,WAAW,+BAA+B,IAGvC,IAArBF,IACA9pE,KAAK+W,GAAG5D,MAAR,UAAiB22D,EAAjB,qBAAuD,YACvD9pE,KAAK+W,GAAG5D,MAAR,UAAiB22D,EAAjB,0CAAqEC,EAAS3Z,YAA9E,QAQR,SAAS6Z,GAAkB7mC,GAAM,WAC7BiV,EAAMU,SAAS3V,EAAM,iBAErBpjC,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,aAAa,WACxC28C,EAAMW,YAAYh5C,KAAKtE,OAAOw5D,eAAgB,iCAC/Cl1D,MAEH+f,YAAW,WACP2/C,GAAS/oE,KAAK,EAAMkuB,SAASue,EAAK25B,QAAQrrD,GAAI,IAAK,QACnD2mC,EAAMW,YAAY,EAAKjiC,GAAI,qBAC5B,KAMP,SAASmzD,KAAkB,WACjBC,EAAc,IAAIZ,GAAY,CAChCjjB,MAAOtmD,KAAKtE,OAAO0uE,WACnBZ,GAAIxpE,KAAK7C,SAASqsE,KAItBxpE,KAAKqqE,gBAAiB,GAGK,IAAvBrqE,KAAK7C,SAASmtE,MACdH,EAAYI,SAASvqE,KAAK7C,SAASmtE,KAAKngC,OAAOhjB,MAAK,SAACgjB,GAC7CkO,EAAMnhC,QAAQizB,IAAUA,EAAMnlC,OAAS,GACvC,EAAKqlE,gBAAiB,EACtB,EAAKl1B,QAAQ,iBAAkBhL,IAE/BkO,EAAMW,YAAY,EAAKt9C,OAAOw5D,eAAgB,kCAEnDrE,OAAM,WACL,IACIxY,EAAMW,YAAY,EAAKt9C,OAAOw5D,eAAgB,+BAChD,MAAO3yD,SAOU,IAAvBvC,KAAK7C,SAASnB,MACdmuE,EAAYK,aAAaxqE,KAAK7C,SAASnB,MAAMmrB,MAAK,YAA2B,IAAxB82B,EAAwB,EAAxBA,UAAWllD,EAAa,EAAbA,OAC5D,EAAKklD,UAAYA,EACjB,EAAKyrB,gBAAkB3wE,EAEvB,EAAKo8C,QAAQ,iBAAkB,EAAK8I,UAAW,CAC3CllD,cAEL83D,OAAM,WACD,EAAK95C,IACLshC,EAAMW,YAAY,EAAKjiC,GAAI,CAAC,kBAAmB,cAAe,uBAS9E,SAAS0zD,KAEL,IAAIC,EAAgB1qE,KAAKtE,OAAO2nD,cAAgB,GAG5CqnB,EAAgB,IAChBA,EAAgB,GAEpB,IAAMhnB,EAAS1jD,KAAKtE,OAAO0+C,MAAMqf,YAAY/V,SACvCM,EAAsBhkD,KAAKtE,OAAO0+C,MAAMqf,YAAYzV,sBAGrDN,GAAWM,GACZhkD,KAAKk0C,SAASl0C,KAAKtE,OAAQ,QAAQ,SAAUsF,GACrC0pE,EAAgB,GAAK1pE,EAAO0pE,IAC5BA,GAAiB,EACjBR,GAAgBvzE,KAAKqJ,SAE1BA,MAQX,SAAS2qE,GAAmB/hD,GACT5oB,KAAKtE,OAAO0+C,MAAMqf,YAGtBlU,WAAwB,aAAX38B,GAAoC,SAAXA,IAI7C5oB,KAAKi+C,WACLj+C,KAAKm1C,QAAQ,oBAAqBn1C,KAAKi+C,WACvCyhB,GAAS/oE,KAAKqJ,KAAMA,KAAKi+C,UAAU5mD,IAAI,MAAO,SACvC2I,KAAKqqE,iBAEZhyB,EAAMU,SAAS/4C,KAAK+W,GAAI,mBACxBshC,EAAMU,SAAS/4C,KAAKtE,OAAOw5D,eAAgB,+BAE3C2U,GAAelzE,KAAKqJ,MACpBA,KAAKm1C,QAAQ,iBASrB,SAASy1B,GAAkB5pE,EAAM2hD,GACzBA,EAAW3hD,EAAOhB,KAAK6qE,eACvB7qE,KAAKm1C,QAAQ,kBAAmBj1C,KAAK0F,MAAM+8C,EAAW3hD,IAS9D,SAAS8pE,GAAkBC,GACvB1yB,EAAMU,SAAS/4C,KAAK+W,GAAI,+BAExB/W,KAAK40C,cAAc50C,KAAKtE,OAAQ,OAAQkvE,IAExC5qE,KAAKgqE,WAAW,oCAAoC,GAAG72D,MAAM63D,mBAA7D,UAAqFD,EAArF,KAMJ,SAASE,MACO,IAAIC,OAEZj8D,IAAM26D,GAAgB5pE,KAAKi+C,UAAUc,gBAEzC/+C,KAAKk0C,SAASl0C,KAAKtE,OAAQ,OAAQkvE,GAAmB5qE,MAEtDA,KAAKgqE,WAAW,+BAA+B,GAAG3wB,UAAYhB,EAAMa,SAASiyB,KAAmB,CAC5FnvE,KAAMgE,KAAKi+C,UACXmtB,UAAWprE,KAAK6qE,cAChB9rB,aAAc6qB,GACd9E,UAAWA,KACXuG,SAAUA,OAGdrrE,KAAKgqE,WAAW,gCAAgC,GAC3CpqD,iBAAiB,QAAS8/C,GAAS1nE,KAAKgI,KAAMA,KAAKi+C,UAAU5mD,IAAI,MAAO,WAE7E2I,KAAKgqE,WAAW,gCAAgC,GAC3CpqD,iBAAiB,QAAS+pD,GAAY3xE,KAAKgI,OAMpD,SAASsrE,GAAiBnB,GAAa,WACnCnqE,KAAKgqE,WAAW,+BAA+B,GAAG3wB,UAAYhB,EAAMa,SAASqyB,KAAc,CACvFpB,YAAaA,EACbprB,aAAc6qB,GACdvxB,MAAOA,IAGXA,EAAM1U,KAAK3jC,KAAKgqE,WAAW,gCAAgC,SAAC1tB,GACxDA,EAAK18B,iBAAiB,QAASqqD,GAAkBjyE,KAAK,EAAMskD,OAOpE,SAASkvB,KAGLxrE,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,OAAQsE,KAAKm1C,QAAQn9C,KAAKgI,KAAM,gBAMnE,SAASyrE,KAELzrE,KAAKs+D,QAELjmB,EAAMW,YAAYh5C,KAAKtE,OAAOw5D,eAAgB,+BAC9C7c,EAAMW,YAAYh5C,KAAK+W,GAAI,CAAC,kBAAmB,kBAAmB,cAAe,oB,IAiFtE20D,G,YAtEX,WAAYl/B,GAAS,a,4FAAA,UACjB,0BAAMA,KAGDq+B,cAAiBr+B,EAAQrvC,UAAYqvC,EAAQrvC,SAASnB,MAAQwwC,EAAQrvC,SAASnB,KAAKovE,WAAc,GACvG,EAAKntB,UAAY,KACjB,EAAK9gD,SAAWk7C,EAAME,OAAO,CACzB+xB,KAAM,CACFngC,MAAO,IAEXnuC,KAAM,IACPwwC,EAAQrvC,UAGX,EAAKktE,gBAAiB,EAdL,E,kSAmBjB,MAAO,sB,8BAKPrqE,KAAK40C,cAAc50C,KAAKtE,QACxBsE,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,YAAasE,KAAK0kE,OAAQ1kE,MACzDA,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,YAAa+uE,GAAczqE,MAC1DA,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,WAAYivE,GAAoB3qE,MAG/DA,KAAK+0C,KAAK,kBAAmB+1B,GAAmB9qE,MAChDA,KAAK+0C,KAAK,iBAAkBk2B,GAAkBjrE,MAC9CA,KAAK+0C,KAAK,iBAAkBu2B,GAAkBtrE,MAC9CA,KAAK+0C,KAAK,cAAey2B,GAAexrE,MACxCA,KAAK+0C,KAAK,cAAe02B,GAAezrE,Q,iCASjC2rE,GACP,OAAO3rE,KAAK+W,GAAG8c,uBAAuB83C,K,+BAQtC,IAAMxb,EAAYnwD,KAAKtE,OAAOw5D,eACxB0W,EAAazb,EAAUt8B,uBAAuB,8BAGpDwkB,EAAMW,YAAYh5C,KAAKtE,OAAOw5D,eAAgB,+BAI1C0W,EAAW5mE,OAAS,GACpBmrD,EAAUrwC,YAAY8rD,EAAW,IAGrC5rE,KAAK+W,GAAKshC,EAAMQ,WAAWR,EAAMa,SAAS2yB,OAE1C1b,EAAU98C,YAAYrT,KAAK+W,S,gCAnEHqrD,ICzLjB0J,GA9FM,CACjBpsE,OAAQ,KAER/H,KAAM,QACN4H,IAAK,+BAOLwsE,gBAXiB,SAWDx7D,GACZ,IAAMu4C,EAAQ,GAEdA,EAAM3hD,KAAN,YAAgBnH,KAAK03C,kBACrBoR,EAAM3hD,KAAN,YAAgBoJ,EAAK8uC,UAErBr/C,KAAKgsE,YAAY,QAASljB,EAAM3kD,KAAK,OAQzC8nE,iBAzBiB,SAyBA17D,GACb,IAAMu4C,EAAQ,GAEdA,EAAM3hD,KAAN,YAAgBnH,KAAK03C,kBACrBoR,EAAM3hD,KAAN,YAAgBoJ,EAAK8uC,UACrByJ,EAAM3hD,KAAN,YAAgBoJ,EAAKvP,OAGrB+e,WAAW/f,KAAKgsE,YAAYh0E,KAAKgI,KAAM,SAAU8oD,EAAM3kD,KAAK,MAAOjE,KAAK0F,MAAuB,IAAhB1F,KAAKC,SAAkB,KAS1G6rE,YA1CiB,SA0CLlzE,EAAMozE,GACd,IAAMnwB,EAAQ,IAAImvB,MACZiB,EAASnsE,KAAKosE,UAAUtzE,GACxBuzE,EAAQF,EAAOpsE,QAAQ,MAAQ,EAAI,IAAM,IAe/C,OAZIC,KAAKN,SACa,QAAdM,KAAKrI,MAEL4wB,QAAQpI,IAAI,cAAe,CACvB+rD,EADuB,UAEpBC,EAASE,EAAQH,EAFG,eAE+B,IAAhBhsE,KAAKC,YAInD47C,EAAM9sC,IAAN,UAAek9D,EAASE,EAAQH,EAAhC,eAAkE,IAAhBhsE,KAAKC,WAGpD47C,GAQXqwB,UApEiB,SAoEPtzE,GACN,MAAoB,SAAhBkH,KAAKN,QAA8B,UAAT5G,EACnB,6BAGJkH,KAAKT,IAAMS,KAAKN,QAQ3Bg4C,cAjFiB,WAkFb,OAAIW,EAAMiB,OAAOvC,WACN,SAGPsB,EAAMiB,OAAOxC,WACN,SAGJ,Y,ozBCuBAw1B,G,YArFX,WAAY9/B,GAAS,a,4FAAA,UACjB,0BAAMA,KAED2iB,IAAM3iB,EAAQ2iB,IACnB,EAAKzvD,OAAS8sC,EAAQ9sC,OACtB,EAAK/H,KAAO60C,EAAQ70C,KALH,E,kSAUjB,MAAO,mB,8BAKW,QAAdqI,KAAKrI,MAA+B,eAAbqI,KAAKmvD,MAIhC2c,GAAan0E,KAAOqI,KAAKrI,KACzBm0E,GAAapsE,OAASM,KAAKN,OAE3BM,KAAKk0C,SAASl0C,KAAKtE,OAAQ,aAAa,SAAUswD,GAC9C,IAAM1F,EAAQtmD,KAAKtE,OAAO0uE,WACpB/qB,EAAUiH,EAAMjvD,IAAI,MACpBsrD,EAAW3iD,KAAKtE,OAAO2nD,cACvBkpB,EAjDlB,SAA6B5pB,GAEzB,OAAIA,EAAW,EAEPA,EAAW,IACJ,EAIJziD,KAAK0F,MAAiB,IAAX+8C,IAGd,EAqCyB6pB,CAAoB7pB,GAEzC8pB,EAAmBzgB,IAAc,EACjCsK,GAAe,EAEnBwV,GAAaC,gBAAgB,CACzB1sB,QAASA,IAITktB,EAAmB,GAAiC,SAA5BjmB,EAAMjvD,IAAI,eAElC2I,KAAKk0C,SAASl0C,KAAKtE,OAAQ,QAAQ,SAACgxE,GAChC,IAAM1rE,EAAOd,KAAK0F,MAAM8mE,GAGpB1rE,IAASs1D,GAAet1D,EAAOurE,GAAqB,GAAKvrE,EAAOyrE,IAChEnW,EAAct1D,EAEdyrE,GAAoB,EAGhBzrE,GAAQ,GAAKA,GAAQ2hD,GACrBmpB,GAAaG,iBAAiB,CAC1B5sB,QAASA,EACTr+C,KAAMA,WAQ9BhB,KAAKk0C,SAASl0C,KAAKtE,OAAQ,eAAe,SAAUixE,GACxB,YAApBA,EAAO7rC,UACPgrC,GAAaG,iBAAiB,CAC1B5sB,QAASr/C,KAAKtE,OAAO0uE,WAAW/yE,IAAI,MACpC2J,MAAO,OAKnBhB,KAAKk0C,SAASl0C,KAAKtE,OAAQ,kBAAkB,SAAUixE,GAC3B,YAApBA,EAAO7rC,UACPgrC,GAAaG,iBAAiB,CAC1B5sB,QAASr/C,KAAKtE,OAAO0uE,WAAW/yE,IAAI,MACpC2J,MAAO,U,gCAOnB8qE,GAAapsE,OAAS,KACtBM,KAAK40C,cAAc50C,KAAKtE,a,gCAjFH0mE,ICzBvBwK,GAAqB,CACvBl/B,QAAS,KAETm/B,SAAU,GAOVhe,KAVuB,WA0BnB,OAfK7uD,KAAK0tC,UACDvrC,OAAO2qE,MAUR9sE,KAAK0tC,QAAUr4B,QAAQC,WARvBnT,OAAO2qE,MAAQ3qE,OAAO2qE,OAAS,WAC3B3qE,OAAO2qE,MAAMv7C,EAAIpvB,OAAO2qE,MAAMv7C,GAAK,GACnCpvB,OAAO2qE,MAAMv7C,EAAEpqB,KAAKzB,YAGxB1F,KAAK0tC,QAAUl4B,aAAa,4CAO7BxV,KAAK0tC,SAGhBpJ,KA7BuB,SA6BlBm8B,GAAU,WACX,OAAOzgE,KAAK6uD,OACP1nC,MAAK,kBAAM,EAAK4lD,WAAWtM,MAC3Bt5C,MAAK,SAAC6lD,GACH,IAAMC,EAAsB,GAAH,OAnCtB,cAmCsB,YAAoBxM,GAG7C,IAAKuM,EAAe,CAEhB7qE,OAAO2qE,MAAM,OAAQrM,EAAU,KAAM,KAAMwM,GAE3C,IAAMjmD,EAAU,IAAI3R,SAAQ,SAACC,GACzBnT,OAAO2qE,MAAMG,GAAqB,SAACC,GAAD,OAAa53D,EAAQ43D,SAK3D,OAFAN,GAAmBC,SAASpM,GAAYz5C,EAEjCA,EAGX,OAAOgmD,MAInBD,WArDuB,SAqDZtM,GACP,OAAOmM,GAAmBC,SAASpM,IAAaprD,QAAQC,QAAQ,QAIzDs3D,M,ylCC8HAO,G,YAnLX,WAAYzxE,GAAQ,e,4FAAA,UAChB,E,uEAAA,yBACKA,OAASA,EACd,EAAK6jE,OAAS,GACd,EAAK6N,mBAAqB,EAC1B,EAAKC,gBAAkB,EACvB,EAAKC,aAAe,CAAC,eAAgB,EAAKC,iBAAiBv1E,KAAtB,QAAkC,GAEvE,EAAKk8C,SAAS,EAAKx4C,OAAQ,eAAgB,EAAK8xE,eAAhD,OACA,EAAKt5B,SAAS,EAAKx4C,OAAQ,cAAe,EAAK+xE,cAA/C,OACA,EAAKv5B,SAAS,EAAKx4C,OAAQ,YAAa,EAAKgyE,YAA7C,OACA,EAAKx5B,SAAS,EAAKx4C,OAAQ,aAAc,EAAKiyE,aAA9C,OACA,EAAKz5B,SAAS,EAAKx4C,OAAQ,iBAAkB,EAAK6xE,iBAAlD,OACA,EAAKr5B,SAAS,EAAKx4C,OAAQ,aAAc,EAAKkyE,aAA9C,OAEA,EAAK15B,SAAS,EAAKx4C,OAAQ,UAAW,EAAKmyE,UAA3C,OACA,EAAK35B,SAAS,EAAKx4C,OAAQ,SAAU,EAAKoyE,SAA1C,OAEA,EAAK55B,SAAS,EAAKx4C,OAAQ,wBAAyB,EAAKqyE,iBAAzD,QAEwD,IAApD12E,KAAI8K,OAAQ,CAAC,MAAO,SAAU,mBAC9BA,OAAOyd,iBAAiB,UAAW,EAAKouD,aAAah2E,KAAlB,SAGvC,EAAAmK,QAAOyd,iBAAP,WAA2B,EAAK0tD,eAxBhB,E,qSAgCPluD,GACT,IAAM6zC,EAAU7zC,GAASA,EAAM8zC,OAU/B,GARqB,cAAjBD,EAAQn6D,MAAwBm6D,EAAQgb,QACxCjuE,KAAKotE,mBAAqB,GAGT,eAAjBna,EAAQn6D,MAAyBm6D,EAAQgb,OACzCjuE,KAAK4tE,eAGY,YAAjB3a,EAAQn6D,MAAsBm6D,EAAQgb,MAAO,CACxCjuE,KAAKotE,qBACNptE,KAAKqtE,gBAAkBpa,EAAQgb,MAAMjpE,QAGzChF,KAAKotE,oBAAsB,EAC3BptE,KAAKiuE,MAAL,GAAiBhb,EAAQgb,OANoB,IAOrCC,EAASluE,KAAKiuE,MAAMjuE,KAAKiuE,MAAMjpE,OAAS,GAAxCkpE,KAaR,OAXAh3E,OAAO8sB,OAAOhkB,KAAKu/D,OAAQ,CACvBzmE,KAAMm6D,EAAQtmC,MACdg2B,SAAUsQ,EAAQtQ,SAClBjxC,GAAIw8D,EACJ9O,SAAUp/D,KAAKotE,mBACfhyD,MAAOpb,KAAKqtE,gBACZvsC,SAAU,IAGd9gC,KAAKm1C,QAAQ,cAAen1C,KAAKu/D,QAE1Bv/D,KAAK8tE,WAGhB,OAAO,I,uCAGM,WACb9tE,KAAKotE,mBAAqB,EAC1BptE,KAAKqtE,gBAAkB,EACvBrtE,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,WAAYsE,KAAKutE,iBAAkBvtE,MAClEA,KAAKk0C,SAASl0C,KAAKtE,OAAO0+C,MAAM1+C,OAAQ,gBAAgB,SAAC6jE,GACrDroE,OAAO8sB,OAAO,EAAKu7C,OAAQ,CACvB5c,SAAUziD,KAAKuQ,MAAM8uD,EAAO5c,iB,gCAK9BvjC,GACN,SAAIA,IAASA,EAAM8zC,QAAgC,sBAAtB9zC,EAAM8zC,OAAOn8D,QACtCiJ,KAAKmuE,aAAc,EAEnBnuE,KAAKm1C,QAAQ,OAAQj+C,OAAO8sB,OAAOhkB,KAAKq+D,UAAW,CAC/C7wD,OAAO,EACPm1C,SAAU,KAEPxgD,OAAOqsC,oBAAoB,UAAWxuC,KAAKouE,c,oCAK5CC,GACVn3E,OAAO8sB,OAAOhkB,KAAKu/D,OAAQ,CACvBzmE,KAAMu1E,EAASvtC,a,oCAIT,WACV5pC,OAAO8sB,OAAOhkB,KAAKu/D,OAAQ,CACvB/xD,OAAO,IAGXxN,KAAKi1C,aAAaj1C,KAAKtE,OAAO0+C,MAAM1+C,OAAQ,UAAU,SAAC6jE,GACnD,IAAI1H,EAAO,KAEX,IAEIA,EADc0H,EAAOnyB,SAAS6tB,iBAAiB,MAAMsE,EAAOH,SAAW,GAC1D1tD,GACf,MAAOnP,IAITrL,OAAO8sB,OAAO,EAAKu7C,OAAQ,CACvB7tD,GAAImmD,EACJuH,SAAUG,EAAOH,SACjBhkD,MAAOmkD,EAAOC,SACd1+B,SAAU,S,mCAKT9/B,GACT,GAAKhB,KAAKu/D,OAAO7tD,GAAjB,CAIA,IAAMovB,EAAW5gC,KAAK0F,MAAM5E,GACtBstE,EAAmBtuE,KAAKu/D,OAAOz+B,SAErC5pC,OAAO8sB,OAAOhkB,KAAKu/D,OAAQ,CACvBz+B,aAGAwtC,IAAqBxtC,GACrB9gC,KAAKm1C,QAAQ,QAASn1C,KAAKu/D,W,yCAIhB,MACfv/D,KAAKuuE,iBACL,EAAApsE,QAAOqsC,oBAAP,WAA8BxuC,KAAKstE,iB,qCAInCttE,KAAKuuE,kB,iCAILvuE,KAAKm1C,QAAQ,OAAQn1C,KAAKu/D,QAE1Bv/D,KAAKu/D,OAAO/xD,OAAQ,I,kCAIpBxN,KAAKm1C,QAAQ,QAASn1C,KAAKu/D,U,uCAGdhvD,GACbvQ,KAAKm1C,QAAQ,OAAQ,CACjBzjC,GAAInB,EAAK4zD,WACTrrE,KAAM,c,sCAKNkH,KAAKu/D,OAAO7tD,KACZ1R,KAAKm1C,QAAQ,OAAQj+C,OAAO8sB,OAAO,GAAIhkB,KAAKu/D,OAAQ,CAAE5c,SAAU3iD,KAAKu/D,OAAOz+B,YAC5E9gC,KAAKu/D,OAAS,M,gCAIZ,OACN,EAAAp9D,QAAOqsC,oBAAP,WAA8BxuC,KAAKstE,eACnCttE,KAAK40C,qB,gCAhLUqtB,ICRR,M,qkCC4QAuM,G,YAlQX,WAAY9yE,GAAQ,e,4FAAA,UAChB,E,uEAAA,yBACKA,OAASA,EACd,EAAK+yE,UAAY,CACbztE,KAAM,EACN2hD,UAAW,GAEf,EAAK4Q,cAAgBl8D,KAAI8K,OAAQ,CAAC,MAAO,SAAU,kBAGnD,EAAKusE,cAAgB,EAErB,EAAKC,QAAU,EAAKC,gBACpB,EAAKC,mBAAoB,EACzB,EAAKV,aAAc,EACnB,EAAKb,aAAe,CAAC,eAAgB,EAAKwB,eAAe92E,KAApB,QAAgC,GACrE,EAAK+2E,WAAa,KAElB,EAAK76B,SAAS,EAAKx4C,OAAQ,eAAgB,EAAK8xE,eAAhD,OACA,EAAKt5B,SAAS,EAAKx4C,OAAQ,YAAa,EAAKszE,YAA7C,OACA,EAAK96B,SAAS,EAAKx4C,OAAQ,QAAS,EAAKkjE,QAAzC,OACA,EAAK1qB,SAAS,EAAKx4C,OAAQ,OAAQ,EAAKijE,OAAxC,OACA,EAAKzqB,SAAS,EAAKx4C,OAAQ,WAAY,EAAKuzE,WAA5C,OAEI,EAAKlqB,OAAOrB,SACZ,EAAKxP,SAAS,EAAKx4C,OAAQ,OAAQ,EAAKwzE,WAAxC,OAEA,EAAKh7B,SAAS,EAAKx4C,OAAQ,OAAQ,EAAK0iE,OAAxC,OAGJ,EAAKlqB,SACD,EAAKx4C,OACL,mCACA,SAAC4qD,EAAO3uD,EAAM60C,GAAd,OAA0B,EAAK2iC,kBAAL,0BAA0C3iC,EAAQzzC,YAGhF,EAAKm7C,SACD,EAAKx4C,OACL,oCACA,EAAKyzE,kBAAkBn3E,KAAvB,MAAkC,oBAGtC,EAAKi9C,aAAa,EAAKv5C,OAAQ,QAAQ,YAAoB,IAAjBkmE,EAAiB,EAAjBA,WACtC,EAAKmN,WAAanN,MAGtB,EAAAz/D,QAAOyd,iBAAP,WAA2B,EAAK0tD,eA9ChB,E,sSAyFhB,IACI,OAAOptE,KAAK0F,MAAM5F,KAAKtE,OAAO47D,kBAChC,MAAO/0D,GACL,OAAO,K,sCAMX,IAAM6gC,EAAOpjC,KAAKtE,OAAOiC,OAAOtG,IAAI,QAC9Bqa,EAAK0xB,EAAK1xB,IAAM0xB,EAStB,OAJKurC,GAAQj9D,KACTi9D,GAAQj9D,GAAM,IAGXi9D,GAAQj9D,K,qCAGJ1Q,GAAyB,IAAnBouE,EAAmB,uDAAH,EAE7BpuE,EAAO,GAAM,GAAKhB,KAAK0uE,eAAiB1tE,IACxChB,KAAKyuE,UAAU9rB,UAAY,EAC3B3iD,KAAK0uE,aAAe1tE,GAGpBA,EAAOouE,GAAkB,GAAKpvE,KAAKyuE,UAAUztE,OAASA,IACtDhB,KAAKyuE,UAAUztE,KAAOA,EAEtBhB,KAAKm1C,QAAQ,QAASj+C,OAAO8sB,OAAOhkB,KAAKq+D,UAAW,CAChDv9B,SAAU9/B,Q,wCAMa,IAA3BhB,KAAK6uE,mBACL7uE,KAAK6+D,e,uCAII,WACb7+D,KAAKi1C,aAAaj1C,KAAKtE,OAAQ,WAAYsE,KAAK6+D,WAAY7+D,MAC5D,IAAM4xB,EAAQ5xB,KAAKm1C,QAAQn9C,KAAKgI,KAAM,OAAQ9I,OAAO8sB,OAAOhkB,KAAKq+D,UAAW,CACxEv9B,SAAU9gC,KAAK+kD,OAAOG,gBAAgB,UAAY,EAClDvC,SAAU,MAOiB,IAA3B3iD,KAAK2uE,QAAQU,UACbz9C,IAGA5xB,KAAKk0C,SAASl0C,KAAKtE,OAAO0+C,MAAM1+C,OAAQ,YAAY,SAAC6U,GAC7CA,EAAKywD,WACLpvC,IACA,EAAKgjB,cAAc,EAAKl5C,OAAO0+C,MAAM1+C,OAAQ,YAC7C,EAAKizE,QAAQU,WAAY,MAKrCrvE,KAAKsvE,gBAAkB,O,gCAGjBlwD,GACN,SAAIA,IAASA,EAAM8zC,QAAgC,sBAAtB9zC,EAAM8zC,OAAOn8D,QACtCiJ,KAAKmuE,aAAc,EAEnBnuE,KAAKm1C,QAAQ,OAAQj+C,OAAO8sB,OAAOhkB,KAAKq+D,UAAW,CAC/C7wD,OAAO,EACPm1C,SAAU,KAEPxgD,OAAOqsC,oBAAoB,UAAWxuC,KAAKouE,c,oCAMtD,OAAIpuE,KAAKuzD,gBAAkBvzD,KAAKmuE,YACrBhsE,OAAOyd,iBAAiB,UAAW5f,KAAKouE,UAAUp2E,KAAKgI,QAGlEA,KAAK6uE,mBAAoB,EAElB7uE,KAAKm1C,QAAQ,OAAQj+C,OAAO8sB,OAAOhkB,KAAKq+D,UAAW,CACtD7wD,OAAO,EACPm1C,SAAU,Q,gCAMR3iD,KAAKuzD,gBAAkBvzD,KAAKmuE,aAC9BnuE,KAAKm1C,QAAQ,QAASn1C,KAAKq+D,a,+BAM1Br+D,KAAK6uE,mBACN7uE,KAAKm1C,QAAQ,OAAQn1C,KAAKq+D,a,6BAW3BkR,GACH,IAAMvuE,EAAOd,KAAK0F,MAAM2pE,GAClBH,EAAgBpuE,EAAO,GAAK,EAAI,EAEtChB,KAAKwvE,eAAexuE,EAAMouE,K,mCAU1B,IAAMG,EAAYrvE,KAAK0F,OAAuC,EAAhC5F,KAAK+kD,OAAOb,iBAAyBlkD,KAAK6xD,GAAGyH,eAE3Et5D,KAAKwvE,eAAeD,EAAW,K,iCAGxB3mD,GACQ,aAAXA,GACA5oB,KAAKmvE,kBAAkB,aAMI,IAA3BnvE,KAAK6uE,oBACL7uE,KAAKm1C,QAAQ,OAAQn1C,KAAKq+D,WAE1Br+D,KAAK2uE,QAAQW,gBAAkBtvE,KAAK+kD,OAAO5B,SAE/CnjD,KAAK6uE,mBAAoB,I,iCAGlBn9D,EAAI86B,GACPA,GAAWA,EAAQsgC,OACnB51E,OAAO8sB,OAAOhkB,KAAK2uE,QAASniC,EAAQsgC,S,wCAI1B2C,GACdzvE,KAAK2uE,QAAQc,eAAiBA,I,gCAGxB,OACN,EAAAttE,QAAOqsC,oBAAP,WAA8BxuC,KAAKstE,eACnCttE,KAAK40C,kB,gCA5ML,IAAMrkC,EAAO,CACTw+D,WAAY/uE,KAAK+uE,YAEbO,EAAoBtvE,KAAK2uE,QAAzBW,gBAEJA,IACA/+D,EAAK++D,gBAAkBA,EACvB/+D,EAAKk/D,eAAiBzvE,KAAK2uE,QAAQc,gBAGvCl/D,EAAKoyC,SAAW3iD,KAAKyuE,UAAU9rB,SAE/B,IACIpyC,EAAKuwB,SAAW5gC,KAAK0F,MAAM5F,KAAKtE,OAAO47D,kBACzC,MAAO/0D,IAKT,OAAOgO,I,6BAIP,IACI,OAAOvQ,KAAKtE,OAAOiC,OAAOonD,QAAU,GACtC,MAAOxiD,GACL,MAAO,M,yBAKX,IACI,OAAOvC,KAAKtE,OAAO0+C,MAAM1+C,QAAU,GACrC,MAAO6G,GACL,MAAO,S,gCArFU0/D,I,+uBCyBdkL,G,YA1BX,WAAYzxE,GAAQ,a,4FAAA,UAChB,E,uEAAA,yBACKA,OAASA,EACd,EAAKw4C,SAAS,EAAKx4C,OAAQ,QAAS,EAAKwzC,QAAzC,OAGA,EAAKgF,SACD,EAAKx4C,OACL,oCACA,EAAKg0E,qBAHT,OANgB,E,+SAehB1vE,KAAKm1C,QAAQ,YAAa,CACtBzjC,GAAI1R,KAAKtE,OAAO0uE,WAAW/yE,IAAI,MAC/BN,KAAM,yB,gCAKViJ,KAAK40C,qB,gCAvBUqtB,I,2KCLjB0N,G,WACF,WAAYjwE,I,4FAAQ,SAChBM,KAAKN,OAASA,E,qKAGV,WAiBJ,OAhBKM,KAAK0tC,UACN1tC,KAAK0tC,QAAUD,MAAM9vC,IAAO2B,IAAIM,OAAOI,KAAKN,OAAQ,gBAC/CynB,MAAK,SAACimB,GAAD,OAAcA,EAAShB,UAC5BjlB,MAAK,SAACimB,GAEH,OAAIA,GAAYA,EAAS+Q,UAAUyxB,WAExBxiC,EAAS+Q,UAAUyxB,WAGvB,MAEVzoD,MAAK,SAACyoD,GACH,EAAKA,WAAa,IAAIz+B,IAAIy+B,EAAWzhE,KAAI,SAAC0vC,GAAD,MAAc,CAACA,EAASnsC,GAAImsC,WAG1E79C,KAAK0tC,Y,8BAGRyR,GACJ,IAAM7sC,EAAO,GACTurC,EAAW79C,KAAK4vE,WAAWv4E,IAAI8nD,GAEnC,GAAItB,EAGA,IAFAvrC,EAAKnL,KAAK02C,GAEmB,IAAtBA,EAASgyB,UACZhyB,EAAW79C,KAAK4vE,WAAWv4E,IAAIwmD,EAASgyB,UACxCv9D,EAAK4oC,QAAQ2C,GAIrB,OAAOvrC,O,kCAKTw9D,GAAY,G,umDC5BlB,IAUaC,GAAkB,SAACtP,EAAUhU,GAAX,qBAA+BgU,EAA/B,uBAAsDhU,IA6UtEujB,G,YAnUX,WAAYxjC,EAAS4P,GAAY,a,4FAAA,UAC7B,0BAAM5P,KACDi0B,SAAWj0B,EAAQi0B,SACxB,EAAKwP,UAAYzjC,EAAQyjC,WAAc,SAAC1/D,GAAD,OAAUA,GACjD,EAAK2/D,OAA0B,IAAlB1jC,EAAQ0jC,MACrB,EAAKZ,gBAAkB9iC,EAAQ8iC,gBAC/B,EAAKpC,QAAU,KACf,EAAK9wB,WAAaA,EAClB,EAAK+zB,oBAAqB,EAC1B,EAAK5c,cAAiBlb,EAAMiB,OAAOzC,aAAex/C,KAAI8K,OAAQ,CAAC,MAAO,SAAU,WAAY,QACtF9K,KAAI8K,OAAQ,CAAC,MAAO,SAAU,kBAAkB,QAChDpI,EAXuB,E,wSAe7B,MAAO,e,sCAuDKolD,GACZ,MAA0B,iBAAfA,EACA,MAINn/C,KAAKowE,eACNpwE,KAAKowE,aAAepwE,KAAKqwE,aAAaC,QAAQnxB,GACzChxC,KAAI,SAAC0vC,GAAD,OAAeA,EAASY,MAAM15C,iBAClCZ,KAAK,QAGPnE,KAAKowE,gB,8CAOJ3Y,EAAW4G,G,yFACGr+D,KAAK+sE,a,OAArBG,E,OACA38D,EAAO,GACbrZ,OAAO8sB,OAAOzT,EAAM8tD,EAAWr+D,KAAKo8C,YAAc,CAC9CgL,YAAa,CAAC,CACV11C,GAAI1R,KAAKo8C,WAAW1qC,GACpBy0D,QAASnmE,KAAKo8C,WAAW+pB,QAAUnmE,KAAKo8C,WAAW+pB,QAAQz0D,GAAK,IAChEshB,SAAUhzB,KAAKygE,aAGvBhV,EAAO,SAAStrC,IAAIsU,KAAKuB,UAAUzlB,EAAM,KAAM,IAC/C28D,EAAQt7C,MAAM6lC,EAAWlnD,G,wJAGPA,G,gGAERvQ,KAAKqwE,aAAa5iC,Q,cAGlB2iC,EAAepwE,KAAKuwE,gBAAgBhgE,EAAKrY,OAAO2lD,aAIlDttC,EAAKrY,OAAO2lD,SAAWuyB,G,SAErBpwE,KAAK4xB,MAAM,kBAAmB5xB,KAAKiwE,UAAU1/D,EAAMvQ,KAAKwwE,c,uDAG9D/kB,EAAO,SAAStrC,IAAI,yB,0IAIf,WACT,OAAO,IAAI9K,SAAQ,SAACC,GAChB,IAAMm7D,EAAiB,kBAAMn7D,EAAQ,EAAK43D,UAErB,OAAjB,EAAKA,QACL,EAAKn4B,KAAK,QAAS07B,GAEnBA,S,8BAKJ,ID3HI/wE,EC2HJ,OAEJM,KAAKwwE,YAAcxwE,KAAKtE,OAAO0uE,WAE/BpqE,KAAKqwE,cD/HG3wE,EC+HyBM,KAAKwwE,YAAYzzB,YD9HjD+yB,GAAUpwE,KACXowE,GAAUpwE,GAAU,IAAIiwE,GAAajwE,IAGlCowE,GAAUpwE,IC4HbM,KAAK0wE,SAAW,IAAIvD,GAASntE,KAAKtE,QAClCsE,KAAKqnE,eAAiB,IAAImH,GAAexuE,KAAKtE,QAC9CsE,KAAK2wE,SAAW,IAAIC,GAAS5wE,KAAKtE,QAGlC2Z,QAAQoU,IAAI,CACRonD,GAAavsC,KAAKtkC,KAAKygE,UACvBzgE,KAAKqwE,aAAa5iC,UACnBtmB,MAAK,SAAC5W,GAAD,OAAU,EAAK2+B,QAAQ3+B,MAE/BvQ,KAAKk0C,SAASl0C,KAAK0wE,SAAU,MAAO1wE,KAAK8wE,UAAW9wE,MACpDA,KAAKk0C,SAASl0C,KAAKqnE,eAAgB,MAAOrnE,KAAK+wE,gBAAiB/wE,MAChEA,KAAKk0C,SAASl0C,KAAK2wE,SAAU,MAAO3wE,KAAKgxE,UAAWhxE,MACpDA,KAAKk0C,SAASl0C,KAAKtE,OAAQ,aAAa,WACpC,EAAKu5C,aAAa,EAAKv5C,OAAO0+C,MAAM1+C,OAAQ,SAAU,EAAKu1E,aAE/DjxE,KAAKk0C,SAASl0C,KAAK0wE,SAAU,cAAe1wE,KAAKkxE,cAAelxE,MAEhEA,KAAKk0C,SAASl0C,KAAKtE,OAAQ,gBAAgB,kBAAM,EAAKy0E,oBAAqB,O,8BAGvE5/D,GAAM,IACH28D,EADG,GACQ38D,EADR,MAGVvQ,KAAKktE,QAAUA,EACfltE,KAAKm1C,QAAQ,SACbn1C,KAAKk0C,SAASl0C,KAAK0wE,SAAU,e,oCAGnBnR,GACLv/D,KAAKmwE,qBACNnwE,KAAKmwE,mBAAqBjnE,MAAMq2D,EAAOnkD,QAIvB,YAAhBmkD,EAAOzmE,OAIXkH,KAAKmwE,mBAAmB5Q,EAAOH,SAAW,GAAKG,EAAO5c,SACtD3iD,KAAKqtE,gBAAkBrtE,KAAKmwE,mBAAmBnrE,U,+BAG1Cu6D,GAML,GALKv/D,KAAKmwE,qBACNnwE,KAAKmwE,mBAAqBjnE,MAAMq2D,EAAOC,WAIF,QAArCnoE,KAAIkoE,EAAQ,qBAAhB,CANa,IAUQ5c,GAAa4c,EAAOnyB,SACpCioB,cAD6B,yBACGkK,EAAOH,SADV,wCAC2D,IADrF+R,YAEJxuB,IACA3iD,KAAKmwE,mBAAmB5Q,EAAOH,SAAW,GAAK/mB,EAAMr3C,KAAKu4C,kBAAkBoJ,O,sCAIpEyuB,GAAmB,IAAX7gE,EAAW,uDAAJ,GACrB+1C,EAAQtmD,KAAKwwE,YACX7yE,EAAWqC,KAAKtE,OAAhBiC,OAOF0zE,EAAe,CACjBD,SACA,QAAS,aACTtwC,SAAUvwB,EAAKuwB,SAEf6hB,SAA0B,IAAhBpyC,EAAKoyC,SACfzqD,OAAQhB,OAAO8sB,OAAO,CAClB,MAAO+rD,GAAgB/vE,KAAKygE,SAAUna,EAAMjvD,IAAI,OAChD,QAAS,aACTN,KAAMuvD,EAAMtH,WACZsyB,MAAOtxE,KAAK6xD,GAAGmO,UACfuR,WAAYvxE,KAAK6xD,GAAG2f,gBACpBrjB,SAA8B,OAApB59C,EAAKw+D,YACmB,IAA3BpxE,EAAOtG,IAAI,YACS,cAApBkZ,EAAKw+D,YAAkD,aAApBx+D,EAAKw+D,WAC/C1B,gBAAiB98D,EAAK6K,MACtB80D,MAAOlwE,KAAKkwE,MACZxvB,WAAY4F,EAAMjvD,IAAI,cACtBo6E,QAASzxE,KAAKuzD,eACfvzD,KAAKsmD,QAGRtmD,KAAKmwE,qBACLkB,EAAan5E,OAAOi4E,mBAAqBnwE,KAAKmwE,mBAC9CkB,EAAan5E,OAAOm1E,gBAAkBrtE,KAAKmwE,mBAAmBnrE,SAG/C,IAAfuL,EAAK/C,QACL6jE,EAAa7jE,OAAQ,GAGrB+C,EAAK++D,iBACL+B,EAAan5E,OAAOo3E,gBAAkBS,GAAgB/vE,KAAKygE,SAAUlwD,EAAK++D,iBAC1E+B,EAAan5E,OAAOu3E,eAAiBl/D,EAAKk/D,gBACnCzvE,KAAKsvE,kBACZ+B,EAAan5E,OAAOo3E,gBAAkBS,GAAgB/vE,KAAKygE,SAAUzgE,KAAKsvE,iBAC1E+B,EAAan5E,OAAOu3E,eAAiB,UAGzCzvE,KAAK+rE,gBAAgBsF,K,gCAGfD,EAAQ7gE,GAEd,GAAe,gBAAX6gE,EACA,OAAO,EAGX,IAAM9qB,EAAQtmD,KAAKwwE,YACba,EAAe,CACjBD,SACA,QAAS,aACTtwC,SAAUvwB,EAAKuwB,SAGf6hB,SAA0B,IAAhBpyC,EAAKuwB,SACf5oC,OAAQ,CACJ,qBAAe8H,KAAKygE,SAApB,oBAAwClwD,EAAKmB,IAC7C,QAAS,UACT6wC,UAAWsF,GAAsBt3C,EAAKzX,MACtCw4E,MAAOtxE,KAAK6xD,GAAGmO,UACfuR,WAAYvxE,KAAK6xD,GAAG2f,gBACpBE,aAAc3B,GAAgB/vE,KAAKygE,SAAUna,EAAMjvD,IAAI,OACvDg2E,gBAAiB98D,EAAK6K,MACtBq2D,QAASzxE,KAAKuzD,gBA4BtB,OAxBIvzD,KAAKmwE,qBACLkB,EAAan5E,OAAOi4E,mBAAqBnwE,KAAKmwE,mBAC9CkB,EAAan5E,OAAOm1E,gBAAkBrtE,KAAKmwE,mBAAmBnrE,QAG9DuL,EAAK6uD,WACLiS,EAAan5E,OAAOk1E,mBAAqB78D,EAAK6uD,UAG9C7uD,EAAKoyC,WACL0uB,EAAan5E,OAAOyqD,SAAWpyC,EAAKoyC,WAGrB,IAAfpyC,EAAK/C,QACL6jE,EAAa7jE,OAAQ,GAGrB84C,EAAMrH,gBACNoyB,EAAan5E,OAAO2lD,SAAW79C,KAAKqwE,aAAaC,QAAQhqB,EAAMrH,cAAc/Z,WAAWxzB,IACnFvD,KAAI,SAAC3X,GAAD,OAAOA,EAAEioD,SACbt6C,KAAK,OACLwtE,qBAGF3xE,KAAK+rE,gBAAgBsF,K,kDAGhB5Z,EAAWlnD,G,uEACjB8gE,EAAe,CACjB,QAAS,OACTn5E,OAAQhB,OAAO8sB,OAAOzT,EAAM,CACxB,MAAOw/D,GAAgB/vE,KAAKygE,SAAUlwD,EAAKmB,IAC3C,QAAS,eAIjB1R,KAAK4xB,MAAM,YAAay/C,G,gIAIxBrxE,KAAK40C,gBAEL50C,KAAK0wE,SAAStyB,UACdp+C,KAAKqnE,eAAejpB,Y,yBA5SpB,IACI,OAAOp+C,KAAKtE,OAAO0+C,MAAM1+C,QAAU,GACrC,MAAO6G,GACL,MAAO,M,4BAKX,IAAM+jD,EAAQtmD,KAAKwwE,YACb50B,EAAa0K,EAAMjvD,IAAI,eAAiB,GACxCu6E,EAAgB16E,OAAO4G,KAAK89C,EAAWi2B,QAAU,IACjD3zB,EAlDE,SAACoI,GAAD,OAAYA,EAAMjvD,IAAI,SAAW,IAAI8W,KAAI,SAAC1J,GAAD,OAASA,EAAIA,OAkDjDqtE,CAAQxrB,GACfyrB,EA3CK,SAACzrB,GAAD,OAAYA,EAAMjvD,IAAI,YAAc,GA2C/B26E,CAAW1rB,GAErB/1C,EAAO,CACTgyC,UAAsC,UAA3B+D,EAAMjvD,IAAI,aAA2B,QAAU,QAC1DonD,MAAO6H,EAAMjvD,IAAI,SAEjBsrD,SAAUziD,KAAKuQ,MAAM61C,EAAMjvD,IAAI,YAAc,MA8BjD,OA3BIu6E,EAAc5sE,OAAS,IACvBuL,EAAKqhE,cAAgBA,EAAcztE,KAAK,MAGxC+5C,EAAKl5C,OAAS,IACduL,EAAK2tC,KAAOA,GAGZ6zB,EAAQ/sE,OAMRshD,EAAMrH,gBACN1uC,EAAKstC,SAAWyI,EAAMrH,cAAc5nD,IAAI,OAIZ,SAA5BivD,EAAMjvD,IAAI,sBACHkZ,EAAKoyC,SAGZ/G,EAAWq2B,gBACX1hE,EAAK0hE,cAAgBr2B,EAAWq2B,eAG7B1hE,O,gCApEgB6xD,I,inBCF/B,SAAS8P,GAAcpjB,GACfA,EAAOra,KACPqa,EAAOra,MAEXqa,EAAO1Q,UAEPp+C,KAAK40C,cAAcka,UACZ9uD,KAAKu3C,QAAQuX,EAAOyT,WAQ/B,SAAS4P,GAAW/uC,GAChB,IAAMgvC,EAAoBhvC,EAAKvP,uBAAuB,4BAGlDu+C,EAAkBptE,OAAS,IAC3BqzC,EAAMW,YAAY5V,EAAM,CAAC,mBAAoB,8BAEzCgvC,EAAkB,GAAGx+C,YACrBw+C,EAAkB,GAAGx+C,WAAW9T,YAAYsyD,EAAkB,KAW1E,SAASC,GAAajvC,EAAMjR,GAAsB,IAAbtwB,EAAa,uDAAN,KACpCq3C,EAAW,uEAAH,OAA0Eo5B,IAA1E,kBAA6FngD,GAErGtwB,IACAq3C,GAAY,sCAAJ,OAA0Ch3C,GAAOolD,UAAU,cAA3D,aAA6EzlD,EAA7E,WAGZq3C,GAAY,SAEZ,IAAMq5B,EAAYvyE,KAAKo6C,OAASp6C,KAAKo6C,MAAMqf,aAAez5D,KAAKo6C,MAAMkK,UAAUtkD,KAAKo6C,MAAMqf,YAAar2B,GAEvG+uC,GAAW/uC,GACXiV,EAAMU,SAAS3V,EAAM,oBAGjBmvC,IACAl6B,EAAMU,SAAS3V,EAAM,6BACrB8V,GAAY,+DAAJ,OAAmEq5B,EAAnE,cAGZ,IAAMC,EAAYn6B,EAAMQ,WAAN,gDAA0DK,EAA1D,WAElB9V,EAAK/vB,YAAYm/D,GAEjBxyE,KAAK+0C,KAAK,YAAY,WAClBsD,EAAMW,YAAY5V,EAAM,CAAC,mBAAoB,8BAEzCovC,EAAU5+C,YACV4+C,EAAU5+C,WAAW9T,YAAY0yD,KAEtCxyE,MASP,SAAS2V,KAAsB,IAAds9C,EAAc,uDAAJ,GACjB7vB,EAAO7vB,SAAS6lC,eAAep5C,KAAKrC,OAAOtG,IAAI,SAC7CwK,EAAkBoxD,EAAlBpxD,KAAMswB,EAAY8gC,EAAZ9gC,QAEVsgD,EAAoBvwE,GAAOolD,UAAUn1B,GAGrCsgD,IAAsBtgD,IACtBsgD,EAAoBvwE,GAAOolD,UAAUorB,aAAWh4E,QAKpD,IAAMi4E,EAAe,CACjB9wE,OACAoxD,QAAS9gC,EACTA,QAASsgD,GAGTxf,EAAQn6D,OACR65E,EAAa75E,KAAOm6D,EAAQn6D,MAGhCu5E,GAAa17E,KAAKqJ,KAAMojC,EAAMqvC,EAAmB5wE,GAE7C7B,KAAKo6C,MAAM1+C,QACXsE,KAAKo6C,MAAM1+C,OAAOi0B,OAGtB3vB,KAAKm1C,QAAQ,QAASw9B,GAM1B,SAASnF,KACL,IAAMrd,EAAYnwD,KAAKk1D,eAGvB7c,EAAMW,YAAYmX,EAAW,mBAEzBnwD,KAAKo6C,MAAMqf,YAAY/V,WACvBrL,EAAMU,SAASoX,EAAW,mBAE1BA,EAAUt8B,uBAAuB,mBAAmB,GAC/CsmC,aAAa,aAAcj4D,GAAOolD,UAAU,iBAGrDtnD,KAAKm1C,QAAQ,gBAOjB,SAAS0pB,GAAWj2C,GACX5oB,KAAK4yE,cACN5yE,KAAK4yE,aAAc,EAEnB5yE,KAAKrC,OAAOoO,IAAI,OAAQ,MACxB/L,KAAKrC,OAAOoO,IAAI,UAAW,MAE3B/L,KAAKm1C,QAAQ,WAAYvsB,IAOjC,SAASiqD,GAAczzD,GAAgB,UAC/B0zD,EAD+B,mBAANzzD,EAAM,iCAANA,EAAM,kBAGnC,OAAQD,GACJ,IAAK,eACD0zD,EAAetF,GAAex1E,KAAf,MAAAw1E,GAAc,CAAMxtE,MAAN,OAAeqf,IAC5C,MACJ,IAAK,WACDyzD,EAAejU,GAAW7mE,KAAX,MAAA6mE,GAAU,CAAM7+D,MAAN,OAAeqf,IACxC,MACJ,IAAK,QACDyzD,EAAen9D,GAAQ3d,KAAR,MAAA2d,GAAO,CAAM3V,MAAN,OAAeqf,IACrC,MACJ,QACIyzD,GAAe,EAAA9yE,KAAKm1C,SAAQn9C,KAAb,SAAkBgI,KAAMof,GAAxB,OAAkCC,IAGzDyzD,IASJ,SAASC,GAAgBvmC,EAASrvC,GAAU,WACxC6C,KAAKo6C,MAAQ,IAAI44B,GAAShzE,KAAKrC,QAG/BqC,KAAKk0C,SAASl0C,KAAKo6C,MAAO,MAAOy4B,GAAe7yE,MAEhDA,KAAKk0C,SAASl0C,KAAKo6C,MAAO,QAAQ,WAC9Bp6C,KAAK4yE,aAAc,IACpB5yE,MAGC7C,IAAiC,IAArBA,EAAS8E,UACrBtE,IAAO2B,IAAIW,IAAK,GAIpBD,KAAK+0C,KAAK,SAAS,WACfsD,EAAMS,cAAc94C,KAAKrC,OAAOtG,IAAI,QAAQkI,OAC7CS,MAEHqV,QAAQoU,IAAI,CACR,IAAIpU,SAAQ,SAACC,GACT,IAAM29D,EAAc,WAChB39D,IACA,EAAKm/B,IAAI,aAAcy+B,IAGrBA,EAAc,SAACrqD,GACjBvT,EAAQuT,GACR,EAAK4rB,IAAI,aAAcw+B,IAG3B,EAAKl+B,KAAK,aAAck+B,GACxB,EAAKl+B,KAAK,aAAcm+B,MAE5BC,GAAWtkB,KAAKriB,EAAQ+K,WACzBpwB,MAAK,YAAa,IAAX0B,EAAW,WACjBwvB,EAAM1U,KAAK6I,EAAQ+K,SAAS,SAAC67B,EAActkB,GACvC,IAAMpmB,EAASyqC,GAAW97E,IAAI+7E,EAAar8E,MAAQ+3D,GAE/CpmB,GAEA,EAAK2qC,UAAU,IAAI3qC,EAAO0qC,EAAaz1E,QAAUy1E,OAIpDvqD,GACD,EAAKuxB,MAAMkkB,WAKnBt+D,KAAKszE,SAAU9mC,EAAQ8Z,OAAS9Z,EAAQ96B,IAM5C,SAAS6hE,KAAe,WACJ3qB,EAAkB5oD,KAA1BrC,OAEFonD,EAAS,IAAI7C,GAAOliD,KAAKsmD,MAAMphB,YAC/B/nC,EAAWyrD,EAAcgI,cACzBxtB,EAAO7vB,SAAS6lC,eAAewP,EAAcvxD,IAAI,SASvD,GAPI+rC,GACA+uC,GAAW/uC,GAIf2hB,EAAOh5C,IAAI,UAAWynE,GAAUntB,YAAYrmD,KAAKsmD,QAE7CtmD,KAAKsmD,MAAMjvD,IAAI,UAAW,CAC1B,IAAMw6E,EAAS36E,OAAO4G,KAAKkC,KAAKsmD,MAAMjvD,IAAI,WAAW,IAAM,KAC3D0tD,EAAOh5C,IAAI,SAAU8lE,GASzB,GANAjpB,EAAcgH,UAAU7K,GAGxB1M,EAAM1U,KAAK3jC,KAAKu3C,QAAS26B,GAAelyE,MAGpC4oD,EAAcvxD,IAAI,WAAY,CAC9B,IAAM0mD,EAAU/9C,KAAKsmD,MAAM1H,WAAWgK,EAAcvxD,IAAI,YAEpD0mD,GACAgH,EAAOh5C,IAAI,YAAagyC,EAAQC,UAKpC4K,EAAcvxD,IAAI,SAClB0tD,EAAOh5C,IAAI,YAAa68C,EAAcvxD,IAAI,SAG1CuxD,EAAckJ,kBACd9xD,KAAKqzE,UAAU,IAAI3H,GAAkB,CACjCvuE,SAAUyrD,EAAcmJ,oBAK5BhN,EAAOb,iBAAmB,KAED,IAArB/mD,EAAS8E,SAAoB8iD,EAAOrB,YACpC1jD,KAAKqzE,UAAU,IAAIrL,GAAgB,CAC/Bx6D,MAAO,IAAIolB,MAAM,IAAIA,MAAO0B,UAAuC,IAA1BywB,EAAOb,qBAIpDlkD,KAAK4zC,GAAG,gBAAiB5zC,KAAKrE,KAAMqE,OAIxCA,KAAKsmD,MAAMjI,eAAiB,GAC5Br+C,KAAKqzE,UAAU,IAAIpO,GAAe,CAC9B/nB,SAAUl9C,KAAKsmD,MAAMjI,iBAIzBuK,EAAcvxD,IAAI,qBAAuB2I,KAAKsmD,MAAMhI,eACpDt+C,KAAKqzE,UAAU,IAAInO,GAAmB,CAClCC,QAASnlE,KAAKsmD,MAAM9H,sBAI5B,IAGIpC,EAHEI,EAAWx8C,KAAKsmD,MAAMjvD,IAAI,aAAe,GAIzCo8E,IAHa7qB,EAAcvxD,IAAI,eAAiB,IAGrBq8E,UAAYl3B,EAASm3B,cAAuC,SAAvBn3B,EAASo3B,UAE/E,GAAIH,EACA,IACI,IAAII,EAAkBp/C,KAAKC,MAAMo/C,eAAe74B,QAAQ,uBACnD44B,IACDA,EAAkC,IAAhB3zE,KAAKC,SACvB2zE,eAAeluB,QAAQ,qBAAsBnxB,KAAKuB,UAAU69C,KAGhEz3B,EAAa,CACT1qC,GAAI8qC,EAASm3B,aACbxN,QAASV,GAAcM,GAA6BvpB,GAAWq3B,IAGnE7zE,KAAKqzE,UAAU,IAAIhN,GAAwBjqB,EACvC,CACIkqB,SAAU1d,EAAcvxD,IAAI,YAC5BkvE,gBAAiB3d,EAAcvxD,IAAI,mBACnCmvE,WAAY5d,EAAcvxD,IAAI,iBAExC,MAAOwxB,GACL4iC,EAAO,oBAAoB5iC,MAAM,+CAAgDA,GASzF,IAAMkrD,EAAcnrB,EAAcvxD,IAAI,SAClC08E,GAAeA,EAAYtT,WAAgC,IAApB1b,EAAOvB,UAC9CxjD,KAAKqzE,UAAU,IAAIrD,GAAiB+D,EAAaN,EAAer3B,EAAa,QAMzD,IAApB2I,EAAOvB,UACPxjD,KAAKqzE,UAAU,IAAI/G,GAAe,CAC9B5sE,OAAQkpD,EAAcvxD,IAAI,UAC1BM,KAAMixD,EAAcvxD,IAAI,SACxB83D,IAAKvG,EAAcvxD,IAAI,UAI/B2I,KAAKqzE,UAAU,IAAI1P,IAGnB3jE,KAAKo6C,MAAMwV,UAAU7K,GAErB6D,EAAc+H,mBAAmBxpC,MAAK,WAGlC,EAAKguB,QAAQ,iBACd0b,OAAM,SAAChvD,GACN,EAAKszC,QAAQ,aAAc,CACvBhjB,QAASugD,aAAW7wE,GACpBA,SAGJ8T,GAAQhf,KAAK,EAAM,CACfmC,KAAM,aAENq5B,QAASugD,aAAW7wE,GACpBA,YAQZ,SAASmyE,GAAanrD,GAClB,IAAMhnB,EAAQgnB,GAA0B,MAAjBA,EAAM2L,OAAkBh6B,KAAYE,KAErDu4D,EAAU,CACZ9gC,QAASugD,aAAW7wE,GACpBA,QAaJ,GAVA7B,KAAKm1C,QAAQ,aAAc8d,GAG3Bt9C,GAAQhf,KAAKqJ,KAAM9I,OAAO8sB,OAAO,CAC7BlrB,KAAM,mBACPm6D,IAEHxH,EAAO,OAAOtrC,IAAI,QAAS0I,GAGR,gBAAflrB,IAAOwxD,IACP,MAAMtmC,EAId,IAAMyqC,GAAS,SAAU1K,GACrB,IAAMpc,EAAUt1C,OAAO8sB,OAAO,GAAI4kC,GAGlCjrD,IAAO2B,IAAII,OAAS8sC,EAAQ9sC,QAAU,OACtC/B,IAAOwxD,IAAsB,eAAfxxD,IAAOwxD,IAAwB,aAAgB3iB,EAAQ2iB,KAAOxxD,IAAOwxD,KAAO,aAGtFlH,GAAOI,cAAc7b,EAAQ9sC,UAIjC+rD,EAAO,OAAOtrC,IAAI,SAAUk4B,EAAME,OAAO,GAAI/L,IjEjbpB,aiEwbrBA,EAAQ9sC,SAAmD,IAAhB8sC,EAAQ96B,KACnD86B,EAAQ8Z,MAAQM,GAAanG,sBACtBjU,EAAQ96B,IAKW,iBAAnB86B,EAAQtqC,QACfA,GAAOslD,gBAAgB7pD,IAAO5C,aAAayxC,EAAQtqC,SAInDsqC,EAAQ8e,MACR9e,EAAQ8e,IAAIE,UAAYxrD,MAI5BA,KAAKrC,OAAS,IAAIuxD,GAClBlvD,KAAKi1C,aAAaj1C,KAAKrC,OAAQ,QAASo1E,GAAiB/yE,MAEzDA,KAAKrC,OAAOg+C,WAAWnP,GAGnBA,EAAQltC,MACR3B,IAAO2B,IAAIC,IAAMitC,EAAQltC,KAIzBktC,EAAQhtC,SACR7B,IAAO2B,IAAIE,SAAWgtC,EAAQhtC,SACvBgtC,EAAQltC,MACf3B,IAAO2B,IAAIE,SAAWgtC,EAAQltC,IAAIsF,QAAQ,UAAW,cAIrD4nC,EAAQ/sC,cACR9B,IAAO2B,IAAIG,cAAgB+sC,EAAQ/sC,cAC5B+sC,EAAQltC,MACf3B,IAAO2B,IAAIG,cAAgB+sC,EAAQltC,IAAIsF,QAAQ,SAAU,kBAW7D5E,KAAKu3C,QAAU,GAMfv3C,KAAK4yE,aAAc,EAEnB5yE,KAAKi0E,qBAAsB,EAGtBznC,EAAQ0nC,YACT/4B,EAAW1N,MAAM9vC,IAAOqD,MAIxBwrC,EAAQrvC,UACR8qD,GAAOxa,MAAMjB,EAAQ9sC,QAMrB8sC,EAAQsgC,OAAStgC,EAAQsgC,MAAMrM,UAC/BoQ,GAAahiB,OAGjBpD,EAAO,OAAOtrC,IAAI,SAAUgS,GACxBnyB,KAAK4zC,GAAG,OAAO,SAAUx0B,GACrB+S,EAAQ/S,EAAOlW,MAAM9Q,UAAUiP,MAAM1Q,KAAK+O,UAAW,QAE3D1N,KAAKgI,SAMXszD,GAAOl7D,UAAY,CAKfuD,KALe,SAKVmlC,GAEG9gC,KAAKo6C,MAAMqf,YAAYvV,iBAAmB,IACtCpjB,GACA9gC,KAAK+0C,KAAK,OAAQ/0C,KAAKu5D,KAAKvhE,KAAKgI,KAAM8gC,IAG3C9gC,KAAKo6C,MAAMz+C,SAQnBE,MApBe,SAoBTykE,GAEEtgE,KAAKo6C,MAAMqf,YAAYvV,iBAAmB,GAC1ClkD,KAAKo6C,MAAMv+C,OAAOykE,IAQ1B/G,KA/Be,SA+BVv4D,GACDhB,KAAKo6C,MAAMmf,KAAKv4D,IAMpBk1D,OAtCe,WAuCXl2D,KAAK40C,gBAED50C,KAAKo6C,OACLp6C,KAAKo6C,MAAM8b,UASnBwJ,SAnDe,SAmDNhuD,GAAkB,IAAd86B,EAAc,uDAAJ,GACby+B,EAAmB,WACrB,IAAMlmB,EAAS/kD,KAAKo6C,MAAMqf,YAEtBjtB,GAAWA,EAAQxrC,MACnB+jD,EAAOh5C,IAAI,YAAaygC,EAAQxrC,MAIpChB,KAAKo6C,MAAMslB,SAAS3a,GACpB/kD,KAAKi0E,qBAAsB,GAC7Bj8E,KAAKgI,MAEHA,KAAKi0E,sBAELpV,GAAWloE,KAAKqJ,KAAM,YAGtBA,KAAKi0E,qBAAsB,EAE3Bj0E,KAAK+0C,KAAK,aAAck2B,EAAkBjrE,MAE1CA,KAAK+0C,KAAK,cAAc,WAChB/0C,KAAKo6C,OAASp6C,KAAKo6C,MAAM1+C,QACzBsE,KAAKnE,QAGTmE,KAAKi0E,qBAAsB,EAC3Bj0E,KAAKy0C,IAAI,aAAcw2B,KACxBjrE,MAIHA,KAAKm1C,QAAQ,WAAYzjC,EAAI86B,GAC7BxsC,KAAKszE,SAAS5hE,KAStBquD,UA9Fe,SA8FLjkE,GACNkE,KAAKo6C,MAAM2lB,UAAUjkE,IAOzBgkE,UAtGe,WAuGX,OAAO9/D,KAAKo6C,MAAM0lB,aAStBG,QAhHe,WAgHO,IAAdxoE,IAAc,yDAClBuI,KAAKo6C,MAAM6lB,QAAQxoE,IAOvBuoE,QAxHe,WAyHX,OAAOhgE,KAAKo6C,MAAM4lB,WAMtBE,SA/He,WAgIX,OAAOlgE,KAAKo6C,MAAM8lB,YAQtB7c,YAxIe,WAyIX,OAAOrjD,KAAKo6C,MAAMiJ,eAMtBiU,eA/Ie,WAgJX,OAAOt3D,KAAKo6C,MAAMkd,kBAStB6c,mBAzJe,WA0JX,OAAOj0E,KAAKyF,KAAM3F,KAAKs3D,iBAAmBt3D,KAAKqjD,cAAiB,MAQpE3L,cAlKe,WAmKX,OAAIW,EAAMiB,OAAO/C,WACN,SAGP8B,EAAMiB,OAAOpD,SACN,OAGPmC,EAAMiB,OAAOlD,YACN,UAGJ,WAMXoqB,YArLe,WAsLX,OAAOxgE,KAAKo6C,MAAMomB,eAMtBrB,gBA5Le,WA6LX,OAAOn/D,KAAKo6C,MAAM+kB,mBAMtBiV,mBAnMe,WAoMX,OAAOp0E,KAAKo6C,MAAMg6B,sBAOtBzT,mBA3Me,SA2MI15D,GACf,OAAOjH,KAAKo6C,MAAMumB,mBAAmB15D,IAOzCotE,kBAnNe,SAmNGC,GACd,OAAOt0E,KAAKo6C,MAAMi6B,kBAAkBC,IAQxCpf,aA5Ne,WA6NX,OAAOl1D,KAAKo6C,MAAM8a,gBAGtBvlC,KAhOe,WAiOX,OAAO3vB,KAAKo6C,MAAMzqB,QAOhB2jD,SAxOS,SAwOAhtB,GAAO,I,EAAA,c,EAAA,2FAEd,EAAKA,QACL,EAAK1R,cAAc,EAAK0R,OACxB,EAAKA,MAAMlI,UACX,EAAKkI,MAAQ,MAIbjO,EAAMM,SAAS2N,KAEfA,EAAQ,CACJ50C,GAAI40C,IAIZ,EAAKA,MAASA,aAAiBxJ,GAASwJ,EAAQ,IAAIxJ,GAAMwJ,GAGrD,EAAKA,MAAMjvD,IAAI,WAChB,EAAKivD,MAAMv6C,IAAI,SAAU,EAAKpO,OAAOtG,IAAI,YAIzC,EAAKivD,MAAMjvD,IAAI,UAxBD,gBAyBdk8E,GAAa58E,KAAK,GAzBJ,iDA4BJ,EAAK2vD,MAAM7Y,QA5BP,QA6BV8lC,GAAa58E,KAAK,GA7BR,kDA+BVq9E,GAAar9E,KAAK,EAAlB,MA/BU,yD,oLAwCtByzE,SAhRe,WAiRX,OAAOpqE,KAAKsmD,OAQhB+sB,UAzRe,SAyRLvkB,GAKNA,EAAOylB,UAAUv0E,MACjBA,KAAKk0C,SAAS4a,EAAQ,OALG,SAAU1vC,GAAgB,2BAANC,EAAM,iCAANA,EAAM,kBAC/Crf,KAAKm1C,QAAL,MAAAn1C,KAAA,WAAgB8uD,EAAOyT,UAAvB,YAAoCnjD,IAApC,OAAgDC,MAILrf,MAE/CA,KAAKu3C,QAAQuX,EAAOyT,WAAazT,GASrC0lB,UA1Se,SA0SL1lB,GACN,OAAO9uD,KAAKu3C,QAAQuX,KAS5BwE,GAAOgF,kBAAoB,WAQvB,OANI/vC,SAAWA,QAAQgN,MAEnBhN,QAAQgN,KAAK,yHAIV8iB,EAAMiB,OAAO3B,eAGxBU,EAAME,OAAO+a,GAAOl7D,UAAWigD,EAAM9E,QAEtB+f,UCjzBAmhB,GAvCI,WACf,IAAIC,GAAW,EAGf,IACI,IAAMC,EAAOphE,SAASsC,cAAc,OAMpC,GALA8+D,EAAKxa,aAAa,QAAS,8FAC3Bwa,EAAKxa,aAAa,QAAS,sIAC3Bh4D,OAAOoR,SAAS6C,KAAK/C,YAAYshE,GAGe,OAA7CxyE,OAAOoR,SAAS6C,KAAKglD,aAAa,QACR,OAAtBuZ,EAAKC,cACgB,GAArBD,EAAKE,cACc,GAAnBF,EAAKjZ,YACa,GAAlBiZ,EAAKG,WACe,GAApBH,EAAKlZ,aACgB,GAArBkZ,EAAKtkB,cACe,GAApBskB,EAAKvkB,YACRskB,GAAW,OACR,QAA+B36E,IAA5BoI,OAAO4yE,iBAAgC,CAC7C,IAAMC,EAAW7yE,OAAO4yE,iBAAiBJ,EAAM,OAE5CK,GAAsD,SAAzCA,EAASC,iBAAiB,YAAqE,WAA5CD,EAASC,iBAAiB,gBACzFP,GAAW,GAKnBvyE,OAAOoR,SAAS6C,KAAK0J,YAAY60D,GACnC,MAAOpyE,GACLmyE,GAAW,EAGf,OAAOA,GClCX,+FAaA,IAAM/lC,GAAM,GACZA,GAAI2kB,OAASA,GACb3kB,GAAI2kB,OAAO+O,QAAU8Q,GACrBxkC,GAAI2kB,OAAO11D,QAAUD,IAAOC,QAG5B1G,OAAOC,eAAew3C,GAAI2kB,OAAQ,WAAY,CAC1Cj8D,IAD0C,WAGtC,OAAO2I,KAAKk1E,YAAc,IAE9BnpE,IAL0C,SAKtCtU,GAGIA,IAAUP,OAAOO,KACjBA,EAAQ,IAGZP,OAAOC,eAAew3C,GAAI2kB,OAAQ,aAAc,CAC5C77D,MAAOA,EACPL,YAAY,EACZoY,cAAc,EACdC,UAAU,OAUtB,IAeMm/B,GAAgB,WAClBmN,GAAMJ,WAAWtD,EAAME,OAAO56C,IAAOsD,OAAQ,CACzCk2C,cAAekB,EAAMiB,OAAOnC,iBAGhC8Q,GAAOtM,WAAWx5C,OAAO4yB,SAASC,WAGhC6Z,GAAiB,WAAM,IACjBsmC,EAAQxmC,GAAI2kB,OAAOtF,SAAnBmnB,KAbM,WAAqB,IAApBliD,EAAoB,uDAAT,KAC1B/wB,GAAOslD,gBAAgB7pD,IAAO5C,aAAak4B,IAe3CmiD,CAAUzmC,GAAI2kB,OAAOtF,SAAS9rD,QAKO,YAAjCm2C,EAAMiB,OAAO5B,kBAA2C,SAARy9B,IAAmC,IAAjBV,OAAkC,IAARU,IAC5Fxd,GAAShc,aAjCG,SAACnP,GAEjB,KACoC,SAA5BwO,aAAaq6B,aAAsC,IAAZ7oC,GAAqBtsC,KAAKC,SAAW,OAC5EY,GAAQ8tD,KAAKriB,GAEnB,MAAOjqC,KA8BT+yE,CAAY3mC,GAAI2kB,OAAOtF,SAASjtD,UAGrB4tC","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 = \"/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 180);\n","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","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 // SponsorOverlay plugin\n 'Ad from': 'Ad from',\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 // SponsorOverlay plugin\n 'Ad from': 'Annonse fra',\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: 'Live',\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 forward: 'Spol fram 30 sekunder',\n loginToListen: 'Logg inn for å lytte',\n subscribeToListen: 'Abonner for å lytte',\n listen: 'Lytt'\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 // SponsorOverlay plugin\n 'Ad from': 'Annons från',\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 forward: 'Spola framåt 30 sekunder',\n loginToListen: 'Logga in för att lyssna',\n subscribeToListen: 'Prenumerera för att lyssna',\n listen: 'Lyssna'\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 ptv: 'https://ib.adnxs.com/ptv',\n ast: 'https://acdn.adnxs.com/ast/ast.js',\n debug: false\n }\n },\n\n cdn: {\n svp: `//cdn.stream.schibsted.media/player/${VERSION}`,\n player: '//cdn.stream.schibsted.media/jw/jwplayer-8.9.4',\n pollyfils: '//svp.vgc.no/pollyfils/es6-promise.min.js',\n youbora: 'https://smartplugin.youbora.com/v6/js/adapters/jwplayer/6.5.0/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.stream.schibsted.media/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 '*e24.no',\n\n // brandstudio cms\n '*vev.design',\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',\n '*svp.schibsted.io',\n '*cms.schibsted.media',\n '*localhost',\n '*pubops.net',\n '*stream.schibsted.media'\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 adressabrandstudio: 'fuz93B3kwPfLDZv+opQh6xasO9nRkraYSbQP0A==',\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","// 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","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\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","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","// 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 core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var 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","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar $toString = require('./_function-to-string');\nvar TO_STRING = 'toString';\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","var $export = require('./_export');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar quot = /\"/g;\n// B.2.3.2.1 CreateHTML(string, tag, attribute, value)\nvar createHTML = function (string, tag, attribute, value) {\n var S = String(defined(string));\n var p1 = '<' + tag;\n if (attribute !== '') p1 += ' ' + attribute + '=\"' + String(value).replace(quot, '"') + '\"';\n return p1 + '>' + S + '';\n};\nmodule.exports = function (NAME, exec) {\n var O = {};\n O[NAME] = exec(createHTML);\n $export($export.P + $export.F * fails(function () {\n var test = ''[NAME]('\"');\n return test !== test.toLowerCase() || test.split('\"').length > 3;\n }), 'String', O);\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\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","// 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","'use strict';\nvar fails = require('./_fails');\n\nmodule.exports = function (method, arg) {\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call\n arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);\n });\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","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","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","// 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","// 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","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\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';\nif (require('./_descriptors')) {\n var LIBRARY = require('./_library');\n var global = require('./_global');\n var fails = require('./_fails');\n var $export = require('./_export');\n var $typed = require('./_typed');\n var $buffer = require('./_typed-buffer');\n var ctx = require('./_ctx');\n var anInstance = require('./_an-instance');\n var propertyDesc = require('./_property-desc');\n var hide = require('./_hide');\n var redefineAll = require('./_redefine-all');\n var toInteger = require('./_to-integer');\n var toLength = require('./_to-length');\n var toIndex = require('./_to-index');\n var toAbsoluteIndex = require('./_to-absolute-index');\n var toPrimitive = require('./_to-primitive');\n var has = require('./_has');\n var classof = require('./_classof');\n var isObject = require('./_is-object');\n var toObject = require('./_to-object');\n var isArrayIter = require('./_is-array-iter');\n var create = require('./_object-create');\n var getPrototypeOf = require('./_object-gpo');\n var gOPN = require('./_object-gopn').f;\n var getIterFn = require('./core.get-iterator-method');\n var uid = require('./_uid');\n var wks = require('./_wks');\n var createArrayMethod = require('./_array-methods');\n var createArrayIncludes = require('./_array-includes');\n var speciesConstructor = require('./_species-constructor');\n var ArrayIterators = require('./es6.array.iterator');\n var Iterators = require('./_iterators');\n var $iterDetect = require('./_iter-detect');\n var setSpecies = require('./_set-species');\n var arrayFill = require('./_array-fill');\n var arrayCopyWithin = require('./_array-copy-within');\n var $DP = require('./_object-dp');\n var $GOPD = require('./_object-gopd');\n var dP = $DP.f;\n var gOPD = $GOPD.f;\n var RangeError = global.RangeError;\n var TypeError = global.TypeError;\n var Uint8Array = global.Uint8Array;\n var ARRAY_BUFFER = 'ArrayBuffer';\n var SHARED_BUFFER = 'Shared' + ARRAY_BUFFER;\n var BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT';\n var PROTOTYPE = 'prototype';\n var ArrayProto = Array[PROTOTYPE];\n var $ArrayBuffer = $buffer.ArrayBuffer;\n var $DataView = $buffer.DataView;\n var arrayForEach = createArrayMethod(0);\n var arrayFilter = createArrayMethod(2);\n var arraySome = createArrayMethod(3);\n var arrayEvery = createArrayMethod(4);\n var arrayFind = createArrayMethod(5);\n var arrayFindIndex = createArrayMethod(6);\n var arrayIncludes = createArrayIncludes(true);\n var arrayIndexOf = createArrayIncludes(false);\n var arrayValues = ArrayIterators.values;\n var arrayKeys = ArrayIterators.keys;\n var arrayEntries = ArrayIterators.entries;\n var arrayLastIndexOf = ArrayProto.lastIndexOf;\n var arrayReduce = ArrayProto.reduce;\n var arrayReduceRight = ArrayProto.reduceRight;\n var arrayJoin = ArrayProto.join;\n var arraySort = ArrayProto.sort;\n var arraySlice = ArrayProto.slice;\n var arrayToString = ArrayProto.toString;\n var arrayToLocaleString = ArrayProto.toLocaleString;\n var ITERATOR = wks('iterator');\n var TAG = wks('toStringTag');\n var TYPED_CONSTRUCTOR = uid('typed_constructor');\n var DEF_CONSTRUCTOR = uid('def_constructor');\n var ALL_CONSTRUCTORS = $typed.CONSTR;\n var TYPED_ARRAY = $typed.TYPED;\n var VIEW = $typed.VIEW;\n var WRONG_LENGTH = 'Wrong length!';\n\n var $map = createArrayMethod(1, function (O, length) {\n return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);\n });\n\n var LITTLE_ENDIAN = fails(function () {\n // eslint-disable-next-line no-undef\n return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;\n });\n\n var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function () {\n new Uint8Array(1).set({});\n });\n\n var toOffset = function (it, BYTES) {\n var offset = toInteger(it);\n if (offset < 0 || offset % BYTES) throw RangeError('Wrong offset!');\n return offset;\n };\n\n var validate = function (it) {\n if (isObject(it) && TYPED_ARRAY in it) return it;\n throw TypeError(it + ' is not a typed array!');\n };\n\n var allocate = function (C, length) {\n if (!(isObject(C) && TYPED_CONSTRUCTOR in C)) {\n throw TypeError('It is not a typed array constructor!');\n } return new C(length);\n };\n\n var speciesFromList = function (O, list) {\n return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);\n };\n\n var fromList = function (C, list) {\n var index = 0;\n var length = list.length;\n var result = allocate(C, length);\n while (length > index) result[index] = list[index++];\n return result;\n };\n\n var addGetter = function (it, key, internal) {\n dP(it, key, { get: function () { return this._d[internal]; } });\n };\n\n var $from = function from(source /* , mapfn, thisArg */) {\n var O = toObject(source);\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iterFn = getIterFn(O);\n var i, length, values, result, step, iterator;\n if (iterFn != undefined && !isArrayIter(iterFn)) {\n for (iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++) {\n values.push(step.value);\n } O = values;\n }\n if (mapping && aLen > 2) mapfn = ctx(mapfn, arguments[2], 2);\n for (i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++) {\n result[i] = mapping ? mapfn(O[i], i) : O[i];\n }\n return result;\n };\n\n var $of = function of(/* ...items */) {\n var index = 0;\n var length = arguments.length;\n var result = allocate(this, length);\n while (length > index) result[index] = arguments[index++];\n return result;\n };\n\n // iOS Safari 6.x fails here\n var TO_LOCALE_BUG = !!Uint8Array && fails(function () { arrayToLocaleString.call(new Uint8Array(1)); });\n\n var $toLocaleString = function toLocaleString() {\n return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);\n };\n\n var proto = {\n copyWithin: function copyWithin(target, start /* , end */) {\n return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);\n },\n every: function every(callbackfn /* , thisArg */) {\n return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n fill: function fill(value /* , start, end */) { // eslint-disable-line no-unused-vars\n return arrayFill.apply(validate(this), arguments);\n },\n filter: function filter(callbackfn /* , thisArg */) {\n return speciesFromList(this, arrayFilter(validate(this), callbackfn,\n arguments.length > 1 ? arguments[1] : undefined));\n },\n find: function find(predicate /* , thisArg */) {\n return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n findIndex: function findIndex(predicate /* , thisArg */) {\n return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);\n },\n forEach: function forEach(callbackfn /* , thisArg */) {\n arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n indexOf: function indexOf(searchElement /* , fromIndex */) {\n return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n includes: function includes(searchElement /* , fromIndex */) {\n return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);\n },\n join: function join(separator) { // eslint-disable-line no-unused-vars\n return arrayJoin.apply(validate(this), arguments);\n },\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex */) { // eslint-disable-line no-unused-vars\n return arrayLastIndexOf.apply(validate(this), arguments);\n },\n map: function map(mapfn /* , thisArg */) {\n return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n reduce: function reduce(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduce.apply(validate(this), arguments);\n },\n reduceRight: function reduceRight(callbackfn /* , initialValue */) { // eslint-disable-line no-unused-vars\n return arrayReduceRight.apply(validate(this), arguments);\n },\n reverse: function reverse() {\n var that = this;\n var length = validate(that).length;\n var middle = Math.floor(length / 2);\n var index = 0;\n var value;\n while (index < middle) {\n value = that[index];\n that[index++] = that[--length];\n that[length] = value;\n } return that;\n },\n some: function some(callbackfn /* , thisArg */) {\n return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n },\n sort: function sort(comparefn) {\n return arraySort.call(validate(this), comparefn);\n },\n subarray: function subarray(begin, end) {\n var O = validate(this);\n var length = O.length;\n var $begin = toAbsoluteIndex(begin, length);\n return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(\n O.buffer,\n O.byteOffset + $begin * O.BYTES_PER_ELEMENT,\n toLength((end === undefined ? length : toAbsoluteIndex(end, length)) - $begin)\n );\n }\n };\n\n var $slice = function slice(start, end) {\n return speciesFromList(this, arraySlice.call(validate(this), start, end));\n };\n\n var $set = function set(arrayLike /* , offset */) {\n validate(this);\n var offset = toOffset(arguments[1], 1);\n var length = this.length;\n var src = toObject(arrayLike);\n var len = toLength(src.length);\n var index = 0;\n if (len + offset > length) throw RangeError(WRONG_LENGTH);\n while (index < len) this[offset + index] = src[index++];\n };\n\n var $iterators = {\n entries: function entries() {\n return arrayEntries.call(validate(this));\n },\n keys: function keys() {\n return arrayKeys.call(validate(this));\n },\n values: function values() {\n return arrayValues.call(validate(this));\n }\n };\n\n var isTAIndex = function (target, key) {\n return isObject(target)\n && target[TYPED_ARRAY]\n && typeof key != 'symbol'\n && key in target\n && String(+key) == String(key);\n };\n var $getDesc = function getOwnPropertyDescriptor(target, key) {\n return isTAIndex(target, key = toPrimitive(key, true))\n ? propertyDesc(2, target[key])\n : gOPD(target, key);\n };\n var $setDesc = function defineProperty(target, key, desc) {\n if (isTAIndex(target, key = toPrimitive(key, true))\n && isObject(desc)\n && has(desc, 'value')\n && !has(desc, 'get')\n && !has(desc, 'set')\n // TODO: add validation descriptor w/o calling accessors\n && !desc.configurable\n && (!has(desc, 'writable') || desc.writable)\n && (!has(desc, 'enumerable') || desc.enumerable)\n ) {\n target[key] = desc.value;\n return target;\n } return dP(target, key, desc);\n };\n\n if (!ALL_CONSTRUCTORS) {\n $GOPD.f = $getDesc;\n $DP.f = $setDesc;\n }\n\n $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {\n getOwnPropertyDescriptor: $getDesc,\n defineProperty: $setDesc\n });\n\n if (fails(function () { arrayToString.call({}); })) {\n arrayToString = arrayToLocaleString = function toString() {\n return arrayJoin.call(this);\n };\n }\n\n var $TypedArrayPrototype$ = redefineAll({}, proto);\n redefineAll($TypedArrayPrototype$, $iterators);\n hide($TypedArrayPrototype$, ITERATOR, $iterators.values);\n redefineAll($TypedArrayPrototype$, {\n slice: $slice,\n set: $set,\n constructor: function () { /* noop */ },\n toString: arrayToString,\n toLocaleString: $toLocaleString\n });\n addGetter($TypedArrayPrototype$, 'buffer', 'b');\n addGetter($TypedArrayPrototype$, 'byteOffset', 'o');\n addGetter($TypedArrayPrototype$, 'byteLength', 'l');\n addGetter($TypedArrayPrototype$, 'length', 'e');\n dP($TypedArrayPrototype$, TAG, {\n get: function () { return this[TYPED_ARRAY]; }\n });\n\n // eslint-disable-next-line max-statements\n module.exports = function (KEY, BYTES, wrapper, CLAMPED) {\n CLAMPED = !!CLAMPED;\n var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array';\n var GETTER = 'get' + KEY;\n var SETTER = 'set' + KEY;\n var TypedArray = global[NAME];\n var Base = TypedArray || {};\n var TAC = TypedArray && getPrototypeOf(TypedArray);\n var FORCED = !TypedArray || !$typed.ABV;\n var O = {};\n var TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];\n var getter = function (that, index) {\n var data = that._d;\n return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);\n };\n var setter = function (that, index, value) {\n var data = that._d;\n if (CLAMPED) value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;\n data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);\n };\n var addElement = function (that, index) {\n dP(that, index, {\n get: function () {\n return getter(this, index);\n },\n set: function (value) {\n return setter(this, index, value);\n },\n enumerable: true\n });\n };\n if (FORCED) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME, '_d');\n var index = 0;\n var offset = 0;\n var buffer, byteLength, length, klass;\n if (!isObject(data)) {\n length = toIndex(data);\n byteLength = length * BYTES;\n buffer = new $ArrayBuffer(byteLength);\n } else if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n buffer = data;\n offset = toOffset($offset, BYTES);\n var $len = data.byteLength;\n if ($length === undefined) {\n if ($len % BYTES) throw RangeError(WRONG_LENGTH);\n byteLength = $len - offset;\n if (byteLength < 0) throw RangeError(WRONG_LENGTH);\n } else {\n byteLength = toLength($length) * BYTES;\n if (byteLength + offset > $len) throw RangeError(WRONG_LENGTH);\n }\n length = byteLength / BYTES;\n } else if (TYPED_ARRAY in data) {\n return fromList(TypedArray, data);\n } else {\n return $from.call(TypedArray, data);\n }\n hide(that, '_d', {\n b: buffer,\n o: offset,\n l: byteLength,\n e: length,\n v: new $DataView(buffer)\n });\n while (index < length) addElement(that, index++);\n });\n TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);\n hide(TypedArrayPrototype, 'constructor', TypedArray);\n } else if (!fails(function () {\n TypedArray(1);\n }) || !fails(function () {\n new TypedArray(-1); // eslint-disable-line no-new\n }) || !$iterDetect(function (iter) {\n new TypedArray(); // eslint-disable-line no-new\n new TypedArray(null); // eslint-disable-line no-new\n new TypedArray(1.5); // eslint-disable-line no-new\n new TypedArray(iter); // eslint-disable-line no-new\n }, true)) {\n TypedArray = wrapper(function (that, data, $offset, $length) {\n anInstance(that, TypedArray, NAME);\n var klass;\n // `ws` module bug, temporarily remove validation length for Uint8Array\n // https://github.com/websockets/ws/pull/645\n if (!isObject(data)) return new Base(toIndex(data));\n if (data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER) {\n return $length !== undefined\n ? new Base(data, toOffset($offset, BYTES), $length)\n : $offset !== undefined\n ? new Base(data, toOffset($offset, BYTES))\n : new Base(data);\n }\n if (TYPED_ARRAY in data) return fromList(TypedArray, data);\n return $from.call(TypedArray, data);\n });\n arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function (key) {\n if (!(key in TypedArray)) hide(TypedArray, key, Base[key]);\n });\n TypedArray[PROTOTYPE] = TypedArrayPrototype;\n if (!LIBRARY) TypedArrayPrototype.constructor = TypedArray;\n }\n var $nativeIterator = TypedArrayPrototype[ITERATOR];\n var CORRECT_ITER_NAME = !!$nativeIterator\n && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined);\n var $iterator = $iterators.values;\n hide(TypedArray, TYPED_CONSTRUCTOR, true);\n hide(TypedArrayPrototype, TYPED_ARRAY, NAME);\n hide(TypedArrayPrototype, VIEW, true);\n hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);\n\n if (CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)) {\n dP(TypedArrayPrototype, TAG, {\n get: function () { return NAME; }\n });\n }\n\n O[NAME] = TypedArray;\n\n $export($export.G + $export.W + $export.F * (TypedArray != Base), O);\n\n $export($export.S, NAME, {\n BYTES_PER_ELEMENT: BYTES\n });\n\n $export($export.S + $export.F * fails(function () { Base.of.call(TypedArray, 1); }), NAME, {\n from: $from,\n of: $of\n });\n\n if (!(BYTES_PER_ELEMENT in TypedArrayPrototype)) hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);\n\n $export($export.P, NAME, proto);\n\n setSpecies(NAME);\n\n $export($export.P + $export.F * FORCED_SET, NAME, { set: $set });\n\n $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);\n\n if (!LIBRARY && TypedArrayPrototype.toString != arrayToString) TypedArrayPrototype.toString = arrayToString;\n\n $export($export.P + $export.F * fails(function () {\n new TypedArray(1).slice();\n }), NAME, { slice: $slice });\n\n $export($export.P + $export.F * (fails(function () {\n return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString();\n }) || !fails(function () {\n TypedArrayPrototype.toLocaleString.call([1, 2]);\n })), NAME, { toLocaleString: $toLocaleString });\n\n Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;\n if (!LIBRARY && !CORRECT_ITER_NAME) hide(TypedArrayPrototype, ITERATOR, $iterator);\n };\n} else module.exports = function () { /* empty */ };\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\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 id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","module.exports = false;\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var 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","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","// 19.1.2.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","// 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","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","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","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 $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","module.exports = {};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","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","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","module.exports = \"\"","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}","// 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","exports.f = {}.propertyIsEnumerable;\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","// 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 core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\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","exports.f = Object.getOwnPropertySymbols;\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 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","'use strict';\n// 21.2.5.3 get RegExp.prototype.flags\nvar anObject = require('./_an-object');\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\n\nvar classof = require('./_classof');\nvar builtinExec = RegExp.prototype.exec;\n\n // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n if (typeof result !== 'object') {\n throw new TypeError('RegExp exec method returned something other than an Object or null');\n }\n return result;\n }\n if (classof(R) !== 'RegExp') {\n throw new TypeError('RegExp#exec called on incompatible receiver');\n }\n return builtinExec.call(R, S);\n};\n","'use strict';\nrequire('./es6.regexp.exec');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar fails = require('./_fails');\nvar defined = require('./_defined');\nvar wks = require('./_wks');\nvar regexpExec = require('./_regexp-exec');\n\nvar SPECIES = wks('species');\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {\n // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length === 2 && result[0] === 'a' && result[1] === 'b';\n})();\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n re.exec = function () { execCalled = true; return null; };\n if (KEY === 'split') {\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n }\n re[SYMBOL]('');\n return !execCalled;\n }) : undefined;\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||\n (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var fns = exec(\n defined,\n SYMBOL,\n ''[KEY],\n function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };\n }\n return { done: true, value: nativeMethod.call(str, regexp, arg2) };\n }\n return { done: false };\n }\n );\n var strfn = fns[0];\n var rxfn = fns[1];\n\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar redefineAll = require('./_redefine-all');\nvar meta = require('./_meta');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar $iterDetect = require('./_iter-detect');\nvar setToStringTag = require('./_set-to-string-tag');\nvar inheritIfRequired = require('./_inherit-if-required');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n var fixMethod = function (KEY) {\n var fn = proto[KEY];\n redefine(proto, KEY,\n KEY == 'delete' ? function (a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'has' ? function has(a) {\n return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'get' ? function get(a) {\n return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);\n } : KEY == 'add' ? function add(a) { fn.call(this, a === 0 ? 0 : a); return this; }\n : function set(a, b) { fn.call(this, a === 0 ? 0 : a, b); return this; }\n );\n };\n if (typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n var instance = new C();\n // early implementations not supports chaining\n var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n // most early implementations doesn't supports iterables, most modern - not close it correctly\n var ACCEPT_ITERABLES = $iterDetect(function (iter) { new C(iter); }); // eslint-disable-line no-new\n // for early implementations -0 and +0 not the same\n var BUGGY_ZERO = !IS_WEAK && fails(function () {\n // V8 ~ Chromium 42- fails only with 5+ elements\n var $instance = new C();\n var index = 5;\n while (index--) $instance[ADDER](index, index);\n return !$instance.has(-0);\n });\n if (!ACCEPT_ITERABLES) {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME);\n var that = inheritIfRequired(new Base(), target, C);\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n return that;\n });\n C.prototype = proto;\n proto.constructor = C;\n }\n if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n fixMethod('delete');\n fixMethod('has');\n IS_MAP && fixMethod('get');\n }\n if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n // weak collections should not contains .clear method\n if (IS_WEAK && proto.clear) delete proto.clear;\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F * (C != Base), O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar uid = require('./_uid');\nvar TYPED = uid('typed_array');\nvar VIEW = uid('view');\nvar ABV = !!(global.ArrayBuffer && global.DataView);\nvar CONSTR = ABV;\nvar i = 0;\nvar l = 9;\nvar Typed;\n\nvar TypedArrayConstructors = (\n 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'\n).split(',');\n\nwhile (i < l) {\n if (Typed = global[TypedArrayConstructors[i++]]) {\n hide(Typed.prototype, TYPED, true);\n hide(Typed.prototype, VIEW, true);\n } else CONSTR = false;\n}\n\nmodule.exports = {\n ABV: ABV,\n CONSTR: CONSTR,\n TYPED: TYPED,\n VIEW: VIEW\n};\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","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","exports.f = require('./_wks');\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\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 = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var isObject = require('./_is-object');\nvar setPrototypeOf = require('./_set-proto').set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n","'use strict';\nvar toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n\nmodule.exports = function repeat(count) {\n var str = String(defined(this));\n var res = '';\n var n = toInteger(count);\n if (n < 0 || n == Infinity) throw RangeError(\"Count can't be negative\");\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) res += str;\n return res;\n};\n","// 20.2.2.28 Math.sign(x)\nmodule.exports = Math.sign || function sign(x) {\n // eslint-disable-next-line no-self-compare\n return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;\n};\n","// 20.2.2.14 Math.expm1(x)\nvar $expm1 = Math.expm1;\nmodule.exports = (!$expm1\n // Old FF bug\n || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168\n // Tor Browser bug\n || $expm1(-2e-17) != -2e-17\n) ? function expm1(x) {\n return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;\n} : $expm1;\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\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 && typeof IteratorPrototype[ITERATOR] != 'function') 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","// helper for String#{startsWith, endsWith, includes}\nvar isRegExp = require('./_is-regexp');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, searchString, NAME) {\n if (isRegExp(searchString)) throw TypeError('String#' + NAME + \" doesn't accept regex!\");\n return String(defined(that));\n};\n","// 7.2.8 IsRegExp(argument)\nvar isObject = require('./_is-object');\nvar cof = require('./_cof');\nvar MATCH = require('./_wks')('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n","var MATCH = require('./_wks')('match');\nmodule.exports = function (KEY) {\n var re = /./;\n try {\n '/./'[KEY](re);\n } catch (e) {\n try {\n re[MATCH] = false;\n return !'/./'[KEY](re);\n } catch (f) { /* empty */ }\n } return true;\n};\n","// 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","'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 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","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","'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","'use strict';\n\nvar regexpFlags = require('./_flags');\n\nvar nativeExec = RegExp.prototype.exec;\n// This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\nvar nativeReplace = String.prototype.replace;\n\nvar patchedExec = nativeExec;\n\nvar LAST_INDEX = 'lastIndex';\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/,\n re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;\n})();\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + re.source + '$(?!\\\\s)', regexpFlags.call(re));\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];\n\n match = nativeExec.call(re, str);\n\n if (UPDATES_LAST_INDEX_WRONG && match) {\n re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n // eslint-disable-next-line no-loop-func\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar at = require('./_string-at')(true);\n\n // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? at(S, index).length : 1);\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","'use strict';\nvar global = require('./_global');\nvar DESCRIPTORS = require('./_descriptors');\nvar LIBRARY = require('./_library');\nvar $typed = require('./_typed');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar fails = require('./_fails');\nvar anInstance = require('./_an-instance');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar toIndex = require('./_to-index');\nvar gOPN = require('./_object-gopn').f;\nvar dP = require('./_object-dp').f;\nvar arrayFill = require('./_array-fill');\nvar setToStringTag = require('./_set-to-string-tag');\nvar ARRAY_BUFFER = 'ArrayBuffer';\nvar DATA_VIEW = 'DataView';\nvar PROTOTYPE = 'prototype';\nvar WRONG_LENGTH = 'Wrong length!';\nvar WRONG_INDEX = 'Wrong index!';\nvar $ArrayBuffer = global[ARRAY_BUFFER];\nvar $DataView = global[DATA_VIEW];\nvar Math = global.Math;\nvar RangeError = global.RangeError;\n// eslint-disable-next-line no-shadow-restricted-names\nvar Infinity = global.Infinity;\nvar BaseBuffer = $ArrayBuffer;\nvar abs = Math.abs;\nvar pow = Math.pow;\nvar floor = Math.floor;\nvar log = Math.log;\nvar LN2 = Math.LN2;\nvar BUFFER = 'buffer';\nvar BYTE_LENGTH = 'byteLength';\nvar BYTE_OFFSET = 'byteOffset';\nvar $BUFFER = DESCRIPTORS ? '_b' : BUFFER;\nvar $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH;\nvar $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;\n\n// IEEE754 conversions based on https://github.com/feross/ieee754\nfunction packIEEE754(value, mLen, nBytes) {\n var buffer = new Array(nBytes);\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0;\n var i = 0;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n var e, m, c;\n value = abs(value);\n // eslint-disable-next-line no-self-compare\n if (value != value || value === Infinity) {\n // eslint-disable-next-line no-self-compare\n m = value != value ? 1 : 0;\n e = eMax;\n } else {\n e = floor(log(value) / LN2);\n if (value * (c = pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * pow(2, eBias - 1) * pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);\n buffer[--i] |= s * 128;\n return buffer;\n}\nfunction unpackIEEE754(buffer, mLen, nBytes) {\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = eLen - 7;\n var i = nBytes - 1;\n var s = buffer[i--];\n var e = s & 127;\n var m;\n s >>= 7;\n for (; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : s ? -Infinity : Infinity;\n } else {\n m = m + pow(2, mLen);\n e = e - eBias;\n } return (s ? -1 : 1) * m * pow(2, e - mLen);\n}\n\nfunction unpackI32(bytes) {\n return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];\n}\nfunction packI8(it) {\n return [it & 0xff];\n}\nfunction packI16(it) {\n return [it & 0xff, it >> 8 & 0xff];\n}\nfunction packI32(it) {\n return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];\n}\nfunction packF64(it) {\n return packIEEE754(it, 52, 8);\n}\nfunction packF32(it) {\n return packIEEE754(it, 23, 4);\n}\n\nfunction addGetter(C, key, internal) {\n dP(C[PROTOTYPE], key, { get: function () { return this[internal]; } });\n}\n\nfunction get(view, bytes, index, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = store.slice(start, start + bytes);\n return isLittleEndian ? pack : pack.reverse();\n}\nfunction set(view, bytes, index, conversion, value, isLittleEndian) {\n var numIndex = +index;\n var intIndex = toIndex(numIndex);\n if (intIndex + bytes > view[$LENGTH]) throw RangeError(WRONG_INDEX);\n var store = view[$BUFFER]._b;\n var start = intIndex + view[$OFFSET];\n var pack = conversion(+value);\n for (var i = 0; i < bytes; i++) store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];\n}\n\nif (!$typed.ABV) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer, ARRAY_BUFFER);\n var byteLength = toIndex(length);\n this._b = arrayFill.call(new Array(byteLength), 0);\n this[$LENGTH] = byteLength;\n };\n\n $DataView = function DataView(buffer, byteOffset, byteLength) {\n anInstance(this, $DataView, DATA_VIEW);\n anInstance(buffer, $ArrayBuffer, DATA_VIEW);\n var bufferLength = buffer[$LENGTH];\n var offset = toInteger(byteOffset);\n if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset!');\n byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);\n if (offset + byteLength > bufferLength) throw RangeError(WRONG_LENGTH);\n this[$BUFFER] = buffer;\n this[$OFFSET] = offset;\n this[$LENGTH] = byteLength;\n };\n\n if (DESCRIPTORS) {\n addGetter($ArrayBuffer, BYTE_LENGTH, '_l');\n addGetter($DataView, BUFFER, '_b');\n addGetter($DataView, BYTE_LENGTH, '_l');\n addGetter($DataView, BYTE_OFFSET, '_o');\n }\n\n redefineAll($DataView[PROTOTYPE], {\n getInt8: function getInt8(byteOffset) {\n return get(this, 1, byteOffset)[0] << 24 >> 24;\n },\n getUint8: function getUint8(byteOffset) {\n return get(this, 1, byteOffset)[0];\n },\n getInt16: function getInt16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return (bytes[1] << 8 | bytes[0]) << 16 >> 16;\n },\n getUint16: function getUint16(byteOffset /* , littleEndian */) {\n var bytes = get(this, 2, byteOffset, arguments[1]);\n return bytes[1] << 8 | bytes[0];\n },\n getInt32: function getInt32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1]));\n },\n getUint32: function getUint32(byteOffset /* , littleEndian */) {\n return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;\n },\n getFloat32: function getFloat32(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);\n },\n getFloat64: function getFloat64(byteOffset /* , littleEndian */) {\n return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);\n },\n setInt8: function setInt8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setUint8: function setUint8(byteOffset, value) {\n set(this, 1, byteOffset, packI8, value);\n },\n setInt16: function setInt16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setUint16: function setUint16(byteOffset, value /* , littleEndian */) {\n set(this, 2, byteOffset, packI16, value, arguments[2]);\n },\n setInt32: function setInt32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setUint32: function setUint32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packI32, value, arguments[2]);\n },\n setFloat32: function setFloat32(byteOffset, value /* , littleEndian */) {\n set(this, 4, byteOffset, packF32, value, arguments[2]);\n },\n setFloat64: function setFloat64(byteOffset, value /* , littleEndian */) {\n set(this, 8, byteOffset, packF64, value, arguments[2]);\n }\n });\n} else {\n if (!fails(function () {\n $ArrayBuffer(1);\n }) || !fails(function () {\n new $ArrayBuffer(-1); // eslint-disable-line no-new\n }) || fails(function () {\n new $ArrayBuffer(); // eslint-disable-line no-new\n new $ArrayBuffer(1.5); // eslint-disable-line no-new\n new $ArrayBuffer(NaN); // eslint-disable-line no-new\n return $ArrayBuffer.name != ARRAY_BUFFER;\n })) {\n $ArrayBuffer = function ArrayBuffer(length) {\n anInstance(this, $ArrayBuffer);\n return new BaseBuffer(toIndex(length));\n };\n var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];\n for (var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j;) {\n if (!((key = keys[j++]) in $ArrayBuffer)) hide($ArrayBuffer, key, BaseBuffer[key]);\n }\n if (!LIBRARY) ArrayBufferProto.constructor = $ArrayBuffer;\n }\n // iOS Safari 7.x bug\n var view = new $DataView(new $ArrayBuffer(2));\n var $setInt8 = $DataView[PROTOTYPE].setInt8;\n view.setInt8(0, 2147483648);\n view.setInt8(1, 2147483649);\n if (view.getInt8(0) || !view.getInt8(1)) redefineAll($DataView[PROTOTYPE], {\n setInt8: function setInt8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n },\n setUint8: function setUint8(byteOffset, value) {\n $setInt8.call(this, byteOffset, value << 24 >> 24);\n }\n }, true);\n}\nsetToStringTag($ArrayBuffer, ARRAY_BUFFER);\nsetToStringTag($DataView, DATA_VIEW);\nhide($DataView[PROTOTYPE], $typed.VIEW, true);\nexports[ARRAY_BUFFER] = $ArrayBuffer;\nexports[DATA_VIEW] = $DataView;\n","// 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","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","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\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","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","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 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","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\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) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","// 7.2.9 SameValue(x, y)\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\n};\n","'use strict';\nvar aFunction = require('./_a-function');\nvar isObject = require('./_is-object');\nvar invoke = require('./_invoke');\nvar arraySlice = [].slice;\nvar factories = {};\n\nvar construct = function (F, len, args) {\n if (!(len in factories)) {\n for (var n = [], i = 0; i < len; i++) n[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func\n factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');\n } return factories[len](F, args);\n};\n\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = arraySlice.call(arguments, 1);\n var bound = function (/* args... */) {\n var args = partArgs.concat(arraySlice.call(arguments));\n return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);\n };\n if (isObject(fn.prototype)) bound.prototype = fn.prototype;\n return bound;\n};\n","// 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 $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n var string = $trim(String(str), 3);\n return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $parseFloat = require('./_global').parseFloat;\nvar $trim = require('./_string-trim').trim;\n\nmodule.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str) {\n var string = $trim(String(str), 3);\n var result = $parseFloat(string);\n return result === 0 && string.charAt(0) == '-' ? -0 : result;\n} : $parseFloat;\n","var cof = require('./_cof');\nmodule.exports = function (it, msg) {\n if (typeof it != 'number' && cof(it) != 'Number') throw TypeError(msg);\n return +it;\n};\n","// 20.1.2.3 Number.isInteger(number)\nvar isObject = require('./_is-object');\nvar floor = Math.floor;\nmodule.exports = function isInteger(it) {\n return !isObject(it) && isFinite(it) && floor(it) === it;\n};\n","// 20.2.2.20 Math.log1p(x)\nmodule.exports = Math.log1p || function log1p(x) {\n return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);\n};\n","'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","// 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","// 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 aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar toLength = require('./_to-length');\n\nmodule.exports = function (that, callbackfn, aLen, memo, isRight) {\n aFunction(callbackfn);\n var O = toObject(that);\n var self = IObject(O);\n var length = toLength(O.length);\n var index = isRight ? length - 1 : 0;\n var i = isRight ? -1 : 1;\n if (aLen < 2) for (;;) {\n if (index in self) {\n memo = self[index];\n index += i;\n break;\n }\n index += i;\n if (isRight ? index < 0 : length <= index) {\n throw TypeError('Reduce of empty array with no initial value');\n }\n }\n for (;isRight ? index >= 0 : length > index; index += i) if (index in self) {\n memo = callbackfn(memo, self[index], index, O);\n }\n return memo;\n};\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\n\nmodule.exports = [].copyWithin || function copyWithin(target /* = 0 */, start /* = 0, end = @length */) {\n var O = toObject(this);\n var len = toLength(O.length);\n var to = toAbsoluteIndex(target, len);\n var from = toAbsoluteIndex(start, len);\n var end = arguments.length > 2 ? arguments[2] : undefined;\n var count = Math.min((end === undefined ? len : toAbsoluteIndex(end, len)) - from, len - to);\n var inc = 1;\n if (from < to && to < from + count) {\n inc = -1;\n from += count - 1;\n to += count - 1;\n }\n while (count-- > 0) {\n if (from in O) O[to] = O[from];\n else delete O[to];\n to += inc;\n from += inc;\n } return O;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","'use strict';\nvar regexpExec = require('./_regexp-exec');\nrequire('./_export')({\n target: 'RegExp',\n proto: true,\n forced: regexpExec !== /./.exec\n}, {\n exec: regexpExec\n});\n","// 21.2.5.3 get RegExp.prototype.flags()\nif (require('./_descriptors') && /./g.flags != 'g') require('./_object-dp').f(RegExp.prototype, 'flags', {\n configurable: true,\n get: require('./_flags')\n});\n","'use strict';\nvar 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 userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\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')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\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, exited;\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); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\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 if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","'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 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 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 redefineAll = require('./_redefine-all');\nvar getWeak = require('./_meta').getWeak;\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar createArrayMethod = require('./_array-methods');\nvar $has = require('./_has');\nvar validate = require('./_validate-collection');\nvar arrayFind = createArrayMethod(5);\nvar arrayFindIndex = createArrayMethod(6);\nvar id = 0;\n\n// fallback for uncaught frozen keys\nvar uncaughtFrozenStore = function (that) {\n return that._l || (that._l = new UncaughtFrozenStore());\n};\nvar UncaughtFrozenStore = function () {\n this.a = [];\n};\nvar findUncaughtFrozen = function (store, key) {\n return arrayFind(store.a, function (it) {\n return it[0] === key;\n });\n};\nUncaughtFrozenStore.prototype = {\n get: function (key) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) return entry[1];\n },\n has: function (key) {\n return !!findUncaughtFrozen(this, key);\n },\n set: function (key, value) {\n var entry = findUncaughtFrozen(this, key);\n if (entry) entry[1] = value;\n else this.a.push([key, value]);\n },\n 'delete': function (key) {\n var index = arrayFindIndex(this.a, function (it) {\n return it[0] === key;\n });\n if (~index) this.a.splice(index, 1);\n return !!~index;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = id++; // collection id\n that._l = undefined; // leak store for uncaught frozen objects\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.3.3.2 WeakMap.prototype.delete(key)\n // 23.4.3.3 WeakSet.prototype.delete(value)\n 'delete': function (key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME))['delete'](key);\n return data && $has(data, this._i) && delete data[this._i];\n },\n // 23.3.3.4 WeakMap.prototype.has(key)\n // 23.4.3.4 WeakSet.prototype.has(value)\n has: function has(key) {\n if (!isObject(key)) return false;\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, NAME)).has(key);\n return data && $has(data, this._i);\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var data = getWeak(anObject(key), true);\n if (data === true) uncaughtFrozenStore(that).set(key, value);\n else data[that._i] = value;\n return that;\n },\n ufstore: uncaughtFrozenStore\n};\n","// https://tc39.github.io/ecma262/#sec-toindex\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nmodule.exports = function (it) {\n if (it === undefined) return 0;\n var number = toInteger(it);\n var length = toLength(number);\n if (number !== length) throw RangeError('Wrong length!');\n return length;\n};\n","// 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","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length');\nvar repeat = require('./_string-repeat');\nvar defined = require('./_defined');\n\nmodule.exports = function (that, maxLength, fillString, left) {\n var S = String(defined(that));\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : String(fillString);\n var intMaxLength = toLength(maxLength);\n if (intMaxLength <= stringLength || fillStr == '') return S;\n var fillLen = intMaxLength - stringLength;\n var stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","var DESCRIPTORS = require('./_descriptors');\nvar 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) {\n key = keys[i++];\n if (!DESCRIPTORS || isEnum.call(O, key)) {\n result.push(isEntries ? [key, O[key]] : O[key]);\n }\n }\n return result;\n };\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\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 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 exports.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 exports.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 exports.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 exports.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.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\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 exports.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 exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.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 // Note: [\"return\"] must be used for ES3 parsing compatibility.\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 exports.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 exports.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 // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","module.exports = \"\"","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/* 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 = \"
\\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\"","\"use strict\";\n\nrequire(\"./noConflict\");\n\nvar _global = _interopRequireDefault(require(\"core-js/library/fn/global\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nif (_global[\"default\"]._babelPolyfill && typeof console !== \"undefined\" && console.warn) {\n console.warn(\"@babel/polyfill is loaded more than once on this page. This is probably not desirable/intended \" + \"and may have consequences if different versions of the polyfills are applied sequentially. \" + \"If you do need to load the polyfill more than once, use @babel/polyfill/noConflict \" + \"instead to bypass the warning.\");\n}\n\n_global[\"default\"]._babelPolyfill = true;","\"use strict\";\n\nrequire(\"core-js/es6\");\n\nrequire(\"core-js/fn/array/includes\");\n\nrequire(\"core-js/fn/array/flat-map\");\n\nrequire(\"core-js/fn/string/pad-start\");\n\nrequire(\"core-js/fn/string/pad-end\");\n\nrequire(\"core-js/fn/string/trim-start\");\n\nrequire(\"core-js/fn/string/trim-end\");\n\nrequire(\"core-js/fn/symbol/async-iterator\");\n\nrequire(\"core-js/fn/object/get-own-property-descriptors\");\n\nrequire(\"core-js/fn/object/values\");\n\nrequire(\"core-js/fn/object/entries\");\n\nrequire(\"core-js/fn/promise/finally\");\n\nrequire(\"core-js/web\");\n\nrequire(\"regenerator-runtime/runtime\");","require('../modules/es6.symbol');\nrequire('../modules/es6.object.create');\nrequire('../modules/es6.object.define-property');\nrequire('../modules/es6.object.define-properties');\nrequire('../modules/es6.object.get-own-property-descriptor');\nrequire('../modules/es6.object.get-prototype-of');\nrequire('../modules/es6.object.keys');\nrequire('../modules/es6.object.get-own-property-names');\nrequire('../modules/es6.object.freeze');\nrequire('../modules/es6.object.seal');\nrequire('../modules/es6.object.prevent-extensions');\nrequire('../modules/es6.object.is-frozen');\nrequire('../modules/es6.object.is-sealed');\nrequire('../modules/es6.object.is-extensible');\nrequire('../modules/es6.object.assign');\nrequire('../modules/es6.object.is');\nrequire('../modules/es6.object.set-prototype-of');\nrequire('../modules/es6.object.to-string');\nrequire('../modules/es6.function.bind');\nrequire('../modules/es6.function.name');\nrequire('../modules/es6.function.has-instance');\nrequire('../modules/es6.parse-int');\nrequire('../modules/es6.parse-float');\nrequire('../modules/es6.number.constructor');\nrequire('../modules/es6.number.to-fixed');\nrequire('../modules/es6.number.to-precision');\nrequire('../modules/es6.number.epsilon');\nrequire('../modules/es6.number.is-finite');\nrequire('../modules/es6.number.is-integer');\nrequire('../modules/es6.number.is-nan');\nrequire('../modules/es6.number.is-safe-integer');\nrequire('../modules/es6.number.max-safe-integer');\nrequire('../modules/es6.number.min-safe-integer');\nrequire('../modules/es6.number.parse-float');\nrequire('../modules/es6.number.parse-int');\nrequire('../modules/es6.math.acosh');\nrequire('../modules/es6.math.asinh');\nrequire('../modules/es6.math.atanh');\nrequire('../modules/es6.math.cbrt');\nrequire('../modules/es6.math.clz32');\nrequire('../modules/es6.math.cosh');\nrequire('../modules/es6.math.expm1');\nrequire('../modules/es6.math.fround');\nrequire('../modules/es6.math.hypot');\nrequire('../modules/es6.math.imul');\nrequire('../modules/es6.math.log10');\nrequire('../modules/es6.math.log1p');\nrequire('../modules/es6.math.log2');\nrequire('../modules/es6.math.sign');\nrequire('../modules/es6.math.sinh');\nrequire('../modules/es6.math.tanh');\nrequire('../modules/es6.math.trunc');\nrequire('../modules/es6.string.from-code-point');\nrequire('../modules/es6.string.raw');\nrequire('../modules/es6.string.trim');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/es6.string.code-point-at');\nrequire('../modules/es6.string.ends-with');\nrequire('../modules/es6.string.includes');\nrequire('../modules/es6.string.repeat');\nrequire('../modules/es6.string.starts-with');\nrequire('../modules/es6.string.anchor');\nrequire('../modules/es6.string.big');\nrequire('../modules/es6.string.blink');\nrequire('../modules/es6.string.bold');\nrequire('../modules/es6.string.fixed');\nrequire('../modules/es6.string.fontcolor');\nrequire('../modules/es6.string.fontsize');\nrequire('../modules/es6.string.italics');\nrequire('../modules/es6.string.link');\nrequire('../modules/es6.string.small');\nrequire('../modules/es6.string.strike');\nrequire('../modules/es6.string.sub');\nrequire('../modules/es6.string.sup');\nrequire('../modules/es6.date.now');\nrequire('../modules/es6.date.to-json');\nrequire('../modules/es6.date.to-iso-string');\nrequire('../modules/es6.date.to-string');\nrequire('../modules/es6.date.to-primitive');\nrequire('../modules/es6.array.is-array');\nrequire('../modules/es6.array.from');\nrequire('../modules/es6.array.of');\nrequire('../modules/es6.array.join');\nrequire('../modules/es6.array.slice');\nrequire('../modules/es6.array.sort');\nrequire('../modules/es6.array.for-each');\nrequire('../modules/es6.array.map');\nrequire('../modules/es6.array.filter');\nrequire('../modules/es6.array.some');\nrequire('../modules/es6.array.every');\nrequire('../modules/es6.array.reduce');\nrequire('../modules/es6.array.reduce-right');\nrequire('../modules/es6.array.index-of');\nrequire('../modules/es6.array.last-index-of');\nrequire('../modules/es6.array.copy-within');\nrequire('../modules/es6.array.fill');\nrequire('../modules/es6.array.find');\nrequire('../modules/es6.array.find-index');\nrequire('../modules/es6.array.species');\nrequire('../modules/es6.array.iterator');\nrequire('../modules/es6.regexp.constructor');\nrequire('../modules/es6.regexp.exec');\nrequire('../modules/es6.regexp.to-string');\nrequire('../modules/es6.regexp.flags');\nrequire('../modules/es6.regexp.match');\nrequire('../modules/es6.regexp.replace');\nrequire('../modules/es6.regexp.search');\nrequire('../modules/es6.regexp.split');\nrequire('../modules/es6.promise');\nrequire('../modules/es6.map');\nrequire('../modules/es6.set');\nrequire('../modules/es6.weak-map');\nrequire('../modules/es6.weak-set');\nrequire('../modules/es6.typed.array-buffer');\nrequire('../modules/es6.typed.data-view');\nrequire('../modules/es6.typed.int8-array');\nrequire('../modules/es6.typed.uint8-array');\nrequire('../modules/es6.typed.uint8-clamped-array');\nrequire('../modules/es6.typed.int16-array');\nrequire('../modules/es6.typed.uint16-array');\nrequire('../modules/es6.typed.int32-array');\nrequire('../modules/es6.typed.uint32-array');\nrequire('../modules/es6.typed.float32-array');\nrequire('../modules/es6.typed.float64-array');\nrequire('../modules/es6.reflect.apply');\nrequire('../modules/es6.reflect.construct');\nrequire('../modules/es6.reflect.define-property');\nrequire('../modules/es6.reflect.delete-property');\nrequire('../modules/es6.reflect.enumerate');\nrequire('../modules/es6.reflect.get');\nrequire('../modules/es6.reflect.get-own-property-descriptor');\nrequire('../modules/es6.reflect.get-prototype-of');\nrequire('../modules/es6.reflect.has');\nrequire('../modules/es6.reflect.is-extensible');\nrequire('../modules/es6.reflect.own-keys');\nrequire('../modules/es6.reflect.prevent-extensions');\nrequire('../modules/es6.reflect.set');\nrequire('../modules/es6.reflect.set-prototype-of');\nmodule.exports = require('../modules/_core');\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-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 $GOPS = require('./_object-gops');\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' && !!$GOPS.f;\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 $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// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require('./_shared')('native-function-to-string', Function.toString);\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","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","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","var $export = require('./_export');\n// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperties: require('./_object-dps') });\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","// 19.1.2.7 Object.getOwnPropertyNames(O)\nrequire('./_object-sap')('getOwnPropertyNames', function () {\n return require('./_object-gopn-ext').f;\n});\n","// 19.1.2.5 Object.freeze(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('freeze', function ($freeze) {\n return function freeze(it) {\n return $freeze && isObject(it) ? $freeze(meta(it)) : it;\n };\n});\n","// 19.1.2.17 Object.seal(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('seal', function ($seal) {\n return function seal(it) {\n return $seal && isObject(it) ? $seal(meta(it)) : it;\n };\n});\n","// 19.1.2.15 Object.preventExtensions(O)\nvar isObject = require('./_is-object');\nvar meta = require('./_meta').onFreeze;\n\nrequire('./_object-sap')('preventExtensions', function ($preventExtensions) {\n return function preventExtensions(it) {\n return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;\n };\n});\n","// 19.1.2.12 Object.isFrozen(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isFrozen', function ($isFrozen) {\n return function isFrozen(it) {\n return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;\n };\n});\n","// 19.1.2.13 Object.isSealed(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isSealed', function ($isSealed) {\n return function isSealed(it) {\n return isObject(it) ? $isSealed ? $isSealed(it) : false : true;\n };\n});\n","// 19.1.2.11 Object.isExtensible(O)\nvar isObject = require('./_is-object');\n\nrequire('./_object-sap')('isExtensible', function ($isExtensible) {\n return function isExtensible(it) {\n return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;\n };\n});\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","// 19.1.3.10 Object.is(value1, value2)\nvar $export = require('./_export');\n$export($export.S, 'Object', { is: require('./_same-value') });\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","'use strict';\n// 19.1.3.6 Object.prototype.toString()\nvar classof = require('./_classof');\nvar test = {};\ntest[require('./_wks')('toStringTag')] = 'z';\nif (test + '' != '[object z]') {\n require('./_redefine')(Object.prototype, 'toString', function toString() {\n return '[object ' + classof(this) + ']';\n }, true);\n}\n","// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)\nvar $export = require('./_export');\n\n$export($export.P, 'Function', { bind: require('./_bind') });\n","var dP = require('./_object-dp').f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || require('./_descriptors') && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n","'use strict';\nvar isObject = require('./_is-object');\nvar getPrototypeOf = require('./_object-gpo');\nvar HAS_INSTANCE = require('./_wks')('hasInstance');\nvar FunctionProto = Function.prototype;\n// 19.2.3.6 Function.prototype[@@hasInstance](V)\nif (!(HAS_INSTANCE in FunctionProto)) require('./_object-dp').f(FunctionProto, HAS_INSTANCE, { value: function (O) {\n if (typeof this != 'function' || !isObject(O)) return false;\n if (!isObject(this.prototype)) return O instanceof this;\n // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:\n while (O = getPrototypeOf(O)) if (this.prototype === O) return true;\n return false;\n} });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 18.2.4 parseFloat(string)\n$export($export.G + $export.F * (parseFloat != $parseFloat), { parseFloat: $parseFloat });\n","'use strict';\nvar global = require('./_global');\nvar has = require('./_has');\nvar cof = require('./_cof');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar toPrimitive = require('./_to-primitive');\nvar fails = require('./_fails');\nvar gOPN = require('./_object-gopn').f;\nvar gOPD = require('./_object-gopd').f;\nvar dP = require('./_object-dp').f;\nvar $trim = require('./_string-trim').trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = require('./_descriptors') ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n require('./_redefine')(global, NUMBER, $Number);\n}\n","'use strict';\nvar $export = require('./_export');\nvar toInteger = require('./_to-integer');\nvar aNumberValue = require('./_a-number-value');\nvar repeat = require('./_string-repeat');\nvar $toFixed = 1.0.toFixed;\nvar floor = Math.floor;\nvar data = [0, 0, 0, 0, 0, 0];\nvar ERROR = 'Number.toFixed: incorrect invocation!';\nvar ZERO = '0';\n\nvar multiply = function (n, c) {\n var i = -1;\n var c2 = c;\n while (++i < 6) {\n c2 += n * data[i];\n data[i] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\nvar divide = function (n) {\n var i = 6;\n var c = 0;\n while (--i >= 0) {\n c += data[i];\n data[i] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\nvar numToString = function () {\n var i = 6;\n var s = '';\n while (--i >= 0) {\n if (s !== '' || i === 0 || data[i] !== 0) {\n var t = String(data[i]);\n s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;\n }\n } return s;\n};\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\n$export($export.P + $export.F * (!!$toFixed && (\n 0.00008.toFixed(3) !== '0.000' ||\n 0.9.toFixed(0) !== '1' ||\n 1.255.toFixed(2) !== '1.25' ||\n 1000000000000000128.0.toFixed(0) !== '1000000000000000128'\n) || !require('./_fails')(function () {\n // V8 ~ Android 4.3-\n $toFixed.call({});\n})), 'Number', {\n toFixed: function toFixed(fractionDigits) {\n var x = aNumberValue(this, ERROR);\n var f = toInteger(fractionDigits);\n var s = '';\n var m = ZERO;\n var e, z, j, k;\n if (f < 0 || f > 20) throw RangeError(ERROR);\n // eslint-disable-next-line no-self-compare\n if (x != x) return 'NaN';\n if (x <= -1e21 || x >= 1e21) return String(x);\n if (x < 0) {\n s = '-';\n x = -x;\n }\n if (x > 1e-21) {\n e = log(x * pow(2, 69, 1)) - 69;\n z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(0, z);\n j = f;\n while (j >= 7) {\n multiply(1e7, 0);\n j -= 7;\n }\n multiply(pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(1 << 23);\n j -= 23;\n }\n divide(1 << j);\n multiply(1, 1);\n divide(2);\n m = numToString();\n } else {\n multiply(0, z);\n multiply(1 << -e, 0);\n m = numToString() + repeat.call(ZERO, f);\n }\n }\n if (f > 0) {\n k = m.length;\n m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));\n } else {\n m = s + m;\n } return m;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $fails = require('./_fails');\nvar aNumberValue = require('./_a-number-value');\nvar $toPrecision = 1.0.toPrecision;\n\n$export($export.P + $export.F * ($fails(function () {\n // IE7-\n return $toPrecision.call(1, undefined) !== '1';\n}) || !$fails(function () {\n // V8 ~ Android 4.3-\n $toPrecision.call({});\n})), 'Number', {\n toPrecision: function toPrecision(precision) {\n var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');\n return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);\n }\n});\n","// 20.1.2.1 Number.EPSILON\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { EPSILON: Math.pow(2, -52) });\n","// 20.1.2.2 Number.isFinite(number)\nvar $export = require('./_export');\nvar _isFinite = require('./_global').isFinite;\n\n$export($export.S, 'Number', {\n isFinite: function isFinite(it) {\n return typeof it == 'number' && _isFinite(it);\n }\n});\n","// 20.1.2.3 Number.isInteger(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { isInteger: require('./_is-integer') });\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","// 20.1.2.5 Number.isSafeInteger(number)\nvar $export = require('./_export');\nvar isInteger = require('./_is-integer');\nvar abs = Math.abs;\n\n$export($export.S, 'Number', {\n isSafeInteger: function isSafeInteger(number) {\n return isInteger(number) && abs(number) <= 0x1fffffffffffff;\n }\n});\n","// 20.1.2.6 Number.MAX_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });\n","// 20.1.2.10 Number.MIN_SAFE_INTEGER\nvar $export = require('./_export');\n\n$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });\n","var $export = require('./_export');\nvar $parseFloat = require('./_parse-float');\n// 20.1.2.12 Number.parseFloat(string)\n$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', { parseFloat: $parseFloat });\n","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 20.1.2.13 Number.parseInt(string, radix)\n$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', { parseInt: $parseInt });\n","// 20.2.2.3 Math.acosh(x)\nvar $export = require('./_export');\nvar log1p = require('./_math-log1p');\nvar sqrt = Math.sqrt;\nvar $acosh = Math.acosh;\n\n$export($export.S + $export.F * !($acosh\n // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509\n && Math.floor($acosh(Number.MAX_VALUE)) == 710\n // Tor Browser bug: Math.acosh(Infinity) -> NaN\n && $acosh(Infinity) == Infinity\n), 'Math', {\n acosh: function acosh(x) {\n return (x = +x) < 1 ? NaN : x > 94906265.62425156\n ? Math.log(x) + Math.LN2\n : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));\n }\n});\n","// 20.2.2.5 Math.asinh(x)\nvar $export = require('./_export');\nvar $asinh = Math.asinh;\n\nfunction asinh(x) {\n return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));\n}\n\n// Tor Browser bug: Math.asinh(0) -> -0\n$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', { asinh: asinh });\n","// 20.2.2.7 Math.atanh(x)\nvar $export = require('./_export');\nvar $atanh = Math.atanh;\n\n// Tor Browser bug: Math.atanh(-0) -> 0\n$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', {\n atanh: function atanh(x) {\n return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;\n }\n});\n","// 20.2.2.9 Math.cbrt(x)\nvar $export = require('./_export');\nvar sign = require('./_math-sign');\n\n$export($export.S, 'Math', {\n cbrt: function cbrt(x) {\n return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);\n }\n});\n","// 20.2.2.11 Math.clz32(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n clz32: function clz32(x) {\n return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;\n }\n});\n","// 20.2.2.12 Math.cosh(x)\nvar $export = require('./_export');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n cosh: function cosh(x) {\n return (exp(x = +x) + exp(-x)) / 2;\n }\n});\n","// 20.2.2.14 Math.expm1(x)\nvar $export = require('./_export');\nvar $expm1 = require('./_math-expm1');\n\n$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', { expm1: $expm1 });\n","// 20.2.2.16 Math.fround(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { fround: require('./_math-fround') });\n","// 20.2.2.16 Math.fround(x)\nvar sign = require('./_math-sign');\nvar pow = Math.pow;\nvar EPSILON = pow(2, -52);\nvar EPSILON32 = pow(2, -23);\nvar MAX32 = pow(2, 127) * (2 - EPSILON32);\nvar MIN32 = pow(2, -126);\n\nvar roundTiesToEven = function (n) {\n return n + 1 / EPSILON - 1 / EPSILON;\n};\n\nmodule.exports = Math.fround || function fround(x) {\n var $abs = Math.abs(x);\n var $sign = sign(x);\n var a, result;\n if ($abs < MIN32) return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;\n a = (1 + EPSILON32 / EPSILON) * $abs;\n result = a - (a - $abs);\n // eslint-disable-next-line no-self-compare\n if (result > MAX32 || result != result) return $sign * Infinity;\n return $sign * result;\n};\n","// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])\nvar $export = require('./_export');\nvar abs = Math.abs;\n\n$export($export.S, 'Math', {\n hypot: function hypot(value1, value2) { // eslint-disable-line no-unused-vars\n var sum = 0;\n var i = 0;\n var aLen = arguments.length;\n var larg = 0;\n var arg, div;\n while (i < aLen) {\n arg = abs(arguments[i++]);\n if (larg < arg) {\n div = larg / arg;\n sum = sum * div * div + 1;\n larg = arg;\n } else if (arg > 0) {\n div = arg / larg;\n sum += div * div;\n } else sum += arg;\n }\n return larg === Infinity ? Infinity : larg * Math.sqrt(sum);\n }\n});\n","// 20.2.2.18 Math.imul(x, y)\nvar $export = require('./_export');\nvar $imul = Math.imul;\n\n// some WebKit versions fails with big numbers, some has wrong arity\n$export($export.S + $export.F * require('./_fails')(function () {\n return $imul(0xffffffff, 5) != -5 || $imul.length != 2;\n}), 'Math', {\n imul: function imul(x, y) {\n var UINT16 = 0xffff;\n var xn = +x;\n var yn = +y;\n var xl = UINT16 & xn;\n var yl = UINT16 & yn;\n return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);\n }\n});\n","// 20.2.2.21 Math.log10(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log10: function log10(x) {\n return Math.log(x) * Math.LOG10E;\n }\n});\n","// 20.2.2.20 Math.log1p(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { log1p: require('./_math-log1p') });\n","// 20.2.2.22 Math.log2(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n log2: function log2(x) {\n return Math.log(x) / Math.LN2;\n }\n});\n","// 20.2.2.28 Math.sign(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', { sign: require('./_math-sign') });\n","// 20.2.2.30 Math.sinh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n// V8 near Chromium 38 has a problem with very small numbers\n$export($export.S + $export.F * require('./_fails')(function () {\n return !Math.sinh(-2e-17) != -2e-17;\n}), 'Math', {\n sinh: function sinh(x) {\n return Math.abs(x = +x) < 1\n ? (expm1(x) - expm1(-x)) / 2\n : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);\n }\n});\n","// 20.2.2.33 Math.tanh(x)\nvar $export = require('./_export');\nvar expm1 = require('./_math-expm1');\nvar exp = Math.exp;\n\n$export($export.S, 'Math', {\n tanh: function tanh(x) {\n var a = expm1(x = +x);\n var b = expm1(-x);\n return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));\n }\n});\n","// 20.2.2.34 Math.trunc(x)\nvar $export = require('./_export');\n\n$export($export.S, 'Math', {\n trunc: function trunc(it) {\n return (it > 0 ? Math.floor : Math.ceil)(it);\n }\n});\n","var $export = require('./_export');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar fromCharCode = String.fromCharCode;\nvar $fromCodePoint = String.fromCodePoint;\n\n// length should be 1, old FF problem\n$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {\n // 21.1.2.2 String.fromCodePoint(...codePoints)\n fromCodePoint: function fromCodePoint(x) { // eslint-disable-line no-unused-vars\n var res = [];\n var aLen = arguments.length;\n var i = 0;\n var code;\n while (aLen > i) {\n code = +arguments[i++];\n if (toAbsoluteIndex(code, 0x10ffff) !== code) throw RangeError(code + ' is not a valid code point');\n res.push(code < 0x10000\n ? fromCharCode(code)\n : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)\n );\n } return res.join('');\n }\n});\n","var $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\n\n$export($export.S, 'String', {\n // 21.1.2.4 String.raw(callSite, ...substitutions)\n raw: function raw(callSite) {\n var tpl = toIObject(callSite.raw);\n var len = toLength(tpl.length);\n var aLen = arguments.length;\n var res = [];\n var i = 0;\n while (len > i) {\n res.push(String(tpl[i++]));\n if (i < aLen) res.push(String(arguments[i]));\n } return res.join('');\n }\n});\n","'use strict';\n// 21.1.3.25 String.prototype.trim()\nrequire('./_string-trim')('trim', function ($trim) {\n return function trim() {\n return $trim(this, 3);\n };\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","'use strict';\nvar $export = require('./_export');\nvar $at = require('./_string-at')(false);\n$export($export.P, 'String', {\n // 21.1.3.3 String.prototype.codePointAt(pos)\n codePointAt: function codePointAt(pos) {\n return $at(this, pos);\n }\n});\n","// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar ENDS_WITH = 'endsWith';\nvar $endsWith = ''[ENDS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {\n endsWith: function endsWith(searchString /* , endPosition = @length */) {\n var that = context(this, searchString, ENDS_WITH);\n var endPosition = arguments.length > 1 ? arguments[1] : undefined;\n var len = toLength(that.length);\n var end = endPosition === undefined ? len : Math.min(toLength(endPosition), len);\n var search = String(searchString);\n return $endsWith\n ? $endsWith.call(that, search, end)\n : that.slice(end - search.length, end) === search;\n }\n});\n","// 21.1.3.7 String.prototype.includes(searchString, position = 0)\n'use strict';\nvar $export = require('./_export');\nvar context = require('./_string-context');\nvar INCLUDES = 'includes';\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~context(this, searchString, INCLUDES)\n .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});\n","// 21.1.3.18 String.prototype.startsWith(searchString [, position ])\n'use strict';\nvar $export = require('./_export');\nvar toLength = require('./_to-length');\nvar context = require('./_string-context');\nvar STARTS_WITH = 'startsWith';\nvar $startsWith = ''[STARTS_WITH];\n\n$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {\n startsWith: function startsWith(searchString /* , position = 0 */) {\n var that = context(this, searchString, STARTS_WITH);\n var index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length));\n var search = String(searchString);\n return $startsWith\n ? $startsWith.call(that, search, index)\n : that.slice(index, index + search.length) === search;\n }\n});\n","'use strict';\n// B.2.3.2 String.prototype.anchor(name)\nrequire('./_string-html')('anchor', function (createHTML) {\n return function anchor(name) {\n return createHTML(this, 'a', 'name', name);\n };\n});\n","'use strict';\n// B.2.3.3 String.prototype.big()\nrequire('./_string-html')('big', function (createHTML) {\n return function big() {\n return createHTML(this, 'big', '', '');\n };\n});\n","'use strict';\n// B.2.3.4 String.prototype.blink()\nrequire('./_string-html')('blink', function (createHTML) {\n return function blink() {\n return createHTML(this, 'blink', '', '');\n };\n});\n","'use strict';\n// B.2.3.5 String.prototype.bold()\nrequire('./_string-html')('bold', function (createHTML) {\n return function bold() {\n return createHTML(this, 'b', '', '');\n };\n});\n","'use strict';\n// B.2.3.6 String.prototype.fixed()\nrequire('./_string-html')('fixed', function (createHTML) {\n return function fixed() {\n return createHTML(this, 'tt', '', '');\n };\n});\n","'use strict';\n// B.2.3.7 String.prototype.fontcolor(color)\nrequire('./_string-html')('fontcolor', function (createHTML) {\n return function fontcolor(color) {\n return createHTML(this, 'font', 'color', color);\n };\n});\n","'use strict';\n// B.2.3.8 String.prototype.fontsize(size)\nrequire('./_string-html')('fontsize', function (createHTML) {\n return function fontsize(size) {\n return createHTML(this, 'font', 'size', size);\n };\n});\n","'use strict';\n// B.2.3.9 String.prototype.italics()\nrequire('./_string-html')('italics', function (createHTML) {\n return function italics() {\n return createHTML(this, 'i', '', '');\n };\n});\n","'use strict';\n// B.2.3.10 String.prototype.link(url)\nrequire('./_string-html')('link', function (createHTML) {\n return function link(url) {\n return createHTML(this, 'a', 'href', url);\n };\n});\n","'use strict';\n// B.2.3.11 String.prototype.small()\nrequire('./_string-html')('small', function (createHTML) {\n return function small() {\n return createHTML(this, 'small', '', '');\n };\n});\n","'use strict';\n// B.2.3.12 String.prototype.strike()\nrequire('./_string-html')('strike', function (createHTML) {\n return function strike() {\n return createHTML(this, 'strike', '', '');\n };\n});\n","'use strict';\n// B.2.3.13 String.prototype.sub()\nrequire('./_string-html')('sub', function (createHTML) {\n return function sub() {\n return createHTML(this, 'sub', '', '');\n };\n});\n","'use strict';\n// B.2.3.14 String.prototype.sup()\nrequire('./_string-html')('sup', function (createHTML) {\n return function sup() {\n return createHTML(this, 'sup', '', '');\n };\n});\n","// 20.3.3.1 / 15.9.4.4 Date.now()\nvar $export = require('./_export');\n\n$export($export.S, 'Date', { now: function () { return new Date().getTime(); } });\n","'use strict';\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar toPrimitive = require('./_to-primitive');\n\n$export($export.P + $export.F * require('./_fails')(function () {\n return new Date(NaN).toJSON() !== null\n || Date.prototype.toJSON.call({ toISOString: function () { return 1; } }) !== 1;\n}), 'Date', {\n // eslint-disable-next-line no-unused-vars\n toJSON: function toJSON(key) {\n var O = toObject(this);\n var pv = toPrimitive(O);\n return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();\n }\n});\n","// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar $export = require('./_export');\nvar toISOString = require('./_date-to-iso-string');\n\n// PhantomJS / old WebKit has a broken implementations\n$export($export.P + $export.F * (Date.prototype.toISOString !== toISOString), 'Date', {\n toISOString: toISOString\n});\n","'use strict';\n// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()\nvar fails = require('./_fails');\nvar getTime = Date.prototype.getTime;\nvar $toISOString = Date.prototype.toISOString;\n\nvar lz = function (num) {\n return num > 9 ? num : '0' + num;\n};\n\n// PhantomJS / old WebKit has a broken implementations\nmodule.exports = (fails(function () {\n return $toISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';\n}) || !fails(function () {\n $toISOString.call(new Date(NaN));\n})) ? function toISOString() {\n if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');\n var d = this;\n var y = d.getUTCFullYear();\n var m = d.getUTCMilliseconds();\n var s = y < 0 ? '-' : y > 9999 ? '+' : '';\n return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +\n '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +\n 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +\n ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';\n} : $toISOString;\n","var DateProto = Date.prototype;\nvar INVALID_DATE = 'Invalid Date';\nvar TO_STRING = 'toString';\nvar $toString = DateProto[TO_STRING];\nvar getTime = DateProto.getTime;\nif (new Date(NaN) + '' != INVALID_DATE) {\n require('./_redefine')(DateProto, TO_STRING, function toString() {\n var value = getTime.call(this);\n // eslint-disable-next-line no-self-compare\n return value === value ? $toString.call(this) : INVALID_DATE;\n });\n}\n","var TO_PRIMITIVE = require('./_wks')('toPrimitive');\nvar proto = Date.prototype;\n\nif (!(TO_PRIMITIVE in proto)) require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));\n","'use strict';\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\nvar NUMBER = 'number';\n\nmodule.exports = function (hint) {\n if (hint !== 'string' && hint !== NUMBER && hint !== 'default') throw TypeError('Incorrect hint');\n return toPrimitive(anObject(this), hint != NUMBER);\n};\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar createProperty = require('./_create-property');\n\n// WebKit Array.of isn't generic\n$export($export.S + $export.F * require('./_fails')(function () {\n function F() { /* empty */ }\n return !(Array.of.call(F) instanceof F);\n}), 'Array', {\n // 22.1.2.3 Array.of( ...items)\n of: function of(/* ...args */) {\n var index = 0;\n var aLen = arguments.length;\n var result = new (typeof this == 'function' ? this : Array)(aLen);\n while (aLen > index) createProperty(result, index, arguments[index++]);\n result.length = aLen;\n return result;\n }\n});\n","'use strict';\n// 22.1.3.13 Array.prototype.join(separator)\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar arrayJoin = [].join;\n\n// fallback for not array-like strings\n$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {\n join: function join(separator) {\n return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar html = require('./_html');\nvar cof = require('./_cof');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar arraySlice = [].slice;\n\n// fallback for not array-like ES3 strings and DOM objects\n$export($export.P + $export.F * require('./_fails')(function () {\n if (html) arraySlice.call(html);\n}), 'Array', {\n slice: function slice(begin, end) {\n var len = toLength(this.length);\n var klass = cof(this);\n end = end === undefined ? len : end;\n if (klass == 'Array') return arraySlice.call(this, begin, end);\n var start = toAbsoluteIndex(begin, len);\n var upTo = toAbsoluteIndex(end, len);\n var size = toLength(upTo - start);\n var cloned = new Array(size);\n var i = 0;\n for (; i < size; i++) cloned[i] = klass == 'String'\n ? this.charAt(start + i)\n : this[start + i];\n return cloned;\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar toObject = require('./_to-object');\nvar fails = require('./_fails');\nvar $sort = [].sort;\nvar test = [1, 2, 3];\n\n$export($export.P + $export.F * (fails(function () {\n // IE8-\n test.sort(undefined);\n}) || !fails(function () {\n // V8 bug\n test.sort(null);\n // Old WebKit\n}) || !require('./_strict-method')($sort)), 'Array', {\n // 22.1.3.25 Array.prototype.sort(comparefn)\n sort: function sort(comparefn) {\n return comparefn === undefined\n ? $sort.call(toObject(this))\n : $sort.call(toObject(this), aFunction(comparefn));\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $forEach = require('./_array-methods')(0);\nvar STRICT = require('./_strict-method')([].forEach, true);\n\n$export($export.P + $export.F * !STRICT, 'Array', {\n // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])\n forEach: function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments[1]);\n }\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","'use strict';\nvar $export = require('./_export');\nvar $map = require('./_array-methods')(1);\n\n$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {\n // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $filter = require('./_array-methods')(2);\n\n$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {\n // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $some = require('./_array-methods')(3);\n\n$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {\n // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])\n some: function some(callbackfn /* , thisArg */) {\n return $some(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $every = require('./_array-methods')(4);\n\n$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {\n // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])\n every: function every(callbackfn /* , thisArg */) {\n return $every(this, callbackfn, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {\n // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])\n reduce: function reduce(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], false);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $reduce = require('./_array-reduce');\n\n$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {\n // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])\n reduceRight: function reduceRight(callbackfn /* , initialValue */) {\n return $reduce(this, callbackfn, arguments.length, arguments[1], true);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar $indexOf = require('./_array-includes')(false);\nvar $native = [].indexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? $native.apply(this, arguments) || 0\n : $indexOf(this, searchElement, arguments[1]);\n }\n});\n","'use strict';\nvar $export = require('./_export');\nvar toIObject = require('./_to-iobject');\nvar toInteger = require('./_to-integer');\nvar toLength = require('./_to-length');\nvar $native = [].lastIndexOf;\nvar NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0;\n\n$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', {\n // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])\n lastIndexOf: function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {\n // convert -0 to +0\n if (NEGATIVE_ZERO) return $native.apply(this, arguments) || 0;\n var O = toIObject(this);\n var length = toLength(O.length);\n var index = length - 1;\n if (arguments.length > 1) index = Math.min(index, toInteger(arguments[1]));\n if (index < 0) index = length + index;\n for (;index >= 0; index--) if (index in O) if (O[index] === searchElement) return index || 0;\n return -1;\n }\n});\n","// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { copyWithin: require('./_array-copy-within') });\n\nrequire('./_add-to-unscopables')('copyWithin');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","'use strict';\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","'use strict';\n// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)\nvar $export = require('./_export');\nvar $find = require('./_array-methods')(6);\nvar KEY = 'findIndex';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n findIndex: function findIndex(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\nrequire('./_add-to-unscopables')(KEY);\n","require('./_set-species')('Array');\n","var global = require('./_global');\nvar inheritIfRequired = require('./_inherit-if-required');\nvar dP = require('./_object-dp').f;\nvar gOPN = require('./_object-gopn').f;\nvar isRegExp = require('./_is-regexp');\nvar $flags = require('./_flags');\nvar $RegExp = global.RegExp;\nvar Base = $RegExp;\nvar proto = $RegExp.prototype;\nvar re1 = /a/g;\nvar re2 = /a/g;\n// \"new\" creates a new object, old webkit buggy here\nvar CORRECT_NEW = new $RegExp(re1) !== re1;\n\nif (require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function () {\n re2[require('./_wks')('match')] = false;\n // RegExp constructor can alter flags and IsRegExp works correct with @@match\n return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';\n}))) {\n $RegExp = function RegExp(p, f) {\n var tiRE = this instanceof $RegExp;\n var piRE = isRegExp(p);\n var fiU = f === undefined;\n return !tiRE && piRE && p.constructor === $RegExp && fiU ? p\n : inheritIfRequired(CORRECT_NEW\n ? new Base(piRE && !fiU ? p.source : p, f)\n : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)\n , tiRE ? this : proto, $RegExp);\n };\n var proxy = function (key) {\n key in $RegExp || dP($RegExp, key, {\n configurable: true,\n get: function () { return Base[key]; },\n set: function (it) { Base[key] = it; }\n });\n };\n for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);\n proto.constructor = $RegExp;\n $RegExp.prototype = proto;\n require('./_redefine')(global, 'RegExp', $RegExp);\n}\n\nrequire('./_set-species')('RegExp');\n","'use strict';\nrequire('./es6.regexp.flags');\nvar anObject = require('./_an-object');\nvar $flags = require('./_flags');\nvar DESCRIPTORS = require('./_descriptors');\nvar TO_STRING = 'toString';\nvar $toString = /./[TO_STRING];\n\nvar define = function (fn) {\n require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);\n};\n\n// 21.2.5.14 RegExp.prototype.toString()\nif (require('./_fails')(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {\n define(function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/',\n 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);\n });\n// FF44- RegExp#toString has a wrong name\n} else if ($toString.name != TO_STRING) {\n define(function toString() {\n return $toString.call(this);\n });\n}\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@match logic\nrequire('./_fix-re-wks')('match', 1, function (defined, MATCH, $match, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match\n function (regexp) {\n var res = maybeCallNative($match, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n if (!rx.global) return regExpExec(rx, S);\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = String(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar toInteger = require('./_to-integer');\nvar advanceStringIndex = require('./_advance-string-index');\nvar regExpExec = require('./_regexp-exec-abstract');\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nrequire('./_fix-re-wks')('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = defined(this);\n var fn = searchValue == undefined ? undefined : searchValue[REPLACE];\n return fn !== undefined\n ? fn.call(searchValue, O, replaceValue)\n : $replace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative($replace, regexp, this, replaceValue);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return $replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\n\nvar anObject = require('./_an-object');\nvar sameValue = require('./_same-value');\nvar regExpExec = require('./_regexp-exec-abstract');\n\n// @@search logic\nrequire('./_fix-re-wks')('search', 1, function (defined, SEARCH, $search, maybeCallNative) {\n return [\n // `String.prototype.search` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.search\n function search(regexp) {\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[SEARCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));\n },\n // `RegExp.prototype[@@search]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search\n function (regexp) {\n var res = maybeCallNative($search, regexp, this);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var previousLastIndex = rx.lastIndex;\n if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;\n var result = regExpExec(rx, S);\n if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;\n return result === null ? -1 : result.index;\n }\n ];\n});\n","'use strict';\n\nvar isRegExp = require('./_is-regexp');\nvar anObject = require('./_an-object');\nvar speciesConstructor = require('./_species-constructor');\nvar advanceStringIndex = require('./_advance-string-index');\nvar toLength = require('./_to-length');\nvar callRegExpExec = require('./_regexp-exec-abstract');\nvar regexpExec = require('./_regexp-exec');\nvar fails = require('./_fails');\nvar $min = Math.min;\nvar $push = [].push;\nvar $SPLIT = 'split';\nvar LENGTH = 'length';\nvar LAST_INDEX = 'lastIndex';\nvar MAX_UINT32 = 0xffffffff;\n\n// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\nvar SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });\n\n// @@split logic\nrequire('./_fix-re-wks')('split', 2, function (defined, SPLIT, $split, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return $split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy[LAST_INDEX];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);\n };\n } else {\n internalSplit = $split;\n }\n\n return [\n // `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = defined(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined\n ? splitter.call(separator, O, limit)\n : internalSplit.call(String(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);\n if (res.done) return res.value;\n\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (SUPPORTS_Y ? 'y' : 'g');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n if (\n z === null ||\n (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n A.push(S.slice(p));\n return A;\n }\n ];\n});\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\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","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar MAP = 'Map';\n\n// 23.1 Map Objects\nmodule.exports = require('./_collection')(MAP, function (get) {\n return function Map() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.1.3.6 Map.prototype.get(key)\n get: function get(key) {\n var entry = strong.getEntry(validate(this, MAP), key);\n return entry && entry.v;\n },\n // 23.1.3.9 Map.prototype.set(key, value)\n set: function set(key, value) {\n return strong.def(validate(this, MAP), key === 0 ? 0 : key, value);\n }\n}, strong, true);\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar global = require('./_global');\nvar each = require('./_array-methods')(0);\nvar redefine = require('./_redefine');\nvar meta = require('./_meta');\nvar assign = require('./_object-assign');\nvar weak = require('./_collection-weak');\nvar isObject = require('./_is-object');\nvar validate = require('./_validate-collection');\nvar NATIVE_WEAK_MAP = require('./_validate-collection');\nvar IS_IE11 = !global.ActiveXObject && 'ActiveXObject' in global;\nvar WEAK_MAP = 'WeakMap';\nvar getWeak = meta.getWeak;\nvar isExtensible = Object.isExtensible;\nvar uncaughtFrozenStore = weak.ufstore;\nvar InternalMap;\n\nvar wrapper = function (get) {\n return function WeakMap() {\n return get(this, arguments.length > 0 ? arguments[0] : undefined);\n };\n};\n\nvar methods = {\n // 23.3.3.3 WeakMap.prototype.get(key)\n get: function get(key) {\n if (isObject(key)) {\n var data = getWeak(key);\n if (data === true) return uncaughtFrozenStore(validate(this, WEAK_MAP)).get(key);\n return data ? data[this._i] : undefined;\n }\n },\n // 23.3.3.5 WeakMap.prototype.set(key, value)\n set: function set(key, value) {\n return weak.def(validate(this, WEAK_MAP), key, value);\n }\n};\n\n// 23.3 WeakMap Objects\nvar $WeakMap = module.exports = require('./_collection')(WEAK_MAP, wrapper, methods, weak, true, true);\n\n// IE11 WeakMap frozen keys fix\nif (NATIVE_WEAK_MAP && IS_IE11) {\n InternalMap = weak.getConstructor(wrapper, WEAK_MAP);\n assign(InternalMap.prototype, methods);\n meta.NEED = true;\n each(['delete', 'has', 'get', 'set'], function (key) {\n var proto = $WeakMap.prototype;\n var method = proto[key];\n redefine(proto, key, function (a, b) {\n // store frozen objects on internal weakmap shim\n if (isObject(a) && !isExtensible(a)) {\n if (!this._f) this._f = new InternalMap();\n var result = this._f[key](a, b);\n return key == 'set' ? this : result;\n // store all the rest on native weakmap\n } return method.call(this, a, b);\n });\n });\n}\n","'use strict';\nvar weak = require('./_collection-weak');\nvar validate = require('./_validate-collection');\nvar WEAK_SET = 'WeakSet';\n\n// 23.4 WeakSet Objects\nrequire('./_collection')(WEAK_SET, function (get) {\n return function WeakSet() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.4.3.1 WeakSet.prototype.add(value)\n add: function add(value) {\n return weak.def(validate(this, WEAK_SET), value, true);\n }\n}, weak, false, true);\n","'use strict';\nvar $export = require('./_export');\nvar $typed = require('./_typed');\nvar buffer = require('./_typed-buffer');\nvar anObject = require('./_an-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nvar isObject = require('./_is-object');\nvar ArrayBuffer = require('./_global').ArrayBuffer;\nvar speciesConstructor = require('./_species-constructor');\nvar $ArrayBuffer = buffer.ArrayBuffer;\nvar $DataView = buffer.DataView;\nvar $isView = $typed.ABV && ArrayBuffer.isView;\nvar $slice = $ArrayBuffer.prototype.slice;\nvar VIEW = $typed.VIEW;\nvar ARRAY_BUFFER = 'ArrayBuffer';\n\n$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), { ArrayBuffer: $ArrayBuffer });\n\n$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {\n // 24.1.3.1 ArrayBuffer.isView(arg)\n isView: function isView(it) {\n return $isView && $isView(it) || isObject(it) && VIEW in it;\n }\n});\n\n$export($export.P + $export.U + $export.F * require('./_fails')(function () {\n return !new $ArrayBuffer(2).slice(1, undefined).byteLength;\n}), ARRAY_BUFFER, {\n // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)\n slice: function slice(start, end) {\n if ($slice !== undefined && end === undefined) return $slice.call(anObject(this), start); // FF fix\n var len = anObject(this).byteLength;\n var first = toAbsoluteIndex(start, len);\n var fin = toAbsoluteIndex(end === undefined ? len : end, len);\n var result = new (speciesConstructor(this, $ArrayBuffer))(toLength(fin - first));\n var viewS = new $DataView(this);\n var viewT = new $DataView(result);\n var index = 0;\n while (first < fin) {\n viewT.setUint8(index++, viewS.getUint8(first++));\n } return result;\n }\n});\n\nrequire('./_set-species')(ARRAY_BUFFER);\n","var $export = require('./_export');\n$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {\n DataView: require('./_typed-buffer').DataView\n});\n","require('./_typed-array')('Int8', 1, function (init) {\n return function Int8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint8', 1, function (init) {\n return function Uint8ClampedArray(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n}, true);\n","require('./_typed-array')('Int16', 2, function (init) {\n return function Int16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint16', 2, function (init) {\n return function Uint16Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Int32', 4, function (init) {\n return function Int32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Uint32', 4, function (init) {\n return function Uint32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float32', 4, function (init) {\n return function Float32Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","require('./_typed-array')('Float64', 8, function (init) {\n return function Float64Array(data, byteOffset, length) {\n return init(this, data, byteOffset, length);\n };\n});\n","// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar rApply = (require('./_global').Reflect || {}).apply;\nvar fApply = Function.apply;\n// MS Edge argumentsList argument is optional\n$export($export.S + $export.F * !require('./_fails')(function () {\n rApply(function () { /* empty */ });\n}), 'Reflect', {\n apply: function apply(target, thisArgument, argumentsList) {\n var T = aFunction(target);\n var L = anObject(argumentsList);\n return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L);\n }\n});\n","// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])\nvar $export = require('./_export');\nvar create = require('./_object-create');\nvar aFunction = require('./_a-function');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar fails = require('./_fails');\nvar bind = require('./_bind');\nvar rConstruct = (require('./_global').Reflect || {}).construct;\n\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(rConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n rConstruct(function () { /* empty */ });\n});\n\n$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return rConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)\nvar dP = require('./_object-dp');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar toPrimitive = require('./_to-primitive');\n\n// MS Edge has broken Reflect.defineProperty - throwing instead of returning false\n$export($export.S + $export.F * require('./_fails')(function () {\n // eslint-disable-next-line no-undef\n Reflect.defineProperty(dP.f({}, 1, { value: 1 }), 1, { value: 2 });\n}), 'Reflect', {\n defineProperty: function defineProperty(target, propertyKey, attributes) {\n anObject(target);\n propertyKey = toPrimitive(propertyKey, true);\n anObject(attributes);\n try {\n dP.f(target, propertyKey, attributes);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.4 Reflect.deleteProperty(target, propertyKey)\nvar $export = require('./_export');\nvar gOPD = require('./_object-gopd').f;\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n deleteProperty: function deleteProperty(target, propertyKey) {\n var desc = gOPD(anObject(target), propertyKey);\n return desc && !desc.configurable ? false : delete target[propertyKey];\n }\n});\n","'use strict';\n// 26.1.5 Reflect.enumerate(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar Enumerate = function (iterated) {\n this._t = anObject(iterated); // target\n this._i = 0; // next index\n var keys = this._k = []; // keys\n var key;\n for (key in iterated) keys.push(key);\n};\nrequire('./_iter-create')(Enumerate, 'Object', function () {\n var that = this;\n var keys = that._k;\n var key;\n do {\n if (that._i >= keys.length) return { value: undefined, done: true };\n } while (!((key = keys[that._i++]) in that._t));\n return { value: key, done: false };\n});\n\n$export($export.S, 'Reflect', {\n enumerate: function enumerate(target) {\n return new Enumerate(target);\n }\n});\n","// 26.1.6 Reflect.get(target, propertyKey [, receiver])\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\n\nfunction get(target, propertyKey /* , receiver */) {\n var receiver = arguments.length < 3 ? target : arguments[2];\n var desc, proto;\n if (anObject(target) === receiver) return target[propertyKey];\n if (desc = gOPD.f(target, propertyKey)) return has(desc, 'value')\n ? desc.value\n : desc.get !== undefined\n ? desc.get.call(receiver)\n : undefined;\n if (isObject(proto = getPrototypeOf(target))) return get(proto, propertyKey, receiver);\n}\n\n$export($export.S, 'Reflect', { get: get });\n","// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)\nvar gOPD = require('./_object-gopd');\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey) {\n return gOPD.f(anObject(target), propertyKey);\n }\n});\n","// 26.1.8 Reflect.getPrototypeOf(target)\nvar $export = require('./_export');\nvar getProto = require('./_object-gpo');\nvar anObject = require('./_an-object');\n\n$export($export.S, 'Reflect', {\n getPrototypeOf: function getPrototypeOf(target) {\n return getProto(anObject(target));\n }\n});\n","// 26.1.9 Reflect.has(target, propertyKey)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', {\n has: function has(target, propertyKey) {\n return propertyKey in target;\n }\n});\n","// 26.1.10 Reflect.isExtensible(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $isExtensible = Object.isExtensible;\n\n$export($export.S, 'Reflect', {\n isExtensible: function isExtensible(target) {\n anObject(target);\n return $isExtensible ? $isExtensible(target) : true;\n }\n});\n","// 26.1.11 Reflect.ownKeys(target)\nvar $export = require('./_export');\n\n$export($export.S, 'Reflect', { ownKeys: require('./_own-keys') });\n","// 26.1.12 Reflect.preventExtensions(target)\nvar $export = require('./_export');\nvar anObject = require('./_an-object');\nvar $preventExtensions = Object.preventExtensions;\n\n$export($export.S, 'Reflect', {\n preventExtensions: function preventExtensions(target) {\n anObject(target);\n try {\n if ($preventExtensions) $preventExtensions(target);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])\nvar dP = require('./_object-dp');\nvar gOPD = require('./_object-gopd');\nvar getPrototypeOf = require('./_object-gpo');\nvar has = require('./_has');\nvar $export = require('./_export');\nvar createDesc = require('./_property-desc');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\n\nfunction set(target, propertyKey, V /* , receiver */) {\n var receiver = arguments.length < 4 ? target : arguments[3];\n var ownDesc = gOPD.f(anObject(target), propertyKey);\n var existingDescriptor, proto;\n if (!ownDesc) {\n if (isObject(proto = getPrototypeOf(target))) {\n return set(proto, propertyKey, V, receiver);\n }\n ownDesc = createDesc(0);\n }\n if (has(ownDesc, 'value')) {\n if (ownDesc.writable === false || !isObject(receiver)) return false;\n if (existingDescriptor = gOPD.f(receiver, propertyKey)) {\n if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;\n existingDescriptor.value = V;\n dP.f(receiver, propertyKey, existingDescriptor);\n } else dP.f(receiver, propertyKey, createDesc(0, V));\n return true;\n }\n return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);\n}\n\n$export($export.S, 'Reflect', { set: set });\n","// 26.1.14 Reflect.setPrototypeOf(target, proto)\nvar $export = require('./_export');\nvar setProto = require('./_set-proto');\n\nif (setProto) $export($export.S, 'Reflect', {\n setPrototypeOf: function setPrototypeOf(target, proto) {\n setProto.check(target, proto);\n try {\n setProto.set(target, proto);\n return true;\n } catch (e) {\n return false;\n }\n }\n});\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","require('../../modules/es7.array.flat-map');\nmodule.exports = require('../../modules/_core').Array.flatMap;\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-Array.prototype.flatMap\nvar $export = require('./_export');\nvar flattenIntoArray = require('./_flatten-into-array');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar aFunction = require('./_a-function');\nvar arraySpeciesCreate = require('./_array-species-create');\n\n$export($export.P, 'Array', {\n flatMap: function flatMap(callbackfn /* , thisArg */) {\n var O = toObject(this);\n var sourceLen, A;\n aFunction(callbackfn);\n sourceLen = toLength(O.length);\n A = arraySpeciesCreate(O, 0);\n flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments[1]);\n return A;\n }\n});\n\nrequire('./_add-to-unscopables')('flatMap');\n","'use strict';\n// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray\nvar isArray = require('./_is-array');\nvar isObject = require('./_is-object');\nvar toLength = require('./_to-length');\nvar ctx = require('./_ctx');\nvar IS_CONCAT_SPREADABLE = require('./_wks')('isConcatSpreadable');\n\nfunction flattenIntoArray(target, original, source, sourceLen, start, depth, mapper, thisArg) {\n var targetIndex = start;\n var sourceIndex = 0;\n var mapFn = mapper ? ctx(mapper, thisArg, 3) : false;\n var element, spreadable;\n\n while (sourceIndex < sourceLen) {\n if (sourceIndex in source) {\n element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];\n\n spreadable = false;\n if (isObject(element)) {\n spreadable = element[IS_CONCAT_SPREADABLE];\n spreadable = spreadable !== undefined ? !!spreadable : isArray(element);\n }\n\n if (spreadable && depth > 0) {\n targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;\n } else {\n if (targetIndex >= 0x1fffffffffffff) throw TypeError();\n target[targetIndex] = element;\n }\n\n targetIndex++;\n }\n sourceIndex++;\n }\n return targetIndex;\n}\n\nmodule.exports = flattenIntoArray;\n","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});\n","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export');\nvar $pad = require('./_string-pad');\nvar userAgent = require('./_user-agent');\n\n// https://github.com/zloirock/core-js/issues/280\nvar WEBKIT_BUG = /Version\\/10\\.\\d+(\\.\\d+)?( Mobile\\/\\w+)? Safari\\//.test(userAgent);\n\n$export($export.P + $export.F * WEBKIT_BUG, 'String', {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});\n","require('../../modules/es7.string.trim-left');\nmodule.exports = require('../../modules/_core').String.trimLeft;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimLeft', function ($trim) {\n return function trimLeft() {\n return $trim(this, 1);\n };\n}, 'trimStart');\n","require('../../modules/es7.string.trim-right');\nmodule.exports = require('../../modules/_core').String.trimRight;\n","'use strict';\n// https://github.com/sebmarkbage/ecmascript-string-left-right-trim\nrequire('./_string-trim')('trimRight', function ($trim) {\n return function trimRight() {\n return $trim(this, 2);\n };\n}, 'trimEnd');\n","require('../../modules/es7.symbol.async-iterator');\nmodule.exports = require('../../modules/_wks-ext').f('asyncIterator');\n","require('./_wks-define')('asyncIterator');\n","require('../../modules/es7.object.get-own-property-descriptors');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;\n","// https://github.com/tc39/proposal-object-getownpropertydescriptors\nvar $export = require('./_export');\nvar ownKeys = require('./_own-keys');\nvar toIObject = require('./_to-iobject');\nvar gOPD = require('./_object-gopd');\nvar createProperty = require('./_create-property');\n\n$export($export.S, 'Object', {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIObject(object);\n var getDesc = gOPD.f;\n var keys = ownKeys(O);\n var result = {};\n var i = 0;\n var key, desc;\n while (keys.length > i) {\n desc = getDesc(O, key = keys[i++]);\n if (desc !== undefined) createProperty(result, key, desc);\n }\n return result;\n }\n});\n","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","require('../../modules/es7.object.entries');\nmodule.exports = require('../../modules/_core').Object.entries;\n","// https://github.com/tc39/proposal-object-values-entries\nvar $export = require('./_export');\nvar $entries = require('./_object-to-array')(true);\n\n$export($export.S, 'Object', {\n entries: function entries(it) {\n return $entries(it);\n }\n});\n","'use strict';\nrequire('../../modules/es6.promise');\nrequire('../../modules/es7.promise.finally');\nmodule.exports = require('../../modules/_core').Promise['finally'];\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","require('../modules/web.timers');\nrequire('../modules/web.immediate');\nrequire('../modules/web.dom.iterable');\nmodule.exports = require('../modules/_core');\n","// ie9- setTimeout & setInterval additional parameters fix\nvar global = require('./_global');\nvar $export = require('./_export');\nvar userAgent = require('./_user-agent');\nvar slice = [].slice;\nvar MSIE = /MSIE .\\./.test(userAgent); // <- dirty ie9- check\nvar wrap = function (set) {\n return function (fn, time /* , ...args */) {\n var boundArgs = arguments.length > 2;\n var args = boundArgs ? slice.call(arguments, 2) : false;\n return set(boundArgs ? function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(this, args);\n } : fn, time);\n };\n};\n$export($export.G + $export.B + $export.F * MSIE, {\n setTimeout: wrap(global.setTimeout),\n setInterval: wrap(global.setInterval)\n});\n","var $export = require('./_export');\nvar $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});\n","var $iterators = require('./es6.array.iterator');\nvar getKeys = require('./_object-keys');\nvar redefine = require('./_redefine');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar wks = require('./_wks');\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n","require('../modules/es7.global');\nmodule.exports = require('../modules/_core').global;\n","// https://github.com/tc39/proposal-global\nvar $export = require('./_export');\n\n$export($export.G, { global: require('./_global') });\n","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\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 && has(exports, key)) 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","// 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","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return 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","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 = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// 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","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 hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","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","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\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 durationToSeconds: function (time) {\n const [hours, minutes, seconds] = time.split(':').map((i) => parseInt(i, 10));\n return seconds + (60 * minutes) + (60 * 60 * hours);\n },\n\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 isSponsored() {\n const metadata = this.get('metadata');\n\n let isSponsored = false;\n\n /**\n * SVP API metadata values are always strings. There can be different structures serialized to string though.\n */\n if (metadata && metadata.sponsored) {\n try {\n isSponsored = JSON.parse(metadata.sponsored.toLowerCase()) === true;\n } catch (e) {\n // All the cases that fail to be json decoded are treated as false\n }\n }\n\n return isSponsored;\n },\n\n getCategoryTitle() {\n const category = this.get('category');\n const {\n attributes: {\n title\n } = {}\n } = category || {};\n return title;\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","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","\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 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) {\n if (data.additional.metadata.audioStream) {\n result.streams.audio = data.additional.metadata.audioStream;\n }\n result.disableNextVideo = data.additional.metadata.disableNextVideo;\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 isDisabledNextVideo() {\n return !!this.get('disableNextVideo');\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 /**\n * @returns {boolean}\n */\n isAudio() {\n return this.get('mediaType') === 'audio';\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.stream.schibsted.media/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, assetAccess, maxBitrate) {\n /**\n * Id of SVP related asset\n */\n this.assetId = assetId;\n\n /**\n * An access level key string\n * See https://svp.vg.no/svp/api/v1/vgtv/assets/access-definitions?appName=docs for available levels\n */\n this.assetAccess = assetAccess;\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, this.assetAccess).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\nfunction buildQueryParamsString(params) {\n const queryObject = utils.extend({\n cb: (Math.round(Math.random() * 100000000000))\n }, params);\n\n return utils.jsonToUrl(queryObject);\n}\n\nexport default {\n getPtvTag(params) {\n const queryParams = buildQueryParamsString(params);\n return `${config.ads.appnexus.ptv}?${queryParams}`;\n },\n\n getVmapTag(params) {\n const queryParams = buildQueryParamsString(params);\n return `${config.ads.appnexus.vmap}?${queryParams}`;\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 /**\n * @param {object} adSlotConfig\n * @return {string}\n */\n getTag(adSlotConfig) {\n const adConfig = utils.merge(this.params, adSlotConfig);\n\n if (this.stream.isAudio()) {\n return appnexusTag.getPtvTag(adConfig);\n }\n\n return appnexusTag.getVmapTag(adConfig);\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: this.getTag(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 {\n locale, poster, title, description, minDvrWindow\n } = 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 if (description) {\n playlistItem.description = description;\n }\n\n // seek stream if play ahead time is set\n if (startTime) {\n playlistItem.starttime = startTime;\n }\n\n if (minDvrWindow) {\n playlistItem.minDvrWindow = minDvrWindow;\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 const type = stream.get('mediaType') === 'audio' && stream.hasMp4Streams() ? 'mp4' : 'hls';\n return Promise.resolve({\n id: stream.getId(),\n image: poster,\n sources: [{\n file: type === 'mp4' ? stream.getUrl(type) : streamUrl,\n // force stream type for mock stream which contains mp4 blob\n type: stream.isMock() ? 'video/mp4' : type,\n default: true,\n preload: 'auto'\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 // set repeat mode\n if (options.repeat === true) {\n config.repeat = options.repeat;\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","import 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 // repeat mode\n repeat: false,\n // minimum dvr window\n minDvrWindow: null,\n // url to css file with skin\n skin: config.skins.default,\n // right click defualt text and link\n about: {\n text: '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 preload: 'auto'\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\n this.token = new Token(stream.get('id'), stream.get('access'), 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 * @param {Stream} stream\n * @returns {string|*}\n */\n getTitle(stream) {\n const title = this.get('title');\n const isAudioWithoutCustomTitle = stream.isAudio() && !utils.isString(title);\n\n if (title === true || isAudioWithoutCustomTitle) {\n return stream.get('title');\n }\n\n return title;\n },\n\n /**\n * @param {Stream} stream\n * @returns {string|undefined}\n */\n getDescription(stream) {\n if (stream.isAudio()) {\n return stream.getCategory().get('title');\n }\n\n return undefined;\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.getTitle(stream),\n description: this.getDescription(stream),\n locale: locale,\n minDvrWindow: this.get('minDvrWindow')\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 repeat: this.get('repeat')\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 truned on and repeat truned off\n return this.get('recommended') !== false && this.get('repeat') === 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 } else if (permissions.whitelist === false && options.settings && options.settings.jw) {\n settings.jw = {};\n utils.extend(settings.jw, options.settings.jw);\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","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","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","/* 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';\nimport logger from 'utils/logger';\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 logger('HomadPlugin').log('event', details);\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] && nodes[0].classList.length === 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}","import logger from 'utils/logger';\nimport utils from 'utils/utils';\nimport locale from 'player/model/locale';\nimport { forward30Icon } from 'icons/audio';\n\nconst DEFAULT_USE_AUDIO_SKIN = true;\n\nconst CN_FORWARD_BUTTON = 'jw-icon-forward';\nconst CN_FORWARD_CONTROL = 'jw-display-icon-forward';\nconst CN_DURATION_INFO = 'svp-duration';\n\n/** {string} An icon with proper class names */\nconst forwardIcon = forward30Icon.replace('\n \n ${forwardIcon}\n \n `);\n}\n\n/**\n * Resolves whether the player needs an audio skin or not and adds necessary elements to the UI if needed\n * @param {PlayerModel} svpPlayer\n */\nexport default function audioSkinResolver(svpPlayer) {\n const translate = locale.translate('player');\n const { config, player: jwPlayer } = svpPlayer;\n const useAudioSkin = Boolean(config.get('audioSkin') || DEFAULT_USE_AUDIO_SKIN);\n logger('AudioSkin').log(useAudioSkin ? 'on' : 'off');\n\n if (!useAudioSkin) {\n return;\n }\n\n const seekForward = () => {\n const position = jwPlayer.getPosition();\n const duration = jwPlayer.getDuration();\n svpPlayer.seek(Math.min(duration, position + 30));\n };\n\n svpPlayer.on('playlistItem', () => {\n if (!svpPlayer.player.getControls()) {\n return;\n }\n\n const container = svpPlayer.getContainer();\n const stream = svpPlayer.getStream();\n const isAudio = stream.isAudio();\n const duration = stream.getDuration();\n const forwardTooltip = translate.forward;\n\n const displayControl = container.querySelector('.jw-display-icon-display .jw-icon-display');\n const cover = container.querySelector('.jw-preview .svp-cover');\n let forwardButton = container.querySelector(`.jw-controlbar .${CN_FORWARD_BUTTON}`);\n let forwardControl = container.querySelector(`.jw-display-container .${CN_FORWARD_CONTROL}`);\n let durationInfo = container.querySelector(`.jw-title .${CN_DURATION_INFO}`);\n\n if (!cover) {\n container.querySelector('.jw-preview').appendChild(\n utils.createNode('
')\n );\n }\n\n if (!forwardButton) {\n jwPlayer.addButton(forwardIcon, forwardTooltip, seekForward, 'forward', CN_FORWARD_BUTTON);\n forwardButton = container.querySelector(`.jw-controlbar .${CN_FORWARD_BUTTON}`);\n }\n\n if (!forwardControl) {\n const controls = container.querySelector('.jw-display-controls');\n forwardControl = createForwardControl(forwardTooltip);\n forwardControl.addEventListener('click', seekForward);\n controls.appendChild(forwardControl);\n }\n\n if (!durationInfo) {\n const title = container.querySelector('.jw-title');\n durationInfo = utils.createNode(`
`);\n title.appendChild(durationInfo);\n }\n\n const displayStyle = isAudio ? null : 'none';\n const addOrRemoveClass = isAudio ? utils.addClass : utils.removeClass;\n addOrRemoveClass(container, 'svp-flag-media-audio');\n displayControl.setAttribute('aria-label', isAudio ? translate.listen : translate.playback);\n forwardButton.style.display = displayStyle;\n forwardControl.style.display = displayStyle;\n durationInfo.style.display = displayStyle;\n durationInfo.innerText = isAudio ? timeToText(duration) : '';\n });\n}\n","import utils from 'utils/utils';\nimport * as icons from 'icons';\nimport * as audioIcons from 'icons/audio';\n\n/** @type {object} */\nconst iconsMap = {\n '.jw-svg-icon-play': icons.play,\n '.jw-svg-icon-pause': icons.pause,\n '.jw-skip-icon .jw-svg-icon-next': icons.chevronRight,\n '.jw-svg-icon-settings': icons.settings,\n '.jw-svg-icon-sharing': icons.share,\n\n '.jw-svg-icon-cc-on': icons.captions,\n '.jw-svg-icon-cc-off': icons.captions,\n\n '.jw-svg-icon-volume-0': icons.audioMuted,\n '.jw-svg-icon-volume-50': icons.audioHalf,\n '.jw-svg-icon-volume-100': icons.audio,\n\n '.jw-svg-icon-fullscreen-on': icons.fullscreenOn,\n '.jw-svg-icon-fullscreen-off': icons.fullscreenOff,\n\n info: icons.info,\n avButton: icons.avButton\n};\n\n/** @type {object} */\nconst audioIconsMap = Object.freeze({\n '.jw-svg-icon-play': audioIcons.playIcon,\n '.jw-svg-icon-pause': audioIcons.pauseIcon,\n '.jw-svg-icon-replay': audioIcons.replayIcon,\n '.jw-svg-icon-rewind': audioIcons.rewind10Icon,\n\n '.jw-svg-icon-volume-0': audioIcons.audioOffIcon,\n '.jw-svg-icon-volume-50': audioIcons.audioHalfIcon,\n '.jw-svg-icon-volume-100': audioIcons.audioOnIcon\n});\n\n/** @type {boolean} */\nlet defsLoaded = false;\n\n/**\n * @param {PlayerModel} svpPlayer\n */\nexport function loadDefs(svpPlayer) {\n if (defsLoaded) {\n return;\n }\n\n defsLoaded = true;\n\n svpPlayer.once('ready', () => {\n const container = svpPlayer.getContainer();\n\n if (container) {\n container.appendChild(utils.createNode(icons.defs));\n }\n });\n}\n\n/**\n * @param {string} name\n */\nexport function getIcon(name) {\n return iconsMap[name];\n}\n\n/**\n * @param withAudioIcons\n * @return {object}\n */\nfunction getReplaceableIconsMap(withAudioIcons) {\n if (!withAudioIcons) {\n return iconsMap;\n }\n\n return utils.merge(iconsMap, audioIconsMap);\n}\n\n/**\n * @param {PlayerModel} svpPlayer\n */\nexport default function loadIcons(svpPlayer) {\n const jwPlayer = svpPlayer.player;\n const stream = svpPlayer.getStream();\n const isAudioStream = stream ? stream.isAudio() : false;\n const replaceableIconsMap = getReplaceableIconsMap(isAudioStream);\n\n jwPlayer.once('playlist', () => {\n const container = svpPlayer.getContainer();\n\n utils.each(replaceableIconsMap, (customIcon, selector) => {\n const replaceableIcons = Array.prototype.slice.call(container.querySelectorAll(selector));\n\n if (!replaceableIcons.length) {\n return;\n }\n\n utils.each(replaceableIcons, (replaceableIcon) => {\n if (!replaceableIcon) {\n return;\n }\n\n const svpIcon = utils.createNode(customIcon);\n svpIcon.setAttribute('class', replaceableIcon.getAttribute('class'));\n replaceableIcon.parentNode.replaceChild(svpIcon, replaceableIcon);\n });\n });\n });\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 if (!svpPlayer.player.getControls()) {\n return;\n }\n\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 { copyToClipboard } from 'utils/clipboard';\n\nexport default (svpPlayer, { icon }) => {\n if (!svpPlayer.player.getControls()) {\n return;\n }\n\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 { 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 audioSkinResolver from './skin/audioSkinResolver';\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\n/**\n * @param {object} jwConfig\n * @param {function} loader\n * @return {object}\n */\nexport function skinLoader(jwConfig, loader = styleLoader) {\n // disable multiple loading of JW skin\n if (jwConfig.skin && jwConfig.skin.url) {\n loader(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\n/**\n * Load SVP Skin\n *\n * @param {PlayerModel} svpPlayerModel\n */\nexport default function svpSkin(svpPlayerModel) {\n loadDefs(svpPlayerModel);\n\n audioSkinResolver(svpPlayerModel);\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 device from 'utils/device';\n\nexport default (svpPlayer) => {\n if (!svpPlayer.player.getControls()) {\n return;\n }\n\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","import 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, { 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 // load youbora only for non-mock streams\n if (this.stream && this.stream.get('type') !== 'mock') {\n youbora.initialize(this.player, {\n accountCode: 'schibsted',\n enableAnalytics: true\n });\n }\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', 'adClick',\n 'fullscreen', 'volume', 'mute'\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' && this.stream.hasMp4Streams() ? 'mp4' : 'hls';\n console.log(device.isIOS());\n console.log(streamType);\n const streamUrl = await this.config.getStreamUrl(streamType);\n const streamPoster = this.config.getPoster(this.stream);\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: streamType,\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 },\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\n const params = data.metadata && data.metadata.TXXX;\n\n if (params) {\n // Workaround for live midrolls SCTE-35 tags in Safari\n // @see https://github.schibsted.io/svp/platform/issues/328\n if (params.insertAd && device.isSafari()) {\n const duration = parseInt(params.insertAd, 10);\n this.createMidroll(duration, 'NOW');\n }\n\n // Workaround for live midrolls SCTE-35 tags in Safari\n // @see https://github.schibsted.io/svp/platform/issues/328\n if (params.cancelAd === 'now' && device.isSafari()) {\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","/* eslint-disable max-classes-per-file */\nimport 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","import 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 // do not change this to an arrow function - it breaks iOS playback\n async function loadPlugin(pluginSrc) {\n try {\n await scriptLoader(pluginSrc);\n } catch (error) {\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;\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.player.model.player.getViewable() === 1) {\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 locale from 'player/model/locale';\nimport PluginModel from './model';\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';\nimport PluginModel from './model';\n\n/**\n * Displays sponsor label in top left corner of player\n *\n * @param options\n * @constructor\n */\nclass SponsorLabelPlugin extends PluginModel {\n constructor(options) {\n super(options);\n this.sponsor = options.sponsor;\n this.pluginName = 'SponsorLabelPlugin';\n }\n\n getName() {\n return this.pluginName;\n }\n\n setup() {\n this.listenToOnce(this.player, 'viewable', this.render, this);\n }\n\n render() {\n const adFrom = locale.translate('Ad from');\n\n if (this.sponsor) {\n this.el = utils.createNode(`
${adFrom} ${this.sponsor}
`);\n this.player.getContainer().appendChild(this.el);\n }\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\nexport default SponsorLabelPlugin;\n","import utils from 'utils/utils';\nimport logger from 'utils/logger';\nimport locale from 'player/model/locale';\nimport PluginModel from './model';\n\nconst SVP_FLAG_EXPERIMENT = 'svp-flag-experiment';\nconst SVP_FLAG_EXPERIMENT_EXTENDED = 'svp-flag-experiment-extended';\nconst SVP_LOGIN_OVERLAY = 'svp-login-overlay';\nconst SVP_EXPERIMENT = 'svp-experiment';\n\n/**\n * @param {String} actual\n * @param {String} expected\n */\nfunction assertUppercased(actual, expected) {\n return actual && actual.toUpperCase() === expected;\n}\n\nexport function chooseVariant(variants = {}, rangeNumber) {\n const winner = Object.values(variants)\n .reduce((prev, { id, Percentage }, index) => {\n const percentage = Number(Percentage);\n if (index) {\n return prev.concat({ id, min: prev[index - 1].max, max: prev[index - 1].max + percentage });\n }\n return [{ id, min: 0, max: percentage }];\n }, []).find(({ min, max }) => rangeNumber > min && rangeNumber < max);\n return winner && variants[winner.id];\n}\n\nexport function prepareVariantsForExperiment(metadata = {}) {\n const variantIds = metadata.variants && metadata.variants.split(',');\n const experimentMetadataKeys = Object.keys(metadata)\n .filter((key) => key.match(/^\\d+variant/g));\n\n return experimentMetadataKeys.reduce((prev, current) => {\n const [, id,, key] = /^(\\d+)(variant)(\\D+)/g.exec(current);\n if (variantIds.includes(id)) {\n prev[id] = Object.assign(prev[id] || {}, { id, [key]: metadata[current] });\n }\n return prev;\n }, {});\n}\n\n\nfunction isLoginVariantType(variant = {}) {\n return assertUppercased(variant.Type, 'LOGIN');\n}\n\nfunction isSubscriptionVariantType(variant = {}) {\n return assertUppercased(variant.Type, 'SUBSCRIPTION');\n}\n\nconst getUiElementId = (provider, articleUrl, assetId) => `sdrn:${provider}:article:${articleUrl}:element:${assetId}`;\n\nclass PodcastExperimentPlugin extends PluginModel {\n constructor({ id, variant }, { loginUrl, subscriptionUrl, articleUrl }) {\n super({ id, variant });\n this.id = id;\n this.variant = variant;\n this.loginUrl = loginUrl;\n this.subscriptionUrl = subscriptionUrl;\n this.articleUrl = articleUrl;\n this.pluginName = 'PodcastExperimentPlugin';\n }\n\n getName() {\n return this.pluginName;\n }\n\n setup() {\n logger('ExperimentPlugin').log('setup', this);\n this.listenToOnce(this.player, 'viewable', this.render, this);\n }\n\n /**\n * @returns {string}\n */\n getButtonText() {\n const { variant = {} } = this;\n const translate = locale.translate('player');\n\n if (variant.OfferButton) {\n return variant.OfferButton;\n }\n if (isLoginVariantType(variant)) {\n return translate.loginToListen;\n }\n if (isSubscriptionVariantType(variant)) {\n return translate.subscribeToListen;\n }\n return translate.listen;\n }\n\n render() {\n const {\n variant, loginUrl, subscriptionUrl, articleUrl, player\n } = this;\n const { id, provider } = player.asset.attributes;\n const jwPlayer = player.model.player;\n const useExtendedVariant = jwPlayer.getHeight() > 300;\n const container = jwPlayer.getContainer();\n const buttonText = this.getButtonText();\n const uiElementId = getUiElementId(provider, encodeURIComponent(articleUrl), id);\n const pulseStatsPlugin = player.plugins.PulseStats;\n\n function trackEngagement() {\n if (pulseStatsPlugin) {\n pulseStatsPlugin.track('Engagement podcast experiment', {\n provider: { productType: 'Web' },\n type: 'Engagement',\n object: { '@id': uiElementId, type: 'UIElement', name: buttonText }\n });\n }\n }\n\n if (pulseStatsPlugin) {\n pulseStatsPlugin.playbackEvents.once('Load', () => {\n pulseStatsPlugin.track('View podcast experiment', {\n provider: { productType: 'Web' },\n type: 'View',\n object: { '@id': uiElementId, type: 'UIElement', name: buttonText }\n });\n });\n }\n\n if (!variant) {\n player.once('initialPlay', () => {\n trackEngagement();\n });\n return;\n }\n\n const isOffer = assertUppercased(variant.Offer, 'TRUE');\n if (isOffer) {\n if (useExtendedVariant) {\n utils.addClass(container, SVP_FLAG_EXPERIMENT_EXTENDED);\n }\n utils.addClass(container, SVP_FLAG_EXPERIMENT);\n container.appendChild(\n utils.createNode(`\n
\n
\n ${variant.OfferHeader || ''}\n
\n
\n ${variant.OfferPreamble || ''}\n
\n
\n `)\n );\n }\n\n const redirectUrl = isLoginVariantType(variant) ? loginUrl : subscriptionUrl;\n const onLoginButtonClick = (e) => {\n e.preventDefault();\n if (pulseStatsPlugin) {\n trackEngagement();\n }\n setTimeout(() => {\n window.location.href = redirectUrl;\n }, 400);\n };\n container.appendChild(\n utils.createNode(`\n
\n `)\n );\n const loginButton = container.querySelector(`.${SVP_LOGIN_OVERLAY}`);\n loginButton.addEventListener('click', onLoginButtonClick);\n }\n\n destroy() {\n this.stopListening(this.player);\n const jwPlayer = this.player.model.player;\n const container = jwPlayer.getContainer();\n\n utils.removeClass(container, SVP_FLAG_EXPERIMENT);\n utils.removeClass(container, SVP_FLAG_EXPERIMENT_EXTENDED);\n\n const experimentInfo = container.querySelector(`.${SVP_EXPERIMENT}`);\n if (experimentInfo) {\n experimentInfo.parentNode.removeChild(experimentInfo);\n }\n\n const experimentOverlay = container.querySelector(`.${SVP_LOGIN_OVERLAY}`);\n if (experimentOverlay) {\n experimentOverlay.parentNode.removeChild(experimentOverlay);\n }\n\n logger('ExperimentPlugin').log('destroy', this);\n }\n}\n\nexport default PodcastExperimentPlugin;\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 const isLive = this.player.model.getStream().isLive();\n const isDisabledNextVideo = this.player.model.getStream().isDisabledNextVideo();\n\n // do not enable recommended for live streams and asset with metadata.disableNextVideo set to true\n if (!isLive && !isDisabledNextVideo) {\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 const stream = this.player.model.getStream();\n\n // do not take any action if complete is triggered by playNext\n if (stream.isAudio() || 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","import 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 trackers: {},\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()\n .then(() => this.getTracker(provider))\n .then((storedTracker) => {\n const PROVIDER_TRACKER_ID = `${TRACKER_ID}-${provider}`;\n\n // initialize pulse only once per page per provider\n if (!storedTracker) {\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 const promise = new Promise((resolve) => {\n window.pulse(PROVIDER_TRACKER_ID, (tracker) => resolve(tracker));\n });\n\n PulseTrackerLoader.trackers[provider] = promise;\n\n return promise;\n }\n\n return storedTracker;\n });\n },\n\n getTracker(provider) {\n return PulseTrackerLoader.trackers[provider] || Promise.resolve(null);\n }\n};\n\nexport default PulseTrackerLoader;\n","import Eventable from 'utils/eventable';\nimport get from 'lodash/get';\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.adSequencePosition = 0;\n this.adSequenceCount = 0;\n this.beforeUnload = ['beforeunload', this.onAdSlotComplete.bind(this), true];\n\n this.listenTo(this.player, 'playlistItem', this.onPlaylistItem, this);\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 this.listenTo(this.player, 'adFinished', this.onAdFinished, 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 if (get(window, ['SVP', 'Player', 'isHomadLoaded']) === true) {\n window.addEventListener('hdEvent', this.onHomadEvent.bind(this));\n }\n\n window.addEventListener(...this.beforeUnload);\n }\n\n /**\n * Homad AAB ads have single event bus for all players\n *\n * @param event\n */\n onHomadEvent(event) {\n const details = event && event.detail;\n\n if (details.type === 'adRequest' && details.adIds) {\n this.adSequencePosition = 0;\n }\n\n if (details.type === 'adComplete' && details.adIds) {\n this.onAdFinished();\n }\n\n if (details.type === 'adStart' && details.adIds) {\n if (!this.adSequencePosition) {\n this.adSequenceCount = details.adIds.length;\n }\n\n this.adSequencePosition += 1;\n this.adIds = [...details.adIds];\n const { adID } = this.adIds[this.adIds.length - 1];\n\n Object.assign(this.adData, {\n type: details.state,\n duration: details.duration,\n id: adID,\n sequence: this.adSequencePosition,\n count: this.adSequenceCount,\n position: 0\n });\n\n this.trigger('homadAdMeta', this.adData);\n\n return this.onAdPlay();\n }\n\n return false;\n }\n\n onPlaylistItem() {\n this.adSequencePosition = 0;\n this.adSequenceCount = 0;\n this.listenToOnce(this.player, 'complete', this.onAdSlotComplete, this);\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 onHdEvent(event) {\n if (event && event.detail && event.detail.name === 'contentPlayerPlay') {\n this.abbAdPlayed = true;\n\n this.trigger('Play', Object.assign(this.eventData, {\n start: true,\n duration: 0\n }));\n return window.removeEventListener('hdEvent', this.onHdEvent);\n }\n return false;\n }\n\n onAdSlotStart(slotData) {\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 if (!this.adData.id) {\n return;\n }\n\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 this.sendStopEvent();\n window.removeEventListener(...this.beforeUnload);\n }\n\n onAdFinished() {\n this.sendStopEvent();\n }\n\n onAdPlay() {\n this.trigger('Play', this.adData);\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 sendStopEvent() {\n if (this.adData.id) {\n this.trigger('Stop', Object.assign({}, this.adData, { duration: this.adData.position }));\n this.adData = {};\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 get from 'lodash/get';\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 this.isHomadLoaded = get(window, ['SVP', 'Player', 'isHomadLoaded']);\n\n\n this.previousTime = -1;\n\n this.session = this.createSession();\n this.beforeStreamStart = true;\n this.abbAdPlayed = false;\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, '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, '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 onPlaylistItem() {\n this.listenToOnce(this.player, 'complete', this.onComplete, this);\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 onHdEvent(event) {\n if (event && event.detail && event.detail.name === 'contentPlayerPlay') {\n this.abbAdPlayed = true;\n\n this.trigger('Play', Object.assign(this.eventData, {\n start: true,\n duration: 0\n }));\n return window.removeEventListener('hdEvent', this.onHdEvent);\n }\n return false;\n }\n\n onAssetPlay() {\n if (this.isHomadLoaded && !this.abbAdPlayed) {\n return window.addEventListener('hdEvent', this.onHdEvent.bind(this));\n }\n\n this.beforeStreamStart = false;\n\n return this.trigger('Play', Object.assign(this.eventData, {\n start: true,\n duration: 0\n }));\n }\n\n onPause() {\n // pause can't be triggered before ABB adPlay\n if (!(this.isHomadLoaded && !this.abbAdPlayed)) {\n this.trigger('Pause', this.eventData);\n }\n }\n\n onPlay() {\n // play can't be triggered before assetPlay\n if (!this.beforeStreamStart) {\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 if (reason === 'playNext') {\n this.onRecommendedPlay('playNext');\n }\n\n /**\n * Track stop event only when playback has started\n */\n if (this.beforeStreamStart === 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 this.beforeStreamStart = true;\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';\nimport get from 'lodash/get';\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';\nimport utils from '../../utils/utils';\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\nexport const 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, experiment) {\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 this.tracker = null;\n this.experiment = experiment;\n this.adSequenceDuration = false;\n this.isHomadLoaded = (utils.device.isDesktop() && get(window, ['SVP', 'Player', 'defaults', 'aab']))\n ? get(window, ['SVP', 'Player', 'isHomadLoaded'], false)\n : undefined;\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 const data = {};\n Object.assign(data, eventData, this.experiment && {\n experiments: [{\n id: this.experiment.id,\n variant: this.experiment.variant ? this.experiment.variant.id : '0',\n platform: this.provider\n }]\n });\n logger('Pulse').log(JSON.stringify(data, null, 4));\n tracker.track(eventName, data);\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 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 this.adEvents = new AdEvents(this.player);\n this.playbackEvents = new PlaybackEvents(this.player);\n this.uiEvents = new UiEvents(this.player);\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.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 this.listenTo(this.player, 'adStarted', () => {\n this.listenToOnce(this.player.model.player, 'adMeta', this.onAdMeta);\n });\n this.listenTo(this.adEvents, 'homadAdMeta', this.onHomadAdMeta, this);\n // eslint-disable-next-line no-return-assign\n this.listenTo(this.player, 'playlistItem', () => this.adSequenceDuration = false);\n }\n\n onReady(data) {\n const [tracker] = data;\n\n this.tracker = tracker;\n this.trigger('ready');\n this.listenTo(this.adEvents, 'adStarted');\n }\n\n onHomadAdMeta(adData) {\n if (!this.adSequenceDuration) {\n this.adSequenceDuration = Array(adData.count);\n }\n\n // skip midroll and postroll\n if (adData.type !== 'preroll') {\n return;\n }\n\n this.adSequenceDuration[adData.sequence - 1] = adData.duration;\n this.adSequenceCount = this.adSequenceDuration.length;\n }\n\n onAdMeta(adData) {\n if (!this.adSequenceDuration) {\n this.adSequenceDuration = Array(adData.podcount);\n }\n\n // skip midroll and postroll\n if (get(adData, 'adschedule.offset') !== 'pre') {\n return;\n }\n\n const { textContent: duration } = adData.response\n .querySelector(`Ad:nth-of-type(${adData.sequence}) InLine Creatives Linear Duration`) || {};\n if (duration) {\n this.adSequenceDuration[adData.sequence - 1] = utils.time.durationToSeconds(duration);\n }\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 adSequenceCount: data.count,\n embed: this.embed,\n streamType: asset.get('streamType'),\n adBlock: this.isHomadLoaded\n }, this.asset)\n };\n\n if (this.adSequenceDuration) {\n trackingData.object.adSequenceDuration = this.adSequenceDuration;\n trackingData.object.adSequenceCount = this.adSequenceDuration.length;\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 // do not track homadAdMeta events\n if (intent === 'homadAdMeta') {\n return false;\n }\n\n const asset = this.playerAsset;\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 adSequenceCount: data.count,\n adBlock: this.isHomadLoaded\n }\n };\n\n if (this.adSequenceDuration) {\n trackingData.object.adSequenceDuration = this.adSequenceDuration;\n trackingData.object.adSequenceCount = this.adSequenceDuration.length;\n }\n\n if (data.sequence) {\n trackingData.object.adSequencePosition = 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 if (asset.getCategory()) {\n trackingData.object.category = this.categoryTree.getPath(asset.getCategory().attributes.id)\n .map((i) => i.title)\n .join(' > ')\n .toLocaleLowerCase();\n }\n\n return 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","import 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 SponsorLabelPlugin from './plugins/sponsor-label';\nimport PodcastExperimentPlugin, { prepareVariantsForExperiment, chooseVariant } from './plugins/podcast-experiment';\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 const handleReady = () => {\n resolve();\n this.off('assetError', handleError); // eslint-disable-line no-use-before-define\n };\n\n const handleError = (error) => {\n resolve(error);\n this.off('assetError', handleReady);\n };\n\n this.once('assetReady', handleReady);\n this.once('assetError', handleError);\n }),\n SvpPlugins.load(options.plugins)\n ]).then(([error]) => {\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 if (!error) {\n this.model.setup();\n }\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 if (this.asset.get('access')) {\n const access = Object.keys(this.asset.get('access'))[0] || null;\n stream.set('access', access);\n }\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 if (configuration.get('showSponsorLabel') && this.asset.isSponsored()) {\n this.addPlugin(new SponsorLabelPlugin({\n sponsor: this.asset.getCategoryTitle()\n }));\n }\n\n const metadata = this.asset.get('metadata') || {};\n const userStatus = configuration.get('userStatus') || {};\n\n let experiment;\n const isExperiment = !userStatus.loggedIn && metadata.experimentId && metadata.isPodcast === 'true';\n\n if (isExperiment) {\n try {\n let experimentRange = JSON.parse(sessionStorage.getItem('svpExperimentRange'));\n if (!experimentRange) {\n experimentRange = Math.random() * 100;\n sessionStorage.setItem('svpExperimentRange', JSON.stringify(experimentRange));\n }\n\n experiment = {\n id: metadata.experimentId,\n variant: chooseVariant(prepareVariantsForExperiment(metadata), experimentRange)\n };\n\n this.addPlugin(new PodcastExperimentPlugin(experiment,\n {\n loginUrl: configuration.get('loginUrl'),\n subscriptionUrl: configuration.get('subscriptionUrl'),\n articleUrl: configuration.get('articleUrl')\n }));\n } catch (error) {\n logger('ExperimentPlugin').error('An error occur while initializing experiment', error);\n }\n }\n\n\n /**\n * Disable Pulse tracking for mock/ads only playback\n */\n\n const pulseConfig = configuration.get('pulse');\n if (pulseConfig && pulseConfig.provider && stream.isMock() === false) {\n this.addPlugin(new PulseStatsPlugin(pulseConfig, isExperiment ? experiment : null));\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 } else if (options.api) {\n config.api.tokenUrl = options.api.replace('api/v1/', 'token/v1/');\n }\n\n // allow to override thumbnails api url\n if (options.thumbnailsUrl) {\n config.api.thumbnailsUrl = options.thumbnailsUrl;\n } else if (options.api) {\n config.api.thumbnailsUrl = options.api.replace('api/v1', 'thumbnails/v1');\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":""}