From 44d3a17870949e828e5b1a4619a30dfcb626a174 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Tue, 19 Feb 2019 01:17:08 +1100 Subject: [PATCH] Fix links --- demo/dist/demo.js | 2 +- demo/dist/demo.min.js | 2 +- demo/dist/demo.min.js.map | 2 +- dist/plyr.js | 2 +- dist/plyr.min.js | 2 +- dist/plyr.min.js.map | 2 +- dist/plyr.min.mjs | 2 +- dist/plyr.min.mjs.map | 2 +- dist/plyr.mjs | 2 +- dist/plyr.polyfilled.js | 2 +- dist/plyr.polyfilled.min.js | 2 +- dist/plyr.polyfilled.min.js.map | 2 +- dist/plyr.polyfilled.min.mjs | 2 +- dist/plyr.polyfilled.min.mjs.map | 2 +- dist/plyr.polyfilled.mjs | 2 +- gulpfile.js | 9 ++++----- package.json | 2 +- readme.md | 10 +++++----- src/js/config/defaults.js | 2 +- src/js/plyr.js | 2 +- src/js/plyr.polyfilled.js | 2 +- 21 files changed, 28 insertions(+), 29 deletions(-) diff --git a/demo/dist/demo.js b/demo/dist/demo.js index db0b36a0f..247f181d9 100644 --- a/demo/dist/demo.js +++ b/demo/dist/demo.js @@ -7564,7 +7564,7 @@ typeof navigator === "object" && (function () { // Sprite (for icons) loadSprite: true, iconPrefix: 'plyr', - iconUrl: 'https://cdn.plyr.io/3.5.0-beta.4/plyr.svg', + iconUrl: 'https://cdn.plyr.io/3.5.0-beta.5/plyr.svg', // Blank video (used to prevent errors on source change) blankVideo: 'https://cdn.plyr.io/static/blank.mp4', // Quality default diff --git a/demo/dist/demo.min.js b/demo/dist/demo.min.js index 028035eaf..23adf5340 100644 --- a/demo/dist/demo.min.js +++ b/demo/dist/demo.min.js @@ -1,2 +1,2 @@ -"object"==typeof navigator&&function(){"use strict";var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var n=t(function(e,t){function n(e,t){for(var n=0;n0){var o=n(i,this);~o?i.splice(o+1):i.push(this),~o?r.splice(o,1/0,a):r.push(a),~n(i,s)&&(s=t.call(this,a,s))}else i.push(s);return null==e?s instanceof Error?function(e){var t={stack:e.stack,message:e.message,name:e.name};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}(s):s:e.call(this,a,s)}}(e.exports=function(e,t,n,r){return JSON.stringify(e,i(t,r),n)}).getSerialize=i}),i=(n.getSerialize,"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{});function r(e){return void 0===e}function a(e){return"[object Object]"===Object.prototype.toString.call(e)}function s(e){return"[object String]"===Object.prototype.toString.call(e)}function o(e){return"[object Array]"===Object.prototype.toString.call(e)}function l(){if(!("fetch"in i))return!1;try{return new Headers,new Request(""),new Response,!0}catch(e){return!1}}function c(e,t){var n,i;if(r(e.length))for(n in e)d(e,n)&&t.call(null,n,e[n]);else if(i=e.length)for(n=0;n ".length;e&&i++<5&&!("html"===(t=p(e))||i>1&&r+n.length*a+t.length>=80);)n.push(t),r+=t.length,e=e.parentNode;return n.reverse().join(" > ")},htmlElementAsString:p,isSameException:function(e,t){return!m(e,t)&&(e=e.values[0],t=t.values[0],e.type===t.type&&e.value===t.value&&(n=e.stacktrace,i=t.stacktrace,(!r(n)||!r(i))&&f(e.stacktrace,t.stacktrace)));var n,i},isSameStacktrace:f,parseUrl:function(e){if("string"!=typeof e)return{};var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/),n=t[6]||"",i=t[8]||"";return{protocol:t[2],host:t[4],path:t[5],relative:t[5]+n+i}},fill:function(e,t,n,i){if(null!=e){var r=e[t];e[t]=n(r),e[t].__raven__=!0,e[t].__orig__=r,i&&i.push([e,t,r])}},safeJoin:function(e,t){if(!o(e))return"";for(var n=[],i=0;ir?e(t,i-1):s},serializeKeysForMessage:function(e,t){if("number"==typeof e||"string"==typeof e)return e.toString();if(!Array.isArray(e))return"";if(0===(e=e.filter(function(e){return"string"==typeof e})).length)return"[object has no keys]";if(t="number"!=typeof t?v:t,e[0].length>=t)return e[0];for(var n=e.length;n>0;n--){var i=e.slice(0,n).join(", ");if(!(i.length>t))return n===e.length?i:i+"…"}return""},sanitize:function(e,t){if(!o(t)||o(t)&&0===t.length)return e;var i,r=h(t),s="********";try{i=JSON.parse(n(e))}catch(t){return e}return function e(t){return o(t)?t.map(function(t){return e(t)}):a(t)?Object.keys(t).reduce(function(n,i){return r.test(i)?n[i]=s:n[i]=e(t[i]),n},{}):t}(i)}},_={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},E=[].slice,S="?",C=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function x(){return"undefined"==typeof document||null==document.location?"":document.location.href}_.report=function(){var e,t,n=[],i=null,r=null,a=null;function s(e,t){var i=null;if(!t||_.collectWindowErrors){for(var r in n)if(n.hasOwnProperty(r))try{n[r].apply(null,[e].concat(E.call(arguments,2)))}catch(e){i=e}if(i)throw i}}function o(t,n,i,r,o){var c=w.isErrorEvent(o)?o.error:o,u=w.isErrorEvent(t)?t.message:t;if(a)_.computeStackTrace.augmentStackTraceWithInitialElement(a,n,i,u),l();else if(c&&w.isError(c))s(_.computeStackTrace(c),!0);else{var d,h={url:n,line:i,column:r},p=void 0;if("[object String]"==={}.toString.call(u))(d=u.match(C))&&(p=d[1],u=d[2]);h.func=S,s({name:p,message:u,url:x(),stack:[h]},!0)}return!!e&&e.apply(this,arguments)}function l(){var e=a,t=i;i=null,a=null,r=null,s.apply(null,[e,!1].concat(t))}function c(e,t){var n=E.call(arguments,1);if(a){if(r===e)return;l()}var s=_.computeStackTrace(e);if(a=s,r=e,i=n,setTimeout(function(){r===e&&l()},s.incomplete?2e3:0),!1!==t)throw e}return c.subscribe=function(i){t||(e=T.onerror,T.onerror=o,t=!0),n.push(i)},c.unsubscribe=function(e){for(var t=n.length-1;t>=0;--t)n[t]===e&&n.splice(t,1)},c.uninstall=function(){t&&(T.onerror=e,t=!1,e=void 0),n=[]},c}(),_.computeStackTrace=function(){function e(e){if(void 0!==e.stack&&e.stack){for(var t,n,i,r=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,a=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,s=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,o=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,c=e.stack.split("\n"),u=[],d=(/^(.*) is undefined$/.exec(e.message),0),h=c.length;d eval")>-1&&(t=o.exec(n[3]))?(n[3]=t[1],n[4]=t[2],n[5]=null):0!==d||n[5]||void 0===e.columnNumber||(u[0].column=e.columnNumber+1),i={url:n[3],func:n[1]||S,args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}if(!i.func&&i.line&&(i.func=S),i.url&&"blob:"===i.url.substr(0,5)){var m=new XMLHttpRequest;if(m.open("GET",i.url,!1),m.send(null),200===m.status){var f=m.responseText||"",g=(f=f.slice(-300)).match(/\/\/# sourceMappingURL=(.*)$/);if(g){var y=g[1];"~"===y.charAt(0)&&(y=("undefined"==typeof document||null==document.location?"":document.location.origin?document.location.origin:document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:""))+y.slice(1)),i.url=y.slice(0,-4)}}}u.push(i)}return u.length?{name:e.name,message:e.message,url:x(),stack:u}:null}}function t(e,t,n,i){var r={url:t,line:n};if(r.url&&r.line){if(e.incomplete=!1,r.func||(r.func=S),e.stack.length>0&&e.stack[0].url===r.url){if(e.stack[0].line===r.line)return!1;if(!e.stack[0].line&&e.stack[0].func===r.func)return e.stack[0].line=r.line,!1}return e.stack.unshift(r),e.partial=!0,!0}return e.incomplete=!0,!1}function n(e,r){for(var a,s,o=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],c={},u=!1,d=n.caller;d&&!u;d=d.caller)if(d!==i&&d!==_.report){if(s={url:null,func:S,line:null,column:null},d.name?s.func=d.name:(a=o.exec(d.toString()))&&(s.func=a[1]),void 0===s.func)try{s.func=a.input.substring(0,a.input.indexOf("{"))}catch(e){}c[""+d]?u=!0:c[""+d]=!0,l.push(s)}r&&l.splice(0,r);var h={name:e.name,message:e.message,url:x(),stack:l};return t(h,e.sourceURL||e.fileName,e.line||e.lineNumber,e.message||e.description),h}function i(t,i){var r=null;i=null==i?0:+i;try{if(r=e(t))return r}catch(e){if(_.debug)throw e}try{if(r=n(t,i+1))return r}catch(e){if(_.debug)throw e}return{name:t.name,message:t.message,url:x()}}return i.augmentStackTraceWithInitialElement=t,i.computeStackTraceFromStackProp=e,i}();var A=_;function P(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function O(e,t,n,i,r,a){return P((s=P(P(t,e),P(i,a)))<<(o=r)|s>>>32-o,n);var s,o}function M(e,t,n,i,r,a,s){return O(t&n|~t&i,e,t,r,a,s)}function N(e,t,n,i,r,a,s){return O(t&i|n&~i,e,t,r,a,s)}function L(e,t,n,i,r,a,s){return O(t^n^i,e,t,r,a,s)}function I(e,t,n,i,r,a,s){return O(n^(t|~i),e,t,r,a,s)}function j(e,t){var n,i,r,a,s;e[t>>5]|=128<>>9<<4)]=t;var o=1732584193,l=-271733879,c=-1732584194,u=271733878;for(n=0;n>5]>>>t%32&255);return n}function D(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<>>4&15)+"0123456789abcdef".charAt(15&t);return i}function B(e){return unescape(encodeURIComponent(e))}function H(e){return function(e){return R(j(D(e),8*e.length))}(B(e))}function q(e,t){return function(e,t){var n,i,r=D(e),a=[],s=[];for(a[15]=s[15]=void 0,r.length>16&&(r=j(r,8*e.length)),n=0;n<16;n+=1)a[n]=909522486^r[n],s[n]=1549556828^r[n];return i=j(a.concat(D(t)),512+8*t.length),R(j(s.concat(i),640))}(B(e),B(t))}var U=function(e,t,n){return t?n?q(t,e):F(q(t,e)):n?H(e):F(H(e))};function V(e){this.name="RavenConfigError",this.message=e}V.prototype=new Error,V.prototype.constructor=V;var z=V,W=function(e,t,n){var i=e[t],r=e;if(t in e){var a="warn"===t?"warning":t;e[t]=function(){var e=[].slice.call(arguments),s=w.safeJoin(e," "),o={level:a,logger:"console",extra:{arguments:e}};"assert"===t?!1===e[0]&&(s="Assertion failed: "+(w.safeJoin(e.slice(1)," ")||"console.assert"),o.extra.arguments=e.slice(1),n&&n(s,o)):n&&n(s,o),i&&Function.prototype.apply.call(i,r,e)}}},K=w.isErrorEvent,X=w.isDOMError,$=w.isDOMException,Y=w.isError,J=w.isObject,G=w.isPlainObject,Q=w.isUndefined,Z=w.isFunction,ee=w.isString,te=w.isArray,ne=w.isEmptyObject,ie=w.each,re=w.objectMerge,ae=w.truncate,se=w.objectFrozen,oe=w.hasKey,le=w.joinRegExp,ce=w.urlencode,ue=w.uuid4,de=w.htmlTreeAsString,he=w.isSameException,pe=w.isSameStacktrace,me=w.parseUrl,fe=w.fill,ge=w.supportsFetch,ye=w.supportsReferrerPolicy,ve=w.serializeKeysForMessage,be=w.serializeException,ke=w.sanitize,we=W,_e="source protocol user pass host port path".split(" "),Te=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;function Ee(){return+new Date}var Se="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},Ce=Se.document,xe=Se.navigator;function Ae(e,t){return Z(t)?function(n){return t(n,e)}:t}function Pe(){for(var e in this._hasJSON=!("object"!=typeof JSON||!JSON.stringify),this._hasDocument=!Q(Ce),this._hasNavigator=!Q(xe),this._lastCapturedException=null,this._lastData=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={release:Se.SENTRY_RELEASE&&Se.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this._fetchDefaults={method:"POST",referrerPolicy:ye()?"origin":""},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=Se.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=Ee(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._lastCapturedEvent=null,this._keypressTimeout,this._location=Se.location,this._lastHref=this._location&&this._location.href,this._resetBackoff(),this._originalConsole)this._originalConsoleMethods[e]=this._originalConsole[e]}Pe.prototype={VERSION:"3.27.0",debug:!1,TraceKit:A,config:function(e,t){var n=this;if(n._globalServer)return this._logDebug("error","Error: Raven has already been configured"),n;if(!e)return n;var i=n._globalOptions;t&&ie(t,function(e,t){"tags"===e||"extra"===e||"user"===e?n._globalContext[e]=t:i[e]=t}),n.setDSN(e),i.ignoreErrors.push(/^Script error\.?$/),i.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),i.ignoreErrors=le(i.ignoreErrors),i.ignoreUrls=!!i.ignoreUrls.length&&le(i.ignoreUrls),i.whitelistUrls=!!i.whitelistUrls.length&&le(i.whitelistUrls),i.includePaths=le(i.includePaths),i.maxBreadcrumbs=Math.max(0,Math.min(i.maxBreadcrumbs||100,100));var r={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},a=i.autoBreadcrumbs;"[object Object]"==={}.toString.call(a)?a=re(r,a):!1!==a&&(a=r),i.autoBreadcrumbs=a;var s={tryCatch:!0},o=i.instrument;return"[object Object]"==={}.toString.call(o)?o=re(s,o):!1!==o&&(o=s),i.instrument=o,A.collectWindowErrors=!!i.collectWindowErrors,n},install:function(){var e=this;return e.isSetup()&&!e._isRavenInstalled&&(A.report.subscribe(function(){e._handleOnErrorStackInfo.apply(e,arguments)}),e._globalOptions.captureUnhandledRejections&&e._attachPromiseRejectionHandler(),e._patchFunctionToString(),e._globalOptions.instrument&&e._globalOptions.instrument.tryCatch&&e._instrumentTryCatch(),e._globalOptions.autoBreadcrumbs&&e._instrumentBreadcrumbs(),e._drainPlugins(),e._isRavenInstalled=!0),Error.stackTraceLimit=e._globalOptions.stackTraceLimit,this},setDSN:function(e){var t=this._parseDSN(e),n=t.path.lastIndexOf("/"),i=t.path.substr(1,n);this._dsn=e,this._globalKey=t.user,this._globalSecret=t.pass&&t.pass.substr(1),this._globalProject=t.path.substr(n+1),this._globalServer=this._getGlobalServer(t),this._globalEndpoint=this._globalServer+"/"+i+"api/"+this._globalProject+"/store/",this._resetBackoff()},context:function(e,t,n){return Z(e)&&(n=t||[],t=e,e={}),this.wrap(e,t).apply(this,n)},wrap:function(e,t,n){var i=this;if(Q(t)&&!Z(e))return e;if(Z(e)&&(t=e,e=void 0),!Z(t))return t;try{if(t.__raven__)return t;if(t.__raven_wrapper__)return t.__raven_wrapper__}catch(e){return t}function r(){var r=[],a=arguments.length,s=!e||e&&!1!==e.deep;for(n&&Z(n)&&n.apply(this,arguments);a--;)r[a]=s?i.wrap(e,arguments[a]):arguments[a];try{return t.apply(this,r)}catch(t){throw i._ignoreNextOnError(),i.captureException(t,e),t}}for(var a in t)oe(t,a)&&(r[a]=t[a]);return r.prototype=t.prototype,t.__raven_wrapper__=r,r.__raven__=!0,r.__orig__=t,r},uninstall:function(){return A.report.uninstall(),this._detachPromiseRejectionHandler(),this._unpatchFunctionToString(),this._restoreBuiltIns(),this._restoreConsole(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},_promiseRejectionHandler:function(e){this._logDebug("debug","Raven caught unhandled promise rejection:",e),this.captureException(e.reason,{mechanism:{type:"onunhandledrejection",handled:!1}})},_attachPromiseRejectionHandler:function(){return this._promiseRejectionHandler=this._promiseRejectionHandler.bind(this),Se.addEventListener&&Se.addEventListener("unhandledrejection",this._promiseRejectionHandler),this},_detachPromiseRejectionHandler:function(){return Se.removeEventListener&&Se.removeEventListener("unhandledrejection",this._promiseRejectionHandler),this},captureException:function(e,t){if(t=re({trimHeadFrames:0},t||{}),K(e)&&e.error)e=e.error;else{if(X(e)||$(e)){var n=e.name||(X(e)?"DOMError":"DOMException"),i=e.message?n+": "+e.message:n;return this.captureMessage(i,re(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}))}if(Y(e))e=e;else{if(!G(e))return this.captureMessage(e,re(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}));t=this._getCaptureExceptionOptionsFromPlainObject(t,e),e=new Error(t.message)}}this._lastCapturedException=e;try{var r=A.computeStackTrace(e);this._handleStackInfo(r,t)}catch(t){if(e!==t)throw t}return this},_getCaptureExceptionOptionsFromPlainObject:function(e,t){var n=Object.keys(t).sort(),i=re(e,{message:"Non-Error exception captured with keys: "+ve(n),fingerprint:[U(n)],extra:e.extra||{}});return i.extra.__serialized__=be(t),i},captureMessage:function(e,t){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(e)){var n,i=re({message:e+=""},t=t||{});try{throw new Error(e)}catch(e){n=e}n.name=null;var r=A.computeStackTrace(n),a=te(r.stack)&&r.stack[1];a&&"Raven.captureException"===a.func&&(a=r.stack[2]);var s=a&&a.url||"";if((!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(s))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(s))){if(this._globalOptions.stacktrace||t.stacktrace||""===i.message){i.fingerprint=null==i.fingerprint?e:i.fingerprint,(t=re({trimHeadFrames:0},t)).trimHeadFrames+=1;var o=this._prepareFrames(r,t);i.stacktrace={frames:o.reverse()}}return i.fingerprint&&(i.fingerprint=te(i.fingerprint)?i.fingerprint:[i.fingerprint]),this._send(i),this}}},captureBreadcrumb:function(e){var t=re({timestamp:Ee()/1e3},e);if(Z(this._globalOptions.breadcrumbCallback)){var n=this._globalOptions.breadcrumbCallback(t);if(J(n)&&!ne(n))t=n;else if(!1===n)return this}return this._breadcrumbs.push(t),this._breadcrumbs.length>this._globalOptions.maxBreadcrumbs&&this._breadcrumbs.shift(),this},addPlugin:function(e){var t=[].slice.call(arguments,1);return this._plugins.push([e,t]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(e){return this._globalContext.user=e,this},setExtraContext:function(e){return this._mergeContext("extra",e),this},setTagsContext:function(e){return this._mergeContext("tags",e),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(n(this._globalContext))},setEnvironment:function(e){return this._globalOptions.environment=e,this},setRelease:function(e){return this._globalOptions.release=e,this},setDataCallback:function(e){var t=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=Ae(t,e),this},setBreadcrumbCallback:function(e){var t=this._globalOptions.breadcrumbCallback;return this._globalOptions.breadcrumbCallback=Ae(t,e),this},setShouldSendCallback:function(e){var t=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=Ae(t,e),this},setTransport:function(e){return this._globalOptions.transport=e,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var e=Se.RavenConfig;e&&this.config(e.dsn,e.config).install()},showReportDialog:function(e){if(Ce){if(!(e=re({eventId:this.lastEventId(),dsn:this._dsn,user:this._globalContext.user||{}},e)).eventId)throw new z("Missing eventId");if(!e.dsn)throw new z("Missing DSN");var t=encodeURIComponent,n=[];for(var i in e)if("user"===i){var r=e.user;r.name&&n.push("name="+t(r.name)),r.email&&n.push("email="+t(r.email))}else n.push(t(i)+"="+t(e[i]));var a=this._getGlobalServer(this._parseDSN(e.dsn)),s=Ce.createElement("script");s.async=!0,s.src=a+"/api/embed/error-page/?"+n.join("&"),(Ce.head||Ce.body).appendChild(s)}},_ignoreNextOnError:function(){var e=this;this._ignoreOnError+=1,setTimeout(function(){e._ignoreOnError-=1})},_triggerEvent:function(e,t){var n,i;if(this._hasDocument){for(i in t=t||{},e="raven"+e.substr(0,1).toUpperCase()+e.substr(1),Ce.createEvent?(n=Ce.createEvent("HTMLEvents")).initEvent(e,!0,!0):(n=Ce.createEventObject()).eventType=e,t)oe(t,i)&&(n[i]=t[i]);if(Ce.createEvent)Ce.dispatchEvent(n);else try{Ce.fireEvent("on"+n.eventType.toLowerCase(),n)}catch(e){}}},_breadcrumbEventHandler:function(e){var t=this;return function(n){if(t._keypressTimeout=null,t._lastCapturedEvent!==n){var i;t._lastCapturedEvent=n;try{i=de(n.target)}catch(e){i=""}t.captureBreadcrumb({category:"ui."+e,message:i})}}},_keypressEventHandler:function(){var e=this;return function(t){var n;try{n=t.target}catch(e){return}var i=n&&n.tagName;if(i&&("INPUT"===i||"TEXTAREA"===i||n.isContentEditable)){var r=e._keypressTimeout;r||e._breadcrumbEventHandler("input")(t),clearTimeout(r),e._keypressTimeout=setTimeout(function(){e._keypressTimeout=null},1e3)}}},_captureUrlChange:function(e,t){var n=me(this._location.href),i=me(t),r=me(e);this._lastHref=t,n.protocol===i.protocol&&n.host===i.host&&(t=i.relative),n.protocol===r.protocol&&n.host===r.host&&(e=r.relative),this.captureBreadcrumb({category:"navigation",data:{to:t,from:e}})},_patchFunctionToString:function(){var e=this;e._originalFunctionToString=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.__raven__?e._originalFunctionToString.apply(this.__orig__,arguments):e._originalFunctionToString.apply(this,arguments)}},_unpatchFunctionToString:function(){this._originalFunctionToString&&(Function.prototype.toString=this._originalFunctionToString)},_instrumentTryCatch:function(){var e=this,t=e._wrappedBuiltIns;function n(t){return function(n,i){for(var r=new Array(arguments.length),a=0;a"}}},s)),t.apply?t.apply(this,r):t(r[0],r[1])}}var i=this._globalOptions.autoBreadcrumbs;function r(n){var r=Se[n]&&Se[n].prototype;r&&r.hasOwnProperty&&r.hasOwnProperty("addEventListener")&&(fe(r,"addEventListener",function(t){return function(r,a,s,o){try{a&&a.handleEvent&&(a.handleEvent=e.wrap({mechanism:{type:"instrument",data:{target:n,function:"handleEvent",handler:a&&a.name||""}}},a.handleEvent))}catch(e){}var l,c,u;return i&&i.dom&&("EventTarget"===n||"Node"===n)&&(c=e._breadcrumbEventHandler("click"),u=e._keypressEventHandler(),l=function(e){if(e){var t;try{t=e.type}catch(e){return}return"click"===t?c(e):"keypress"===t?u(e):void 0}}),t.call(this,r,e.wrap({mechanism:{type:"instrument",data:{target:n,function:"addEventListener",handler:a&&a.name||""}}},a,l),s,o)}},t),fe(r,"removeEventListener",function(e){return function(t,n,i,r){try{n=n&&(n.__raven_wrapper__?n.__raven_wrapper__:n)}catch(e){}return e.call(this,t,n,i,r)}},t))}fe(Se,"setTimeout",n,t),fe(Se,"setInterval",n,t),Se.requestAnimationFrame&&fe(Se,"requestAnimationFrame",function(t){return function(n){return t(e.wrap({mechanism:{type:"instrument",data:{function:"requestAnimationFrame",handler:t&&t.name||""}}},n))}},t);for(var a=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],s=0;s"}}},n)})}if(t.xhr&&"XMLHttpRequest"in Se){var r=Se.XMLHttpRequest&&Se.XMLHttpRequest.prototype;fe(r,"open",function(t){return function(n,i){return ee(i)&&-1===i.indexOf(e._globalKey)&&(this.__raven_xhr={method:n,url:i,status_code:null}),t.apply(this,arguments)}},n),fe(r,"send",function(t){return function(){var n=this;function r(){if(n.__raven_xhr&&4===n.readyState){try{n.__raven_xhr.status_code=n.status}catch(e){}e.captureBreadcrumb({type:"http",category:"xhr",data:n.__raven_xhr})}}for(var a=["onload","onerror","onprogress"],s=0;s"}}},t,r)}):n.onreadystatechange=r,t.apply(this,arguments)}},n)}t.xhr&&ge()&&fe(Se,"fetch",function(t){return function(){for(var n=new Array(arguments.length),i=0;i2?arguments[2]:void 0;return n&&e._captureUrlChange(e._lastHref,n+""),t.apply(this,arguments)}};fe(Se.history,"pushState",l,n),fe(Se.history,"replaceState",l,n)}if(t.console&&"console"in Se&&console.log){var c=function(t,n){e.captureBreadcrumb({message:t,level:n.level,category:"console"})};ie(["debug","info","warn","error","log"],function(e,t){we(console,t,c)})}},_restoreBuiltIns:function(){for(var e;this._wrappedBuiltIns.length;){var t=(e=this._wrappedBuiltIns.shift())[0],n=e[1],i=e[2];t[n]=i}},_restoreConsole:function(){for(var e in this._originalConsoleMethods)this._originalConsole[e]=this._originalConsoleMethods[e]},_drainPlugins:function(){var e=this;ie(this._plugins,function(t,n){var i=n[0],r=n[1];i.apply(e,[e].concat(r))})},_parseDSN:function(e){var t=Te.exec(e),n={},i=7;try{for(;i--;)n[_e[i]]=t[i]||""}catch(t){throw new z("Invalid DSN: "+e)}if(n.pass&&!this._globalOptions.allowSecretKey)throw new z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return n},_getGlobalServer:function(e){var t="//"+e.host+(e.port?":"+e.port:"");return e.protocol&&(t=e.protocol+":"+t),t},_handleOnErrorStackInfo:function(e,t){(t=t||{}).mechanism=t.mechanism||{type:"onerror",handled:!1},this._ignoreOnError||this._handleStackInfo(e,t)},_handleStackInfo:function(e,t){var n=this._prepareFrames(e,t);this._triggerEvent("handle",{stackInfo:e,options:t}),this._processException(e.name,e.message,e.url,e.lineno,n,t)},_prepareFrames:function(e,t){var n=this,i=[];if(e.stack&&e.stack.length&&(ie(e.stack,function(t,r){var a=n._normalizeFrame(r,e.url);a&&i.push(a)}),t&&t.trimHeadFrames))for(var r=0;r0&&(e.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),this._globalContext.user&&(e.user=this._globalContext.user),t.environment&&(e.environment=t.environment),t.release&&(e.release=t.release),t.serverName&&(e.server_name=t.serverName),e=this._sanitizeData(e),Object.keys(e).forEach(function(t){(null==e[t]||""===e[t]||ne(e[t]))&&delete e[t]}),Z(t.dataCallback)&&(e=t.dataCallback(e)||e),e&&!ne(e)&&(Z(t.shouldSendCallback)&&!t.shouldSendCallback(e)||(this._shouldBackoff()?this._logDebug("warn","Raven dropped error due to backoff: ",e):"number"==typeof t.sampleRate?Math.random()null!=e?e.constructor:null,ze=(e,t)=>Boolean(e&&t&&e instanceof t),We=e=>null==e,Ke=e=>Ve(e)===Object,Xe=e=>Ve(e)===String,$e=e=>Array.isArray(e),Ye=e=>ze(e,NodeList);var Je={nullOrUndefined:We,object:Ke,number:e=>Ve(e)===Number&&!Number.isNaN(e),string:Xe,boolean:e=>Ve(e)===Boolean,function:e=>Ve(e)===Function,array:$e,nodeList:Ye,element:e=>ze(e,Element),event:e=>ze(e,Event),empty:e=>We(e)||(Xe(e)||$e(e)||Ye(e))&&!e.length||Ke(e)&&!Object.keys(e).length};function Ge(e,t){if(t<1){const n=function(e){const t=`${e}`.match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}class Qe{constructor(e,t){Je.element(e)?this.element=e:Je.string(e)&&(this.element=document.querySelector(e)),Je.element(this.element)&&Je.empty(this.element.rangeTouch)&&(this.config=Object.assign({},Ue,t),this.init())}static get enabled(){return"ontouchstart"in document.documentElement}static setup(e,t={}){let n=null;if(Je.empty(e)||Je.string(e)?n=Array.from(document.querySelectorAll(Je.string(e)?e:'input[type="range"]')):Je.element(e)?n=[e]:Je.nodeList(e)?n=Array.from(e):Je.array(e)&&(n=e.filter(Je.element)),Je.empty(n))return null;const i=Object.assign({},Ue,t);if(Je.string(e)&&i.watch){new MutationObserver(t=>{Array.from(t).forEach(t=>{Array.from(t.addedNodes).forEach(t=>{if(!Je.element(t)||!function(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}(t,e))return;new Qe(t,i)})})}).observe(document.body,{childList:!0,subtree:!0})}return n.map(e=>new Qe(e,t))}init(){Qe.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}destroy(){Qe.enabled&&(this.listeners(!1),this.element.rangeTouch=null)}listeners(e){const t=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach(e=>{this.element[t](e,e=>this.set(e),!1)})}get(e){if(!Qe.enabled||!Je.event(e))return null;const t=e.target,n=e.changedTouches[0],i=parseFloat(t.getAttribute("min"))||0,r=parseFloat(t.getAttribute("max"))||100,a=parseFloat(t.getAttribute("step"))||1,s=r-i;let o;const l=t.getBoundingClientRect(),c=100/l.width*(this.config.thumbWidth/2)/100;return(o=100/l.width*(n.clientX-l.left))<0?o=0:o>100&&(o=100),o<50?o-=(100-2*o)*c:o>50&&(o+=2*(o-50)*c),i+Ge(s*(o/100),a)}set(e){Qe.enabled&&Je.event(e)&&!e.target.disabled&&(e.preventDefault(),e.target.value=this.get(e),function(e,t){if(!e||!t)return;const n=new Event(t);e.dispatchEvent(n)}(e.target,"touchend"===e.type?"change":"input"))}}var Ze=function(e){return null!=e?e.constructor:null},et=function(e,t){return Boolean(e&&t&&e instanceof t)},tt=function(e){return null==e},nt=function(e){return Ze(e)===Object},it=function(e){return Ze(e)===String},rt=function(e){return Array.isArray(e)},at=function(e){return et(e,NodeList)},st=function(e){return tt(e)||(it(e)||rt(e)||at(e))&&!e.length||nt(e)&&!Object.keys(e).length},ot={nullOrUndefined:tt,object:nt,number:function(e){return Ze(e)===Number&&!Number.isNaN(e)},string:it,boolean:function(e){return Ze(e)===Boolean},function:function(e){return Ze(e)===Function},array:rt,weakMap:function(e){return et(e,WeakMap)},nodeList:at,element:function(e){return et(e,Element)},textNode:function(e){return Ze(e)===Text},event:function(e){return et(e,Event)},keyboardEvent:function(e){return et(e,KeyboardEvent)},cue:function(e){return et(e,window.TextTrackCue)||et(e,window.VTTCue)},track:function(e){return et(e,TextTrack)||!tt(e)&&it(e.kind)},promise:function(e){return et(e,Promise)},url:function(e){if(et(e,window.URL))return!0;if(!it(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!st(new URL(t).hostname)}catch(e){return!1}},empty:st},lt=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function ct(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!ot.empty(t)&&ot.function(n)){var o=t.split(" "),l=s;lt&&(l={passive:a,capture:s}),o.forEach(function(t){i&&i.eventListeners&&r&&i.eventListeners.push({element:e,type:t,callback:n,options:l}),e[r?"addEventListener":"removeEventListener"](t,n,l)})}}function ut(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ct.call(this,e,t,n,!0,i,r)}function dt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ct.call(this,e,t,n,!1,i,r)}function ht(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ct.call(this,e,n,function s(){dt(e,n,s,r,a);for(var o=arguments.length,l=new Array(o),c=0;c1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(ot.element(e)&&!ot.empty(t)){var r=new CustomEvent(t,{bubbles:n,detail:Object.assign({},i,{plyr:this})});e.dispatchEvent(r)}}function mt(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach(function(e,n){var i=n>0?t.cloneNode(!0):t,r=e.parentNode,a=e.nextSibling;i.appendChild(e),a?r.insertBefore(i,a):r.appendChild(i)})}function ft(e,t){ot.element(e)&&!ot.empty(t)&&Object.entries(t).filter(function(e){var t=He(e,2)[1];return!ot.nullOrUndefined(t)}).forEach(function(t){var n=He(t,2),i=n[0],r=n[1];return e.setAttribute(i,r)})}function gt(e,t,n){var i=document.createElement(e);return ot.object(t)&&ft(i,t),ot.string(n)&&(i.innerText=n),i}function yt(e,t,n,i){ot.element(t)&&t.appendChild(gt(e,n,i))}function vt(e){ot.nodeList(e)||ot.array(e)?Array.from(e).forEach(vt):ot.element(e)&&ot.element(e.parentNode)&&e.parentNode.removeChild(e)}function bt(e){if(ot.element(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function kt(e,t){return ot.element(t)&&ot.element(t.parentNode)&&ot.element(e)?(t.parentNode.replaceChild(e,t),e):null}function wt(e,t){if(!ot.string(e)||ot.empty(e))return{};var n={},i=t;return e.split(",").forEach(function(e){var t=e.trim(),r=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),s=a[0],o=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":ot.object(i)&&ot.string(i.class)&&(i.class+=" ".concat(r)),n.class=r;break;case"#":n.id=t.replace("#","");break;case"[":n[s]=o}}),n}function _t(e,t){if(ot.element(e)){var n=t;ot.boolean(n)||(n=!e.hidden),n?e.setAttribute("hidden",""):e.removeAttribute("hidden")}}function Tt(e,t,n){if(ot.nodeList(e))return Array.from(e).map(function(e){return Tt(e,t,n)});if(ot.element(e)){var i="toggle";return void 0!==n&&(i=n?"add":"remove"),e.classList[i](t),e.classList.contains(t)}return!1}function Et(e,t){return ot.element(e)&&e.classList.contains(t)}function St(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function Ct(e){return this.elements.container.querySelectorAll(e)}function xt(e){return this.elements.container.querySelector(e)}function At(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];ot.element(e)&&(e.focus({preventScroll:!0}),t&&Tt(e,this.config.classNames.tabFocus))}var Pt,Ot,Mt,Nt=(Pt=document.createElement("span"),Ot={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},Mt=Object.keys(Ot).find(function(e){return void 0!==Pt.style[e]}),!!ot.string(Mt)&&Ot[Mt]);function Lt(e){setTimeout(function(){try{_t(e,!0),e.offsetHeight,_t(e,!1)}catch(e){}},0)}var It,jt={isIE:!!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},Rt={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},Dt={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var i=jt.isIPhone&&n&&Dt.playsinline,r=Dt[e]||"html5"!==t;return{api:r,ui:r&&Dt.rangeInput&&("video"!==e||!jt.isIPhone||i)}},pip:!(jt.isIPhone||!ot.function(gt("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||gt("video").disablePictureInPicture)),airplay:ot.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(ot.empty(e))return!1;var t=He(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(Rt).includes(n)&&(n+='; codecs="'.concat(Rt[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(It=document.createElement("input"),It.type="range","range"===It.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==Nt,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Ft={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter(function(t){var n=t.getAttribute("type");return!!ot.empty(n)||Dt.mime.call(e,n)}):[]},getQualityOptions:function(){return Ft.getSources.call(this).map(function(e){return Number(e.getAttribute("size"))}).filter(Boolean)},extend:function(){if(this.isHTML5){var e=this;Object.defineProperty(e.media,"quality",{get:function(){var t=Ft.getSources.call(e).find(function(t){return t.getAttribute("src")===e.source});return t&&Number(t.getAttribute("size"))},set:function(t){var n=Ft.getSources.call(e).find(function(e){return Number(e.getAttribute("size"))===t});if(n){var i=e.media,r=i.currentTime,a=i.paused,s=i.preload,o=i.readyState;e.media.src=n.getAttribute("src"),("none"!==s||o)&&(e.once("loadedmetadata",function(){e.currentTime=r,a||e.play()}),e.media.load()),pt.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(vt(Ft.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function Bt(e){return ot.array(e)?e.filter(function(t,n){return e.indexOf(t)===n}):e}function Ht(e,t){return t.split(".").reduce(function(e,t){return e&&e[t]},e)}function qt(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1"),"g"),n.toString())}function zt(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString().replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}function Wt(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString();return(e=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString();return e=Vt(e,"-"," "),e=Vt(e,"_"," "),Vt(e=zt(e)," ","")}(e)).charAt(0).toLowerCase()+e.slice(1)}function Kt(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var Xt={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},$t=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(ot.empty(e)||ot.empty(t))return"";var n=Ht(t.i18n,e);if(ot.empty(n))return Object.keys(Xt).includes(e)?Xt[e]:"";var i={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(i).forEach(function(e){var t=He(e,2),i=t[0],r=t[1];n=Vt(n,i,r)}),n},Yt=function(){function e(t){Re(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return Fe(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(ot.empty(n))return null;var i=JSON.parse(n);return ot.string(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&&ot.object(t)){var n=this.get();ot.empty(n)&&(n={}),qt(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function Jt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise(function(n,i){try{var r=new XMLHttpRequest;if(!("withCredentials"in r))return;r.addEventListener("load",function(){if("text"===t)try{n(JSON.parse(r.responseText))}catch(e){n(r.responseText)}else n(r.response)}),r.addEventListener("error",function(){throw new Error(r.status)}),r.open("GET",e,!0),r.responseType=t,r.send()}catch(e){i(e)}})}function Gt(e,t){if(ot.string(e)){var n=ot.string(t),i=function(){return null!==document.getElementById(t)},r=function(e,t){e.innerHTML=t,n&&i()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!i()){var a=Yt.supported,s=document.createElement("div");if(s.setAttribute("hidden",""),n&&s.setAttribute("id",t),a){var o=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==o){var l=JSON.parse(o);r(s,l.content)}}Jt(e).then(function(e){ot.empty(e)||(a&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),r(s,e))}).catch(function(){})}}}var Qt=function(e){return Math.trunc(e/60/60%60,10)},Zt=function(e){return Math.trunc(e/60%60,10)},en=function(e){return Math.trunc(e%60,10)};function tn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!ot.number(e))return tn(null,t,n);var i=function(e){return"0".concat(e).slice(-2)},r=Qt(e),a=Zt(e),s=en(e);return r=t||r>0?"".concat(r,":"):"","".concat(n&&e>0?"-":"").concat(r).concat(i(a),":").concat(i(s))}var nn={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||jt.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=xt.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:Ct.call(this,this.config.selectors.buttons.play),pause:xt.call(this,this.config.selectors.buttons.pause),restart:xt.call(this,this.config.selectors.buttons.restart),rewind:xt.call(this,this.config.selectors.buttons.rewind),fastForward:xt.call(this,this.config.selectors.buttons.fastForward),mute:xt.call(this,this.config.selectors.buttons.mute),pip:xt.call(this,this.config.selectors.buttons.pip),airplay:xt.call(this,this.config.selectors.buttons.airplay),settings:xt.call(this,this.config.selectors.buttons.settings),captions:xt.call(this,this.config.selectors.buttons.captions),fullscreen:xt.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=xt.call(this,this.config.selectors.progress),this.elements.inputs={seek:xt.call(this,this.config.selectors.inputs.seek),volume:xt.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:xt.call(this,this.config.selectors.display.buffer),currentTime:xt.call(this,this.config.selectors.display.currentTime),duration:xt.call(this,this.config.selectors.display.duration)},ot.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=nn.getIconUrl.call(this),i="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),r=document.createElementNS("http://www.w3.org/2000/svg","svg");ft(r,qt(t,{role:"presentation",focusable:"false"}));var a=document.createElementNS("http://www.w3.org/2000/svg","use"),s="".concat(i,"-").concat(e);return"href"in a&&a.setAttributeNS("http://www.w3.org/1999/xlink","href",s),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s),r.appendChild(a),r},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=$t(e,this.config);return gt("span",Object.assign({},t,{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")}),n)},createBadge:function(e){if(ot.empty(e))return null;var t=gt("span",{class:this.config.classNames.menu.value});return t.appendChild(gt("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=Object.assign({},t),i=Wt(e),r={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach(function(e){Object.keys(n).includes(e)&&(r[e]=n[e],delete n[e])}),"button"!==r.element||Object.keys(n).includes("type")||(n.type="button"),Object.keys(n).includes("class")?n.class.includes(this.config.classNames.control)||(n.class+=" ".concat(this.config.classNames.control)):n.class=this.config.classNames.control,e){case"play":r.toggle=!0,r.label="play",r.labelPressed="pause",r.icon="play",r.iconPressed="pause";break;case"mute":r.toggle=!0,r.label="mute",r.labelPressed="unmute",r.icon="volume",r.iconPressed="muted";break;case"captions":r.toggle=!0,r.label="enableCaptions",r.labelPressed="disableCaptions",r.icon="captions-off",r.iconPressed="captions-on";break;case"fullscreen":r.toggle=!0,r.label="enterFullscreen",r.labelPressed="exitFullscreen",r.icon="enter-fullscreen",r.iconPressed="exit-fullscreen";break;case"play-large":n.class+=" ".concat(this.config.classNames.control,"--overlaid"),i="play",r.label="play",r.icon="play";break;default:ot.empty(r.label)&&(r.label=i),ot.empty(r.icon)&&(r.icon=e)}var a=gt(r.element);return r.toggle?(a.appendChild(nn.createIcon.call(this,r.iconPressed,{class:"icon--pressed"})),a.appendChild(nn.createIcon.call(this,r.icon,{class:"icon--not-pressed"})),a.appendChild(nn.createLabel.call(this,r.labelPressed,{class:"label--pressed"})),a.appendChild(nn.createLabel.call(this,r.label,{class:"label--not-pressed"}))):(a.appendChild(nn.createIcon.call(this,r.icon)),a.appendChild(nn.createLabel.call(this,r.label))),qt(n,wt(this.config.selectors.buttons[i],n)),ft(a,n),"play"===i?(ot.array(this.elements.buttons[i])||(this.elements.buttons[i]=[]),this.elements.buttons[i].push(a)):this.elements.buttons[i]=a,a},createRange:function(e,t){var n=gt("input",qt(wt(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":$t(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,nn.updateRangeFill.call(this,n),Qe.setup(n),n},createProgress:function(e,t){var n=gt("progress",qt(wt(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(gt("span",null,"0"));var i={played:"played",buffer:"buffered"}[e],r=i?$t(i,this.config):"";n.innerText="% ".concat(r.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e){var t=wt(this.config.selectors.display[e]),n=gt("div",qt(t,{class:"".concat(this.config.classNames.display.time," ").concat(t.class?t.class:"").trim(),"aria-label":$t(e,this.config)}),"00:00");return this.elements.display[e]=n,n},bindMenuItemShortcuts:function(e,t){var n=this;ut(e,"keydown keyup",function(i){if([32,38,39,40].includes(i.which)&&(i.preventDefault(),i.stopPropagation(),"keydown"!==i.type)){var r,a=St(e,'[role="menuitemradio"]');if(!a&&[32,39].includes(i.which))nn.showMenuPanel.call(n,t,!0);else 32!==i.which&&(40===i.which||a&&39===i.which?(r=e.nextElementSibling,ot.element(r)||(r=e.parentNode.firstElementChild)):(r=e.previousElementSibling,ot.element(r)||(r=e.parentNode.lastElementChild)),At.call(n,r,!0))}},!1),ut(e,"keyup",function(e){13===e.which&&nn.focusFirstMenuItem.call(n,null,!0)})},createMenuItem:function(e){var t=this,n=e.value,i=e.list,r=e.type,a=e.title,s=e.badge,o=void 0===s?null:s,l=e.checked,c=void 0!==l&&l,u=wt(this.config.selectors.inputs[r]),d=gt("button",qt(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":c,value:n})),h=gt("span");h.innerHTML=a,ot.element(o)&&h.appendChild(o),d.appendChild(h),Object.defineProperty(d,"checked",{enumerable:!0,get:function(){return"true"===d.getAttribute("aria-checked")},set:function(e){e&&Array.from(d.parentNode.children).filter(function(e){return St(e,'[role="menuitemradio"]')}).forEach(function(e){return e.setAttribute("aria-checked","false")}),d.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(d,"click keyup",function(e){if(!ot.keyboardEvent(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),d.checked=!0,r){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}nn.showMenuPanel.call(t,"home",ot.keyboardEvent(e))}},r,!1),nn.bindMenuItemShortcuts.call(this,d,r),i.appendChild(d)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return ot.number(e)?tn(e,Qt(this.duration)>0,t):e},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];ot.element(e)&&ot.number(t)&&(e.innerText=nn.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(ot.element(this.elements.inputs.volume)&&nn.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),ot.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;ot.element(e)&&(e.value=t,nn.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&&ot.event(e)){var n,i,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=this.currentTime,i=this.duration,r=0===n||0===i||Number.isNaN(n)||Number.isNaN(i)?0:(n/i*100).toFixed(2),"timeupdate"===e.type&&nn.setRange.call(this,this.elements.inputs.seek,r);break;case"playing":case"progress":!function(e,n){var i=ot.number(n)?n:0,r=ot.element(e)?e:t.elements.display.buffer;if(ot.element(r)){r.value=i;var a=r.getElementsByTagName("span")[0];ot.element(a)&&(a.childNodes[0].nodeValue=i)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=ot.event(e)?e.target:e;if(ot.element(t)&&"range"===t.getAttribute("type")){if(St(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=nn.formatTime(this.currentTime),i=nn.formatTime(this.duration),r=$t("seekLabel",this.config);t.setAttribute("aria-valuetext",r.replace("{currentTime}",n).replace("{duration}",i))}else if(St(t,this.config.selectors.inputs.volume)){var a=100*t.value;t.setAttribute("aria-valuenow",a),t.setAttribute("aria-valuetext","".concat(a.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);jt.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&&ot.element(this.elements.inputs.seek)&&ot.element(this.elements.display.seekTooltip)&&0!==this.duration){var n=0,i=this.elements.progress.getBoundingClientRect(),r="".concat(this.config.classNames.tooltip,"--visible"),a=function(e){Tt(t.elements.display.seekTooltip,r,e)};if(this.touch)a(!1);else{if(ot.event(e))n=100/i.width*(e.pageX-i.left);else{if(!Et(this.elements.display.seekTooltip,r))return;n=parseFloat(this.elements.display.seekTooltip.style.left,10)}n<0?n=0:n>100&&(n=100),nn.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*n),this.elements.display.seekTooltip.style.left="".concat(n,"%"),ot.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&a("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!ot.element(this.elements.display.duration)&&this.config.invertTime;nn.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||nn.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return _t(this.elements.display.currentTime,!0),void _t(this.elements.progress,!0);ot.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=ot.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&nn.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&nn.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),nn.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){_t(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var i=this.elements.settings.panels[e],r=null,a=t;if("captions"===e)r=this.currentTrack;else{if(r=ot.empty(n)?this[e]:n,ot.empty(r)&&(r=this.config[e].default),!ot.empty(this.options[e])&&!this.options[e].includes(r))return void this.debug.warn("Unsupported value of '".concat(r,"' for ").concat(e));if(!this.config[e].options.includes(r))return void this.debug.warn("Disabled value of '".concat(r,"' for ").concat(e))}if(ot.element(a)||(a=i&&i.querySelector('[role="menu"]')),ot.element(a)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=nn.getLabel.call(this,e,r);var s=a&&a.querySelector('[value="'.concat(r,'"]'));ot.element(s)&&(s.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?$t("normal",this.config):"".concat(t,"×");case"quality":if(ot.number(t)){var n=$t("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return zt(t);case"captions":return sn.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(ot.element(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');ot.array(e)&&(this.options.quality=Bt(e).filter(function(e){return t.config.quality.options.includes(e)}));var i=!ot.empty(this.options.quality)&&this.options.quality.length>1;if(nn.toggleMenuButton.call(this,"quality",i),bt(n),nn.checkMenu.call(this),i){var r=function(e){var n=$t("qualityBadge.".concat(e),t.config);return n.length?nn.createBadge.call(t,n):null};this.options.quality.sort(function(e,n){var i=t.config.quality.options;return i.indexOf(e)>i.indexOf(n)?1:-1}).forEach(function(e){nn.createMenuItem.call(t,{value:e,list:n,type:"quality",title:nn.getLabel.call(t,"quality",e),badge:r(e)})}),nn.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(ot.element(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=sn.getTracks.call(this),i=Boolean(n.length);if(nn.toggleMenuButton.call(this,"captions",i),bt(t),nn.checkMenu.call(this),i){var r=n.map(function(n,i){return{value:i,checked:e.captions.toggled&&e.currentTrack===i,title:sn.getLabel.call(e,n),badge:n.language&&nn.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}});r.unshift({value:-1,checked:!this.captions.toggled,title:$t("disabled",this.config),list:t,type:"language"}),r.forEach(nn.createMenuItem.bind(this)),nn.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(e){var t=this;if(ot.element(this.elements.settings.panels.speed)){var n=this.elements.settings.panels.speed.querySelector('[role="menu"]');ot.array(e)?this.options.speed=e:(this.isHTML5||this.isVimeo)&&(this.options.speed=[.5,.75,1,1.25,1.5,1.75,2]),this.options.speed=this.options.speed.filter(function(e){return t.config.speed.options.includes(e)});var i=!ot.empty(this.options.speed)&&this.options.speed.length>1;nn.toggleMenuButton.call(this,"speed",i),bt(n),nn.checkMenu.call(this),i&&(this.options.speed.forEach(function(e){nn.createMenuItem.call(t,{value:e,list:n,type:"speed",title:nn.getLabel.call(t,"speed",e)})}),nn.updateSetting.call(this,"speed",n))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!ot.empty(e)&&Object.values(e).some(function(e){return!e.hidden});_t(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;ot.element(n)||(n=Object.values(this.elements.settings.panels).find(function(e){return!e.hidden}));var i=n.querySelector('[role^="menuitem"]');At.call(this,i,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(ot.element(t)&&ot.element(n)){var i=t.hidden,r=i;if(ot.boolean(e))r=e;else if(ot.keyboardEvent(e)&&27===e.which)r=!1;else if(ot.event(e)){var a=t.contains(e.target);if(a||!a&&e.target!==n&&r)return}n.setAttribute("aria-expanded",r),_t(t,!r),Tt(this.elements.container,this.config.classNames.menu.open,r),r&&ot.keyboardEvent(e)?nn.focusFirstMenuItem.call(this,null,!0):r||i||At.call(this,n,ot.keyboardEvent(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,i=t.scrollHeight;return vt(t),{width:n,height:i}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=document.getElementById("plyr-settings-".concat(this.id,"-").concat(t));if(ot.element(i)){var r=i.parentNode,a=Array.from(r.children).find(function(e){return!e.hidden});if(Dt.transitions&&!Dt.reducedMotion){r.style.width="".concat(a.scrollWidth,"px"),r.style.height="".concat(a.scrollHeight,"px");var s=nn.getMenuSize.call(this,i);ut.call(this,r,Nt,function t(n){n.target===r&&["width","height"].includes(n.propertyName)&&(r.style.width="",r.style.height="",dt.call(e,r,Nt,t))}),r.style.width="".concat(s.width,"px"),r.style.height="".concat(s.height,"px")}_t(a,!0),_t(i,!1),nn.focusFirstMenuItem.call(this,i,n)}},setDownloadLink:function(){var e=this.elements.buttons.download;ot.element(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=gt("div",wt(this.config.selectors.controls.wrapper));if(this.config.controls.includes("restart")&&n.appendChild(nn.createButton.call(this,"restart")),this.config.controls.includes("rewind")&&n.appendChild(nn.createButton.call(this,"rewind")),this.config.controls.includes("play")&&n.appendChild(nn.createButton.call(this,"play")),this.config.controls.includes("fast-forward")&&n.appendChild(nn.createButton.call(this,"fast-forward")),this.config.controls.includes("progress")){var i=gt("div",wt(this.config.selectors.progress));if(i.appendChild(nn.createRange.call(this,"seek",{id:"plyr-seek-".concat(e.id)})),i.appendChild(nn.createProgress.call(this,"buffer")),this.config.tooltips.seek){var r=gt("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(r),this.elements.display.seekTooltip=r}this.elements.progress=i,n.appendChild(this.elements.progress)}if(this.config.controls.includes("current-time")&&n.appendChild(nn.createTime.call(this,"currentTime")),this.config.controls.includes("duration")&&n.appendChild(nn.createTime.call(this,"duration")),this.config.controls.includes("mute")||this.config.controls.includes("volume")){var a=gt("div",{class:"plyr__volume"});if(this.config.controls.includes("mute")&&a.appendChild(nn.createButton.call(this,"mute")),this.config.controls.includes("volume")){var s={max:1,step:.05,value:this.config.volume};a.appendChild(nn.createRange.call(this,"volume",qt(s,{id:"plyr-volume-".concat(e.id)}))),this.elements.volume=a}n.appendChild(a)}if(this.config.controls.includes("captions")&&n.appendChild(nn.createButton.call(this,"captions")),this.config.controls.includes("settings")&&!ot.empty(this.config.settings)){var o=gt("div",{class:"plyr__menu",hidden:""});o.appendChild(nn.createButton.call(this,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var l=gt("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),c=gt("div"),u=gt("div",{id:"plyr-settings-".concat(e.id,"-home")}),d=gt("div",{role:"menu"});u.appendChild(d),c.appendChild(u),this.elements.settings.panels.home=u,this.config.settings.forEach(function(n){var i=gt("button",qt(wt(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));nn.bindMenuItemShortcuts.call(t,i,n),ut(i,"click",function(){nn.showMenuPanel.call(t,n,!1)});var r=gt("span",null,$t(n,t.config)),a=gt("span",{class:t.config.classNames.menu.value});a.innerHTML=e[n],r.appendChild(a),i.appendChild(r),d.appendChild(i);var s=gt("div",{id:"plyr-settings-".concat(e.id,"-").concat(n),hidden:""}),o=gt("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});o.appendChild(gt("span",{"aria-hidden":!0},$t(n,t.config))),o.appendChild(gt("span",{class:t.config.classNames.hidden},$t("menuBack",t.config))),ut(s,"keydown",function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),nn.showMenuPanel.call(t,"home",!0))},!1),ut(o,"click",function(){nn.showMenuPanel.call(t,"home",!1)}),s.appendChild(o),s.appendChild(gt("div",{role:"menu"})),c.appendChild(s),t.elements.settings.buttons[n]=i,t.elements.settings.panels[n]=s}),l.appendChild(c),o.appendChild(l),n.appendChild(o),this.elements.settings.popup=l,this.elements.settings.menu=o}if(this.config.controls.includes("pip")&&Dt.pip&&n.appendChild(nn.createButton.call(this,"pip")),this.config.controls.includes("airplay")&&Dt.airplay&&n.appendChild(nn.createButton.call(this,"airplay")),this.config.controls.includes("download")){var h={element:"a",href:this.download,target:"_blank"},p=this.config.urls.download;!ot.url(p)&&this.isEmbed&&qt(h,{icon:"logo-".concat(this.provider),label:this.provider}),n.appendChild(nn.createButton.call(this,"download",h))}return this.config.controls.includes("fullscreen")&&n.appendChild(nn.createButton.call(this,"fullscreen")),this.config.controls.includes("play-large")&&this.elements.container.appendChild(nn.createButton.call(this,"play-large")),this.elements.controls=n,this.isHTML5&&nn.setQualityMenu.call(this,Ft.getQualityOptions.call(this)),nn.setSpeedMenu.call(this),n},inject:function(){var e=this;if(this.config.loadSprite){var t=nn.getIconUrl.call(this);t.cors&&Gt(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var i={id:this.id,seektime:this.config.seekTime,title:this.config.title},r=!0;ot.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,i)),this.config.controls||(this.config.controls=[]),ot.element(this.config.controls)||ot.string(this.config.controls)?n=this.config.controls:(n=nn.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:sn.getLabel.call(this)}),r=!1);var a,s=function(e){var t=e;return Object.entries(i).forEach(function(e){var n=He(e,2),i=n[0],r=n[1];t=Vt(t,"{".concat(i,"}"),r)}),t};if(r&&(ot.string(this.config.controls)?n=s(n):ot.element(n)&&(n.innerHTML=s(n.innerHTML))),ot.string(this.config.selectors.controls.container)&&(a=document.querySelector(this.config.selectors.controls.container)),ot.element(a)||(a=this.elements.container),a[ot.element(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),ot.element(this.elements.controls)||nn.findElements.call(this),!ot.empty(this.elements.buttons)){var o=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return Et(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Tt(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach(function(e){ot.array(e)||ot.nodeList(e)?Array.from(e).filter(Boolean).forEach(o):o(e)})}if(jt.isEdge&&Lt(a),this.config.tooltips.controls){var l=this.config,c=l.classNames,u=l.selectors,d="".concat(u.controls.wrapper," ").concat(u.labels," .").concat(c.hidden),h=Ct.call(this,d);Array.from(h).forEach(function(t){Tt(t,e.config.classNames.hidden,!1),Tt(t,e.config.classNames.tooltip,!0)})}}};function rn(e){var t=e;if(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]){var n=document.createElement("a");n.href=t,t=n.href}try{return new URL(t)}catch(e){return null}}function an(e){var t=new URLSearchParams;return ot.object(e)&&Object.entries(e).forEach(function(e){var n=He(e,2),i=n[0],r=n[1];t.set(i,r)}),t}var sn={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!Dt.textTracks)ot.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&nn.setCaptionsMenu.call(this);else{var e,t;if(ot.element(this.elements.captions)||(this.elements.captions=gt("div",wt(this.config.selectors.captions)),e=this.elements.captions,t=this.elements.wrapper,ot.element(e)&&ot.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)),jt.isIE&&window.URL){var n=this.media.querySelectorAll("track");Array.from(n).forEach(function(e){var t=e.getAttribute("src"),n=rn(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&Jt(t,"blob").then(function(t){e.setAttribute("src",window.URL.createObjectURL(t))}).catch(function(){vt(e)})})}var i=Bt((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map(function(e){return e.split("-")[0]})),r=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===r)r=He(i,1)[0];var a=this.storage.get("captions");if(ot.boolean(a)||(a=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:a,language:r,languages:i}),this.isHTML5){var s=this.config.captions.update?"addtrack removetrack":"removetrack";ut.call(this,this.media.textTracks,s,sn.update.bind(this))}setTimeout(sn.update.bind(this),0)}},update:function(){var e=this,t=sn.getTracks.call(this,!0),n=this.captions,i=n.active,r=n.language,a=n.meta,s=n.currentTrackNode,o=Boolean(t.find(function(e){return e.language===r}));this.isHTML5&&this.isVideo&&t.filter(function(e){return!a.get(e)}).forEach(function(t){e.debug.log("Track added",t),a.set(t,{default:"showing"===t.mode}),t.mode="hidden",ut.call(e,t,"cuechange",function(){return sn.updateCues.call(e)})}),(o&&this.language!==r||!t.includes(s))&&(sn.setLanguage.call(this,r),sn.toggle.call(this,i&&o)),Tt(this.elements.container,this.config.classNames.captions.enabled,!ot.empty(t)),(this.config.controls||[]).includes("settings")&&this.config.settings.includes("captions")&&nn.setCaptionsMenu.call(this)},toggle:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var n=this.captions.toggled,i=this.config.classNames.captions.active,r=ot.nullOrUndefined(e)?!n:e;if(r!==n){if(t||(this.captions.active=r,this.storage.set({captions:r})),!this.language&&r&&!t){var a=sn.getTracks.call(this),s=sn.findTrack.call(this,[this.captions.language].concat(qe(this.captions.languages)),!0);return this.captions.language=s.language,void sn.set.call(this,a.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=r),Tt(this.elements.container,i,r),this.captions.toggled=r,nn.updateSetting.call(this,"captions"),pt.call(this,this.media,r?"captionsenabled":"captionsdisabled")}}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=sn.getTracks.call(this);if(-1!==e)if(ot.number(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var i=n[e],r=(i||{}).language;this.captions.currentTrackNode=i,nn.updateSetting.call(this,"captions"),t||(this.captions.language=r,this.storage.set({language:r})),this.isVimeo&&this.embed.enableTextTrack(r),pt.call(this,this.media,"languagechange")}sn.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&sn.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else sn.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(ot.string(e)){var n=e.toLowerCase();this.captions.language=n;var i=sn.getTracks.call(this),r=sn.findTrack.call(this,[n]);sn.set.call(this,i.indexOf(r),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Array.from((this.media||{}).textTracks||[]).filter(function(n){return!e.isHTML5||t||e.captions.meta.has(n)}).filter(function(e){return["captions","subtitles"].includes(e.kind)})},findTrack:function(e){var t,n=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=sn.getTracks.call(this),a=function(e){return Number((n.captions.meta.get(e)||{}).default)},s=Array.from(r).sort(function(e,t){return a(t)-a(e)});return e.every(function(e){return!(t=s.find(function(t){return t.language===e}))}),t||(i?s[0]:void 0)},getCurrentTrack:function(){return sn.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!ot.track(t)&&Dt.textTracks&&this.captions.toggled&&(t=sn.getCurrentTrack.call(this)),ot.track(t)?ot.empty(t.label)?ot.empty(t.language)?$t("enabled",this.config):e.language.toUpperCase():t.label:$t("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(ot.element(this.elements.captions))if(ot.nullOrUndefined(e)||Array.isArray(e)){var t=e;if(!t){var n=sn.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map(function(e){return e.getCueAsHTML()}).map(Kt)}var i=t.map(function(e){return e.trim()}).join("\n");if(i!==this.elements.captions.innerHTML){bt(this.elements.captions);var r=gt("span",wt(this.config.selectors.caption));r.innerHTML=i,this.elements.captions.appendChild(r),pt.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},on={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:"16:9",clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.5.0-beta.4/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240]},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://www.googleapis.com/youtube/v3/videos?id={0}&key={1}&fields=items(snippet(title))&part=snippet"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption",menu:{quality:".js-plyr__menu__list--quality"}},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},keys:{google:null},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1},youtube:{noCookie:!1,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},ln="picture-in-picture",cn="inline",un={html5:"html5",youtube:"youtube",vimeo:"vimeo"},dn={audio:"audio",video:"video"};var hn=function(){},pn=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Re(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return Fe(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):hn}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):hn}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):hn}}]),e}();function mn(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;ot.element(e)&&(e.pressed=this.active),pt.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0),jt.isIos||function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(ot.element(e)){var n=Ct.call(this,"button:not(:disabled), input:not(:disabled), [tabindex]"),i=n[0],r=n[n.length-1];ct.call(this,this.elements.container,"keydown",function(e){if("Tab"===e.key&&9===e.keyCode){var t=document.activeElement;t!==r||e.shiftKey?t===i&&e.shiftKey&&(r.focus(),e.preventDefault()):(i.focus(),e.preventDefault())}},t,!1)}}.call(this.player,this.target,this.active)}}function fn(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(t?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=t?"hidden":"",Tt(this.target,this.player.config.classNames.fullscreen.fallback,t),jt.isIos){var n=document.head.querySelector('meta[name="viewport"]'),i="viewport-fit=cover";n||(n=document.createElement("meta")).setAttribute("name","viewport");var r=ot.string(n.content)&&n.content.includes(i);t?(this.cleanupViewport=!r,r||(n.content+=",".concat(i))):this.cleanupViewport&&(n.content=n.content.split(",").filter(function(e){return e.trim()!==i}).join(",")),setTimeout(function(){return Lt(e.target)},100)}mn.call(this)}var gn=function(){function e(t){var n=this;Re(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,ut.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),function(){mn.call(n)}),ut.call(this.player,this.player.elements.container,"dblclick",function(e){ot.element(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()}),this.update()}return Fe(e,[{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");Tt(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(jt.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?fn.call(this,!0):this.prefix?ot.empty(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen())}},{key:"exit",value:function(){if(this.enabled)if(jt.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),this.player.play();else if(!e.native||this.forceFallback)fn.call(this,!1);else if(this.prefix){if(!ot.empty(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){return!!this.enabled&&(!e.native||this.forceFallback?Et(this.target,this.player.config.classNames.fullscreen.fallback):(this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement)===this.target)}},{key:"target",get:function(){return jt.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(ot.function(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some(function(t){return!(!ot.function(document["".concat(t,"ExitFullscreen")])&&!ot.function(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)}),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}();function yn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise(function(n,i){var r=new Image,a=function(){delete r.onload,delete r.onerror,(r.naturalWidth>=t?n:i)(r)};Object.assign(r,{onload:a,onerror:a,src:e})})}var vn={addStyleHook:function(){Tt(this.elements.container,this.config.selectors.container.replace(".",""),!0),Tt(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void vn.toggleNativeControls.call(this,!0);ot.element(this.elements.controls)||(nn.inject.call(this),this.listeners.controls()),vn.toggleNativeControls.call(this),this.isHTML5&&sn.setup.call(this),this.volume=null,this.muted=null,this.speed=null,this.loop=null,this.quality=null,nn.updateVolume.call(this),nn.timeUpdate.call(this),vn.checkPlaying.call(this),Tt(this.elements.container,this.config.classNames.pip.supported,Dt.pip&&this.isHTML5&&this.isVideo),Tt(this.elements.container,this.config.classNames.airplay.supported,Dt.airplay&&this.isHTML5),Tt(this.elements.container,this.config.classNames.isIos,jt.isIos),Tt(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout(function(){pt.call(e,e.media,"ready")},0),vn.setTitle.call(this),this.poster&&vn.setPoster.call(this,this.poster,!1).catch(function(){}),this.config.duration&&nn.durationUpdate.call(this)},setTitle:function(){var e=$t("play",this.config);if(ot.string(this.config.title)&&!ot.empty(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach(function(t){t.setAttribute("aria-label",e)}),this.isEmbed){var t=xt.call(this,"iframe");if(!ot.element(t))return;var n=ot.empty(this.config.title)?"video":this.config.title,i=$t("frameTitle",this.config);t.setAttribute("title",i.replace("{title}",n))}},togglePoster:function(e){Tt(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this;return arguments.length>1&&void 0!==arguments[1]&&!arguments[1]||!this.poster?(this.media.setAttribute("poster",e),function(){var e=this;return new Promise(function(t){return e.ready?setTimeout(t,0):ut.call(e,e.elements.container,"ready",t)}).then(function(){})}.call(this).then(function(){return yn(e)}).catch(function(n){throw e===t.poster&&vn.togglePoster.call(t,!1),n}).then(function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")}).then(function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),vn.togglePoster.call(t,!0),e})):Promise.reject(new Error("Poster already set"))},checkPlaying:function(e){var t=this;Tt(this.elements.container,this.config.classNames.playing,this.playing),Tt(this.elements.container,this.config.classNames.paused,this.paused),Tt(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach(function(e){e.pressed=t.playing}),ot.event(e)&&"timeupdate"===e.type||vn.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout(function(){Tt(t.elements.container,t.config.classNames.loading,t.loading),vn.toggleControls.call(t)},this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}}};function bn(e){var t=e;ot.string(t)||ot.nullOrUndefined(this.embed)||(t=this.embed.ratio),ot.string(t)||(t=this.config.ratio);var n=He(t.split(":").map(Number),2),i=100/n[0]*n[1];if(this.elements.wrapper.style.paddingBottom="".concat(i,"%"),this.isVimeo&&this.supported.ui){var r=(240-i)/4.8;this.media.style.transform="translateY(-".concat(r,"%)")}return{padding:i,ratio:t}}var kn=function(){function e(t){Re(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return Fe(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,i=e.keyCode?e.keyCode:e.which,r="keydown"===e.type,a=r&&i===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&&ot.number(i)){if(r){var s=document.activeElement;if(ot.element(s)){var o=t.config.selectors.editable;if(s!==n.inputs.seek&&St(s,o))return;if(32===e.which&&St(s,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(i)&&(e.preventDefault(),e.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(t.currentTime=t.duration/10*(i-48));break;case 32:case 75:a||t.togglePlay();break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:a||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:a||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===i&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=i}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){nn.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,Tt(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var i,r=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||r)i=t.config.classNames.tabFocus,Tt(Ct.call(t,".".concat(i)),i,!1),this.focusTimer=setTimeout(function(){var e=document.activeElement;n.container.contains(e)&&Tt(document.activeElement,t.config.classNames.tabFocus,!0)},10)}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&ct.call(t,window,"keydown keyup",this.handleKey,e,!1),ct.call(t,document.body,"click",this.toggleMenu,e),ht.call(t,document.body,"touchstart",this.firstTouch),ct.call(t,document.body,"keydown focus blur",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,i=e.timers;!t.keyboard.global&&t.keyboard.focused&&ut.call(e,n.container,"keydown keyup",this.handleKey,!1),ut.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",function(t){var r=n.controls;r&&"enterfullscreen"===t.type&&(r.pressed=!1,r.hover=!1);var a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&(vn.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(i.controls),i.controls=setTimeout(function(){return vn.toggleControls.call(e,!1)},a)});var r=function(t){if(!t)return bn.call(e);var i=n.container.getBoundingClientRect(),r=i.width,a=i.height;return bn.call(e,"".concat(r,":").concat(a))},a=function(){window.clearTimeout(i.resized),i.resized=window.setTimeout(r,50)};ut.call(e,n.container,"enterfullscreen exitfullscreen",function(t){var i=e.fullscreen,s=i.target,o=i.usingNative;if(e.isEmbed&&s===n.container){var l="enterfullscreen"===t.type,c=r(l);c.padding;!function(t,n,i){if(e.isVimeo){var r=e.elements.wrapper.firstChild,a=He(t.split(":").map(Number),2)[1],s=He(e.embed.ratio.split(":").map(Number),2),o=s[0],l=s[1];r.style.maxWidth=i?"".concat(a/l*o,"px"):null,r.style.margin=i?"0 auto":null}}(c.ratio,0,l),o||(l?ut.call(e,window,"resize",a):dt.call(e,window,"resize",a))}})}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(ut.call(t,t.media,"timeupdate seeking seeked",function(e){return nn.timeUpdate.call(t,e)}),ut.call(t,t.media,"durationchange loadeddata loadedmetadata",function(e){return nn.durationUpdate.call(t,e)}),ut.call(t,t.media,"canplay loadeddata",function(){_t(n.volume,!t.hasAudio),_t(n.buttons.mute,!t.hasAudio)}),ut.call(t,t.media,"ended",function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&t.restart()}),ut.call(t,t.media,"progress playing seeking seeked",function(e){return nn.updateProgress.call(t,e)}),ut.call(t,t.media,"volumechange",function(e){return nn.updateVolume.call(t,e)}),ut.call(t,t.media,"playing play pause ended emptied timeupdate",function(e){return vn.checkPlaying.call(t,e)}),ut.call(t,t.media,"waiting canplay seeked playing",function(e){return vn.checkLoading.call(t,e)}),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var i=xt.call(t,".".concat(t.config.classNames.video));if(!ot.element(i))return;ut.call(t,n.container,"click",function(r){([n.container,i].includes(r.target)||i.contains(r.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(r,t.restart,"restart"),e.proxy(r,t.play,"play")):e.proxy(r,t.togglePlay,"play")))})}t.supported.ui&&t.config.disableContextMenu&&ut.call(t,n.wrapper,"contextmenu",function(e){e.preventDefault()},!1),ut.call(t,t.media,"volumechange",function(){t.storage.set({volume:t.volume,muted:t.muted})}),ut.call(t,t.media,"ratechange",function(){nn.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})}),ut.call(t,t.media,"qualitychange",function(e){nn.updateSetting.call(t,"quality",null,e.detail.quality)}),ut.call(t,t.media,"ready qualitychange",function(){nn.setDownloadLink.call(t)});var r=t.config.events.concat(["keyup","keydown"]).join(" ");ut.call(t,t.media,r,function(e){var i=e.detail,r=void 0===i?{}:i;"error"===e.type&&(r=t.media.error),pt.call(t,n.container,e.type,!0,r)})}},{key:"proxy",value:function(e,t,n){var i=this.player,r=i.config.listeners[n],a=!0;ot.function(r)&&(a=r.call(i,e)),a&&ot.function(t)&&t.call(i,e)}},{key:"bind",value:function(e,t,n,i){var r=this,a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=this.player,o=s.config.listeners[i],l=ot.function(o);ut.call(s,e,t,function(e){return r.proxy(e,n,i)},a&&!l)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,i=jt.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach(function(n){e.bind(n,"click",t.togglePlay,"play")}),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",function(){t.muted=!t.muted},"mute"),this.bind(n.buttons.captions,"click",function(){return t.toggleCaptions()}),this.bind(n.buttons.download,"click",function(){pt.call(t,t.media,"download")},"download"),this.bind(n.buttons.fullscreen,"click",function(){t.fullscreen.toggle()},"fullscreen"),this.bind(n.buttons.pip,"click",function(){t.pip="toggle"},"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",function(e){e.stopPropagation(),nn.toggleMenu.call(t,e)}),this.bind(n.buttons.settings,"keyup",function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),nn.toggleMenu.call(t,e)):nn.focusFirstMenuItem.call(t,null,!0))},null,!1),this.bind(n.settings.menu,"keydown",function(e){27===e.which&&nn.toggleMenu.call(t,e)}),this.bind(n.inputs.seek,"mousedown mousemove",function(e){var t=n.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",i)}),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",function(e){var n=e.currentTarget,i=e.keyCode?e.keyCode:e.which;if(!ot.keyboardEvent(e)||39===i||37===i){t.lastSeekTime=Date.now();var r=n.hasAttribute("play-on-seeked"),a=["mouseup","touchend","keyup"].includes(e.type);r&&a?(n.removeAttribute("play-on-seeked"),t.play()):!a&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}}),jt.isIos){var r=Ct.call(t,'input[type="range"]');Array.from(r).forEach(function(t){return e.bind(t,i,function(e){return Lt(e.target)})})}this.bind(n.inputs.seek,i,function(e){var n=e.currentTarget,i=n.getAttribute("seek-value");ot.empty(i)&&(i=n.value),n.removeAttribute("seek-value"),t.currentTime=i/n.max*t.duration},"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",function(e){return nn.updateSeekTooltip.call(t,e)}),this.bind(n.progress,"mousemove touchmove",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)}),this.bind(n.progress,"mouseleave click",function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)}),this.bind(n.progress,"mousedown touchstart",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)}),this.bind(n.progress,"mouseup touchend",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)}),jt.isWebkit&&Array.from(Ct.call(t,'input[type="range"]')).forEach(function(n){e.bind(n,"input",function(e){return nn.updateRangeFill.call(t,e.target)})}),t.config.toggleInvert&&!ot.element(n.display.duration)&&this.bind(n.display.currentTime,"click",function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,nn.timeUpdate.call(t))}),this.bind(n.inputs.volume,i,function(e){t.volume=e.target.value},"volume"),this.bind(n.controls,"mouseenter mouseleave",function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)}),this.bind(n.controls,"focusin",function(){var n=t.config,i=t.elements,r=t.timers;Tt(i.controls,n.classNames.noTransition,!0),vn.toggleControls.call(t,!0),setTimeout(function(){Tt(i.controls,n.classNames.noTransition,!1)},0);var a=e.touch?3e3:4e3;clearTimeout(r.controls),r.controls=setTimeout(function(){return vn.toggleControls.call(t,!1)},a)}),this.bind(n.inputs.volume,"wheel",function(e){var n=e.webkitDirectionInvertedFromDevice,i=He([e.deltaX,-e.deltaY].map(function(e){return n?-e:e}),2),r=i[0],a=i[1],s=Math.sign(Math.abs(r)>Math.abs(a)?r:a);t.increaseVolume(s/50);var o=t.media.volume;(1===s&&o<1||-1===s&&o>0)&&e.preventDefault()},"volume",!1)}}]),e}(),wn=t(function(e,t){e.exports=function(){var e=function(){},t={},n={},i={};function r(e,t){if(e){var r=i[e];if(n[e]=t,r)for(;r.length;)r[0](e,t),r.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function s(t,n,i,r){var a,o,l=document,c=i.async,u=(i.numRetries||0)+1,d=i.before||e,h=t.replace(/^(css|img)!/,"");r=r||0,/(^css!|\.css$)/.test(t)?(a=!0,(o=l.createElement("link")).rel="stylesheet",o.href=h):/(^img!|\.(png|gif|jpg|svg)$)/.test(t)?(o=l.createElement("img")).src=h:((o=l.createElement("script")).src=t,o.async=void 0===c||c),o.onload=o.onerror=o.onbeforeload=function(e){var l=e.type[0];if(a&&"hideFocus"in o)try{o.sheet.cssText.length||(l="e")}catch(e){18!=e.code&&(l="e")}if("e"==l&&(r+=1)0&&void 0!==arguments[0]&&arguments[0]))return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");this.countdownTimer=setInterval(function(){var t=tn(Math.max(e.manager.getRemainingTime(),0)),n="".concat($t("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)},100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.setVolume(this.player.volume),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,function(e){return t.onAdError(e)}),Object.keys(google.ima.AdEvent.Type).forEach(function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],function(e){return t.onAdEvent(e)})}),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;ot.empty(this.cuePoints)||this.cuePoints.forEach(function(t){if(0!==t&&-1!==t&&t1?n-1:0),r=1;r ?)([0-9]{2}):([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);a&&(t.startTime=60*Number(a[1])*60+60*Number(a[2])+Number(a[3])+Number("0.".concat(a[4])),t.endTime=60*Number(a[6])*60+60*Number(a[7])+Number(a[8])+Number("0.".concat(a[9])))}}),t.text&&a.push(t)}),a),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var o=new Image;o.onload=function(){s.height=o.naturalHeight,s.width=o.naturalWidth,t.thumbnails.push(s),n()},o.src=s.urlPrefix+s.frames[0].text})})}},{key:"startMove",value:function(e){if(this.loaded&&ot.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=tn(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){!1!==e.button&&0!==e.button||(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):ht.call(this.player,this.player.media,"timeupdate",function(){e.mouseDown||e.toggleScrubbingContainer(!1)})}},{key:"listeners",value:function(){var e=this;this.player.on("play",function(){e.toggleThumbContainer(!1,!0)}),this.player.on("seeked",function(){e.toggleThumbContainer(!1)}),this.player.on("timeupdate",function(){e.lastTime=e.player.media.currentTime})}},{key:"render",value:function(){this.elements.thumb.container=gt("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=gt("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=gt("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=gt("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=gt("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():(this.toggleThumbContainer(!0),this.setThumbContainerSizeAndPos());var t=this.thumbnails[0].frames.findIndex(function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime}),n=t>=0,i=0;this.toggleThumbContainer(n),n&&(this.thumbnails.forEach(function(n,r){e.loadedImages.includes(n.frames[t].text)&&(i=r)}),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(i)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,i=this.thumbnails[t],r=i.urlPrefix,a=i.frames[n],s=i.frames[n].text,o=r+s;if(this.currentImageElement&&this.currentImageElement.dataset.filename===s)this.showImage(this.currentImageElement,a,t,n,s,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var l=new Image;l.src=o,l.dataset.index=n,l.dataset.filename=s,this.showingThumbFilename=s,this.player.debug.log("Loading image: ".concat(o)),l.onload=function(){return e.showImage(l,a,t,n,s,!0)},this.loadingImage=l,this.removeOldImages(l)}}},{key:"showImage",value:function(e,t,n,i,r){var a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(r,". num: ").concat(i,". qual: ").concat(n,". newimg: ").concat(a)),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(r)||this.loadedImages.push(r)),this.preloadNearby(i,!0).then(this.preloadNearby(i,!1)).then(this.getHigherQuality(n,e,t,r))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach(function(n){if("img"===n.tagName.toLowerCase()){var i=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var r=t.currentImageContainer;setTimeout(function(){r.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))},i)}}})}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise(function(i){setTimeout(function(){var r=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===r){var a;a=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var s=!1;a.forEach(function(e){var n=e.text;if(n!==r&&!t.loadedImages.includes(n)){s=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var a=t.thumbnails[0].urlPrefix+n,o=new Image;o.src=a,o.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),i()}}}),s||i()}},300)})}},{key:"getHigherQuality",value:function(e,t,n,i){var r=this;if(e0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){this.elements.thumb.imageContainer.clientHeight>20&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(!this.sizeSpecifiedInCSS){var e=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(e,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,i=t.left-e.left+10,r=t.right-e.left-n.clientWidth-10,a=this.mousePosX-e.left-n.clientWidth/2;ar&&(a=r),n.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){this.elements.scrubbing.container.style.width="".concat(this.player.media.clientWidth,"px"),this.elements.scrubbing.container.style.height="".concat(this.player.media.clientWidth/this.thumbAspectRatio,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(Math.floor(e.naturalHeight*n),"px"),e.style.width="".concat(Math.floor(e.naturalWidth*n),"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?Math.floor(this.player.media.clientWidth/this.thumbAspectRatio):Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),Ln={insertElements:function(e,t){var n=this;ot.string(t)?yt(e,this.media,{src:t}):ot.array(t)&&t.forEach(function(t){yt(e,n.media,t)})},change:function(e){var t=this;Ht(e,"sources.length")?(Ft.cancelRequests.call(this),this.destroy.call(this,function(){t.options.quality=[],vt(t.media),t.media=null,ot.element(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,i=e.type,r=He(n,1)[0],a=r.provider,s=void 0===a?un.html5:a,o=r.src,l="html5"===s?i:"div",c="html5"===s?{}:{src:o};Object.assign(t,{provider:s,type:i,supported:Dt.check(i,s,t.config.playsinline),media:gt(l,c)}),t.elements.container.appendChild(t.media),ot.boolean(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),ot.empty(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),vn.addStyleHook.call(t),t.isHTML5&&Ln.insertElements.call(t,"source",n),t.config.title=e.title,On.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&Ln.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&vn.build.call(t),t.isHTML5&&t.media.load(),t.previewThumbnails&&t.previewThumbnails.load(),t.fullscreen.update()},!0)):this.debug.warn("Invalid source format")}},In=function(){function e(t,n){var i=this;if(Re(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=Dt.touch,this.media=t,ot.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||ot.nodeList(this.media)||ot.array(this.media))&&(this.media=this.media[0]),this.config=qt({},on,e.defaults,n||{},function(){try{return JSON.parse(i.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new pn(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",Dt),!ot.nullOrUndefined(this.media)&&ot.element(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(Dt.check().api){var r=this.media.cloneNode(!0);r.autoplay=!1,this.elements.original=r;var a=this.media.tagName.toLowerCase(),s=null,o=null;switch(a){case"div":if(s=this.media.querySelector("iframe"),ot.element(s)){if(o=rn(s.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?un.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?un.vimeo:null}(o.toString()),this.elements.container=this.media,this.media=s,this.elements.container.className="",o.search.length){var l=["1","true"];l.includes(o.searchParams.get("autoplay"))&&(this.config.autoplay=!0),l.includes(o.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=l.includes(o.searchParams.get("playsinline")),this.config.youtube.hl=o.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(ot.empty(this.provider)||!Object.keys(un).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=dn.video;break;case"video":case"audio":this.type=a,this.provider=un.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=Dt.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new kn(this),this.storage=new Yt(this),this.media.plyr=this,ot.element(this.elements.container)||(this.elements.container=gt("div",{tabindex:0}),mt(this.media,this.elements.container)),vn.addStyleHook.call(this),On.setup.call(this),this.config.debug&&ut.call(this,this.elements.container,this.config.events.join(" "),function(e){i.debug.log("event: ".concat(e.type))}),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&vn.build.call(this),this.listeners.container(),this.listeners.global(),this.fullscreen=new gn(this),this.config.ads.enabled&&(this.ads=new Mn(this)),this.config.autoplay&&this.play(),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Nn(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return Fe(e,[{key:"play",value:function(){var e=this;return ot.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then(function(){return e.ads.play()}).catch(function(){return e.media.play()}),this.media.play()):null}},{key:"pause",value:function(){this.playing&&ot.function(this.media.pause)&&this.media.pause()}},{key:"togglePlay",value:function(e){(ot.boolean(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):ot.function(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime=this.currentTime-(ot.number(e)?e:this.config.seekTime)}},{key:"forward",value:function(e){this.currentTime=this.currentTime+(ot.number(e)?e:this.config.seekTime)}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(ot.number(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){sn.toggle.call(this,e,!1)}},{key:"airplay",value:function(){Dt.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=Et(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,i=Tt(this.elements.container,this.config.classNames.hideControls,n);if(i&&this.config.controls.includes("settings")&&!ot.empty(this.config.settings)&&nn.toggleMenu.call(this,!1),i!==t){var r=i?"controlshidden":"controlsshown";pt.call(this,this.media,r)}return!i}return!1}},{key:"on",value:function(e,t){ut.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){ht.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){dt(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var i=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(vt(t.elements.buttons.play),vt(t.elements.captions),vt(t.elements.controls),vt(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),ot.function(e)&&e()):(function(){this&&this.eventListeners&&(this.eventListeners.forEach(function(e){var t=e.element,n=e.type,i=e.callback,r=e.options;t.removeEventListener(n,i,r)}),this.eventListeners=[])}.call(t),kt(t.elements.original,t.elements.container),pt.call(t,t.elements.original,"destroyed",!0),ot.function(e)&&e.call(t.elements.original),t.ready=!1,setTimeout(function(){t.elements=null,t.media=null},200))};this.stop(),this.isHTML5?(clearTimeout(this.timers.loading),vn.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&ot.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}}},{key:"supports",value:function(e){return Dt.mime.call(this,e)}},{key:"isHTML5",get:function(){return Boolean(this.provider===un.html5)}},{key:"isEmbed",get:function(){return Boolean(this.isYouTube||this.isVimeo)}},{key:"isYouTube",get:function(){return Boolean(this.provider===un.youtube)}},{key:"isVimeo",get:function(){return Boolean(this.provider===un.vimeo)}},{key:"isVideo",get:function(){return Boolean(this.type===dn.video)}},{key:"isAudio",get:function(){return Boolean(this.type===dn.audio)}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=ot.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return ot.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=ot.number(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;ot.string(t)&&(t=Number(t)),ot.number(t)||(t=this.storage.get("volume")),ot.number(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!ot.empty(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;ot.boolean(t)||(t=this.storage.get("muted")),ot.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=null;ot.number(e)&&(t=e),ot.number(t)||(t=this.storage.get("speed")),ot.number(t)||(t=this.config.speed.selected),t<.1&&(t=.1),t>2&&(t=2),this.config.speed.options.includes(t)?(this.config.speed.selected=t,this.media.playbackRate=t):this.debug.warn("Unsupported speed (".concat(t,")"))},get:function(){return Number(this.media.playbackRate)}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var i=[!ot.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(ot.number),r=!0;if(!n.includes(i)){var a=function(e,t){return ot.array(e)&&e.length?e.reduce(function(e,n){return Math.abs(n-t)1&&void 0!==arguments[1]?arguments[1]:{},i=null;return ot.string(t)?i=Array.from(document.querySelectorAll(t)):ot.nodeList(t)?i=Array.from(t):ot.array(t)&&(i=t.filter(ot.element)),ot.empty(i)?null:i.map(function(t){return new e(t,n)})}}]),e}();In.defaults=(Cn=on,JSON.parse(JSON.stringify(Cn))),xn=window.location.host,An={prod:"plyr.io"===xn,dev:"dev.plyr.io"===xn},document.addEventListener("DOMContentLoaded",function(){Ie.context(function(){var e=document.getElementById("container");window.Shr&&window.Shr.setup(".js-shr-button",{count:{classname:"button__count"}}),document.addEventListener("focusout",function(t){t.target.classList&&!e.contains(t.target)&&t.target.classList.remove("tab-focus")}),document.addEventListener("keydown",function(t){9===t.keyCode&&setTimeout(function(){var t=document.activeElement;t&&t.classList&&!e.contains(t)&&t.classList.add("tab-focus")},10)});var t=new In("#player",{debug:!0,title:"View From A Blue Moon",iconUrl:"dist/demo.svg",keyboard:{global:!0},tooltips:{controls:!0},captions:{active:!0},keys:{google:"AIzaSyDrNwtN3nLH_8rjCmu5Wq3ZCm4MNAVdc0c"},ads:{enabled:An.prod||An.dev,publisherId:"918848828995742"},previewThumbnails:{enabled:!0,src:["https://cdn.plyr.io/static/demo/thumbs/100p.vtt","https://cdn.plyr.io/static/demo/thumbs/240p.vtt"]}});window.player=t;var n=document.querySelectorAll("[data-source]"),i={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},r=window.location.hash.replace("#",""),a=window.history&&window.history.pushState;function s(e,t,n){e&&e.classList[n?"add":"remove"](t)}function o(e,a){if(e in i&&(a||e!==r)&&(r.length||e!==i.video)){switch(e){case i.video:t.source={type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4",type:"video/mp4",size:576},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4",type:"video/mp4",size:720},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4",type:"video/mp4",size:1080},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4",type:"video/mp4",size:1440}],poster:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt",default:!0},{kind:"captions",label:"French",srclang:"fr",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt"}]};break;case i.audio:t.source={type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",sources:[{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]};break;case i.youtube:t.source={type:"video",sources:[{src:"https://youtube.com/watch?v=bTqVqk7FSmY",provider:"youtube"}]};break;case i.vimeo:t.source={type:"video",sources:[{src:"https://vimeo.com/76979871",provider:"vimeo"}]}}r=e,Array.from(n).forEach(function(e){return s(e.parentElement,"active",!1)}),s(document.querySelector('[data-source="'.concat(e,'"]')),"active",!0),Array.from(document.querySelectorAll(".plyr__cite")).forEach(function(e){e.setAttribute("hidden","")}),document.querySelector(".plyr__cite--".concat(e)).removeAttribute("hidden")}}if(Array.from(n).forEach(function(e){e.addEventListener("click",function(){var t=e.getAttribute("data-source");o(t),a&&window.history.pushState({type:t},"","#".concat(t))})}),window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&o(e.state.type)}),a){var l=!r.length;l&&(r=i.video),r in i&&window.history.replaceState({type:r},"",l?"":"#".concat(r)),r!==i.video&&o(r,!0)}})}),An.prod&&Ie.config("https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555").install()}(); +"object"==typeof navigator&&function(){"use strict";var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t){return e(t={exports:{}},t.exports),t.exports}var n=t(function(e,t){function n(e,t){for(var n=0;n0){var o=n(i,this);~o?i.splice(o+1):i.push(this),~o?r.splice(o,1/0,a):r.push(a),~n(i,s)&&(s=t.call(this,a,s))}else i.push(s);return null==e?s instanceof Error?function(e){var t={stack:e.stack,message:e.message,name:e.name};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}(s):s:e.call(this,a,s)}}(e.exports=function(e,t,n,r){return JSON.stringify(e,i(t,r),n)}).getSerialize=i}),i=(n.getSerialize,"undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{});function r(e){return void 0===e}function a(e){return"[object Object]"===Object.prototype.toString.call(e)}function s(e){return"[object String]"===Object.prototype.toString.call(e)}function o(e){return"[object Array]"===Object.prototype.toString.call(e)}function l(){if(!("fetch"in i))return!1;try{return new Headers,new Request(""),new Response,!0}catch(e){return!1}}function c(e,t){var n,i;if(r(e.length))for(n in e)d(e,n)&&t.call(null,n,e[n]);else if(i=e.length)for(n=0;n ".length;e&&i++<5&&!("html"===(t=p(e))||i>1&&r+n.length*a+t.length>=80);)n.push(t),r+=t.length,e=e.parentNode;return n.reverse().join(" > ")},htmlElementAsString:p,isSameException:function(e,t){return!m(e,t)&&(e=e.values[0],t=t.values[0],e.type===t.type&&e.value===t.value&&(n=e.stacktrace,i=t.stacktrace,(!r(n)||!r(i))&&f(e.stacktrace,t.stacktrace)));var n,i},isSameStacktrace:f,parseUrl:function(e){if("string"!=typeof e)return{};var t=e.match(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/),n=t[6]||"",i=t[8]||"";return{protocol:t[2],host:t[4],path:t[5],relative:t[5]+n+i}},fill:function(e,t,n,i){if(null!=e){var r=e[t];e[t]=n(r),e[t].__raven__=!0,e[t].__orig__=r,i&&i.push([e,t,r])}},safeJoin:function(e,t){if(!o(e))return"";for(var n=[],i=0;ir?e(t,i-1):s},serializeKeysForMessage:function(e,t){if("number"==typeof e||"string"==typeof e)return e.toString();if(!Array.isArray(e))return"";if(0===(e=e.filter(function(e){return"string"==typeof e})).length)return"[object has no keys]";if(t="number"!=typeof t?v:t,e[0].length>=t)return e[0];for(var n=e.length;n>0;n--){var i=e.slice(0,n).join(", ");if(!(i.length>t))return n===e.length?i:i+"…"}return""},sanitize:function(e,t){if(!o(t)||o(t)&&0===t.length)return e;var i,r=h(t),s="********";try{i=JSON.parse(n(e))}catch(t){return e}return function e(t){return o(t)?t.map(function(t){return e(t)}):a(t)?Object.keys(t).reduce(function(n,i){return r.test(i)?n[i]=s:n[i]=e(t[i]),n},{}):t}(i)}},_={collectWindowErrors:!0,debug:!1},T="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},E=[].slice,S="?",C=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;function x(){return"undefined"==typeof document||null==document.location?"":document.location.href}_.report=function(){var e,t,n=[],i=null,r=null,a=null;function s(e,t){var i=null;if(!t||_.collectWindowErrors){for(var r in n)if(n.hasOwnProperty(r))try{n[r].apply(null,[e].concat(E.call(arguments,2)))}catch(e){i=e}if(i)throw i}}function o(t,n,i,r,o){var c=w.isErrorEvent(o)?o.error:o,u=w.isErrorEvent(t)?t.message:t;if(a)_.computeStackTrace.augmentStackTraceWithInitialElement(a,n,i,u),l();else if(c&&w.isError(c))s(_.computeStackTrace(c),!0);else{var d,h={url:n,line:i,column:r},p=void 0;if("[object String]"==={}.toString.call(u))(d=u.match(C))&&(p=d[1],u=d[2]);h.func=S,s({name:p,message:u,url:x(),stack:[h]},!0)}return!!e&&e.apply(this,arguments)}function l(){var e=a,t=i;i=null,a=null,r=null,s.apply(null,[e,!1].concat(t))}function c(e,t){var n=E.call(arguments,1);if(a){if(r===e)return;l()}var s=_.computeStackTrace(e);if(a=s,r=e,i=n,setTimeout(function(){r===e&&l()},s.incomplete?2e3:0),!1!==t)throw e}return c.subscribe=function(i){t||(e=T.onerror,T.onerror=o,t=!0),n.push(i)},c.unsubscribe=function(e){for(var t=n.length-1;t>=0;--t)n[t]===e&&n.splice(t,1)},c.uninstall=function(){t&&(T.onerror=e,t=!1,e=void 0),n=[]},c}(),_.computeStackTrace=function(){function e(e){if(void 0!==e.stack&&e.stack){for(var t,n,i,r=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,a=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,s=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*bundle)(?::(\d+))?(?::(\d+))?\s*$/i,o=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,l=/\((\S*)(?::(\d+))(?::(\d+))\)/,c=e.stack.split("\n"),u=[],d=(/^(.*) is undefined$/.exec(e.message),0),h=c.length;d eval")>-1&&(t=o.exec(n[3]))?(n[3]=t[1],n[4]=t[2],n[5]=null):0!==d||n[5]||void 0===e.columnNumber||(u[0].column=e.columnNumber+1),i={url:n[3],func:n[1]||S,args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}if(!i.func&&i.line&&(i.func=S),i.url&&"blob:"===i.url.substr(0,5)){var m=new XMLHttpRequest;if(m.open("GET",i.url,!1),m.send(null),200===m.status){var f=m.responseText||"",g=(f=f.slice(-300)).match(/\/\/# sourceMappingURL=(.*)$/);if(g){var y=g[1];"~"===y.charAt(0)&&(y=("undefined"==typeof document||null==document.location?"":document.location.origin?document.location.origin:document.location.protocol+"//"+document.location.hostname+(document.location.port?":"+document.location.port:""))+y.slice(1)),i.url=y.slice(0,-4)}}}u.push(i)}return u.length?{name:e.name,message:e.message,url:x(),stack:u}:null}}function t(e,t,n,i){var r={url:t,line:n};if(r.url&&r.line){if(e.incomplete=!1,r.func||(r.func=S),e.stack.length>0&&e.stack[0].url===r.url){if(e.stack[0].line===r.line)return!1;if(!e.stack[0].line&&e.stack[0].func===r.func)return e.stack[0].line=r.line,!1}return e.stack.unshift(r),e.partial=!0,!0}return e.incomplete=!0,!1}function n(e,r){for(var a,s,o=/function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,l=[],c={},u=!1,d=n.caller;d&&!u;d=d.caller)if(d!==i&&d!==_.report){if(s={url:null,func:S,line:null,column:null},d.name?s.func=d.name:(a=o.exec(d.toString()))&&(s.func=a[1]),void 0===s.func)try{s.func=a.input.substring(0,a.input.indexOf("{"))}catch(e){}c[""+d]?u=!0:c[""+d]=!0,l.push(s)}r&&l.splice(0,r);var h={name:e.name,message:e.message,url:x(),stack:l};return t(h,e.sourceURL||e.fileName,e.line||e.lineNumber,e.message||e.description),h}function i(t,i){var r=null;i=null==i?0:+i;try{if(r=e(t))return r}catch(e){if(_.debug)throw e}try{if(r=n(t,i+1))return r}catch(e){if(_.debug)throw e}return{name:t.name,message:t.message,url:x()}}return i.augmentStackTraceWithInitialElement=t,i.computeStackTraceFromStackProp=e,i}();var A=_;function P(e,t){var n=(65535&e)+(65535&t);return(e>>16)+(t>>16)+(n>>16)<<16|65535&n}function O(e,t,n,i,r,a){return P((s=P(P(t,e),P(i,a)))<<(o=r)|s>>>32-o,n);var s,o}function M(e,t,n,i,r,a,s){return O(t&n|~t&i,e,t,r,a,s)}function N(e,t,n,i,r,a,s){return O(t&i|n&~i,e,t,r,a,s)}function L(e,t,n,i,r,a,s){return O(t^n^i,e,t,r,a,s)}function I(e,t,n,i,r,a,s){return O(n^(t|~i),e,t,r,a,s)}function j(e,t){var n,i,r,a,s;e[t>>5]|=128<>>9<<4)]=t;var o=1732584193,l=-271733879,c=-1732584194,u=271733878;for(n=0;n>5]>>>t%32&255);return n}function D(e){var t,n=[];for(n[(e.length>>2)-1]=void 0,t=0;t>5]|=(255&e.charCodeAt(t/8))<>>4&15)+"0123456789abcdef".charAt(15&t);return i}function B(e){return unescape(encodeURIComponent(e))}function H(e){return function(e){return R(j(D(e),8*e.length))}(B(e))}function q(e,t){return function(e,t){var n,i,r=D(e),a=[],s=[];for(a[15]=s[15]=void 0,r.length>16&&(r=j(r,8*e.length)),n=0;n<16;n+=1)a[n]=909522486^r[n],s[n]=1549556828^r[n];return i=j(a.concat(D(t)),512+8*t.length),R(j(s.concat(i),640))}(B(e),B(t))}var U=function(e,t,n){return t?n?q(t,e):F(q(t,e)):n?H(e):F(H(e))};function V(e){this.name="RavenConfigError",this.message=e}V.prototype=new Error,V.prototype.constructor=V;var z=V,W=function(e,t,n){var i=e[t],r=e;if(t in e){var a="warn"===t?"warning":t;e[t]=function(){var e=[].slice.call(arguments),s=w.safeJoin(e," "),o={level:a,logger:"console",extra:{arguments:e}};"assert"===t?!1===e[0]&&(s="Assertion failed: "+(w.safeJoin(e.slice(1)," ")||"console.assert"),o.extra.arguments=e.slice(1),n&&n(s,o)):n&&n(s,o),i&&Function.prototype.apply.call(i,r,e)}}},K=w.isErrorEvent,X=w.isDOMError,$=w.isDOMException,Y=w.isError,J=w.isObject,G=w.isPlainObject,Q=w.isUndefined,Z=w.isFunction,ee=w.isString,te=w.isArray,ne=w.isEmptyObject,ie=w.each,re=w.objectMerge,ae=w.truncate,se=w.objectFrozen,oe=w.hasKey,le=w.joinRegExp,ce=w.urlencode,ue=w.uuid4,de=w.htmlTreeAsString,he=w.isSameException,pe=w.isSameStacktrace,me=w.parseUrl,fe=w.fill,ge=w.supportsFetch,ye=w.supportsReferrerPolicy,ve=w.serializeKeysForMessage,be=w.serializeException,ke=w.sanitize,we=W,_e="source protocol user pass host port path".split(" "),Te=/^(?:(\w+):)?\/\/(?:(\w+)(:\w+)?@)?([\w\.-]+)(?::(\d+))?(\/.*)/;function Ee(){return+new Date}var Se="undefined"!=typeof window?window:void 0!==e?e:"undefined"!=typeof self?self:{},Ce=Se.document,xe=Se.navigator;function Ae(e,t){return Z(t)?function(n){return t(n,e)}:t}function Pe(){for(var e in this._hasJSON=!("object"!=typeof JSON||!JSON.stringify),this._hasDocument=!Q(Ce),this._hasNavigator=!Q(xe),this._lastCapturedException=null,this._lastData=null,this._lastEventId=null,this._globalServer=null,this._globalKey=null,this._globalProject=null,this._globalContext={},this._globalOptions={release:Se.SENTRY_RELEASE&&Se.SENTRY_RELEASE.id,logger:"javascript",ignoreErrors:[],ignoreUrls:[],whitelistUrls:[],includePaths:[],headers:null,collectWindowErrors:!0,captureUnhandledRejections:!0,maxMessageLength:0,maxUrlLength:250,stackTraceLimit:50,autoBreadcrumbs:!0,instrument:!0,sampleRate:1,sanitizeKeys:[]},this._fetchDefaults={method:"POST",referrerPolicy:ye()?"origin":""},this._ignoreOnError=0,this._isRavenInstalled=!1,this._originalErrorStackTraceLimit=Error.stackTraceLimit,this._originalConsole=Se.console||{},this._originalConsoleMethods={},this._plugins=[],this._startTime=Ee(),this._wrappedBuiltIns=[],this._breadcrumbs=[],this._lastCapturedEvent=null,this._keypressTimeout,this._location=Se.location,this._lastHref=this._location&&this._location.href,this._resetBackoff(),this._originalConsole)this._originalConsoleMethods[e]=this._originalConsole[e]}Pe.prototype={VERSION:"3.27.0",debug:!1,TraceKit:A,config:function(e,t){var n=this;if(n._globalServer)return this._logDebug("error","Error: Raven has already been configured"),n;if(!e)return n;var i=n._globalOptions;t&&ie(t,function(e,t){"tags"===e||"extra"===e||"user"===e?n._globalContext[e]=t:i[e]=t}),n.setDSN(e),i.ignoreErrors.push(/^Script error\.?$/),i.ignoreErrors.push(/^Javascript error: Script error\.? on line 0$/),i.ignoreErrors=le(i.ignoreErrors),i.ignoreUrls=!!i.ignoreUrls.length&&le(i.ignoreUrls),i.whitelistUrls=!!i.whitelistUrls.length&&le(i.whitelistUrls),i.includePaths=le(i.includePaths),i.maxBreadcrumbs=Math.max(0,Math.min(i.maxBreadcrumbs||100,100));var r={xhr:!0,console:!0,dom:!0,location:!0,sentry:!0},a=i.autoBreadcrumbs;"[object Object]"==={}.toString.call(a)?a=re(r,a):!1!==a&&(a=r),i.autoBreadcrumbs=a;var s={tryCatch:!0},o=i.instrument;return"[object Object]"==={}.toString.call(o)?o=re(s,o):!1!==o&&(o=s),i.instrument=o,A.collectWindowErrors=!!i.collectWindowErrors,n},install:function(){var e=this;return e.isSetup()&&!e._isRavenInstalled&&(A.report.subscribe(function(){e._handleOnErrorStackInfo.apply(e,arguments)}),e._globalOptions.captureUnhandledRejections&&e._attachPromiseRejectionHandler(),e._patchFunctionToString(),e._globalOptions.instrument&&e._globalOptions.instrument.tryCatch&&e._instrumentTryCatch(),e._globalOptions.autoBreadcrumbs&&e._instrumentBreadcrumbs(),e._drainPlugins(),e._isRavenInstalled=!0),Error.stackTraceLimit=e._globalOptions.stackTraceLimit,this},setDSN:function(e){var t=this._parseDSN(e),n=t.path.lastIndexOf("/"),i=t.path.substr(1,n);this._dsn=e,this._globalKey=t.user,this._globalSecret=t.pass&&t.pass.substr(1),this._globalProject=t.path.substr(n+1),this._globalServer=this._getGlobalServer(t),this._globalEndpoint=this._globalServer+"/"+i+"api/"+this._globalProject+"/store/",this._resetBackoff()},context:function(e,t,n){return Z(e)&&(n=t||[],t=e,e={}),this.wrap(e,t).apply(this,n)},wrap:function(e,t,n){var i=this;if(Q(t)&&!Z(e))return e;if(Z(e)&&(t=e,e=void 0),!Z(t))return t;try{if(t.__raven__)return t;if(t.__raven_wrapper__)return t.__raven_wrapper__}catch(e){return t}function r(){var r=[],a=arguments.length,s=!e||e&&!1!==e.deep;for(n&&Z(n)&&n.apply(this,arguments);a--;)r[a]=s?i.wrap(e,arguments[a]):arguments[a];try{return t.apply(this,r)}catch(t){throw i._ignoreNextOnError(),i.captureException(t,e),t}}for(var a in t)oe(t,a)&&(r[a]=t[a]);return r.prototype=t.prototype,t.__raven_wrapper__=r,r.__raven__=!0,r.__orig__=t,r},uninstall:function(){return A.report.uninstall(),this._detachPromiseRejectionHandler(),this._unpatchFunctionToString(),this._restoreBuiltIns(),this._restoreConsole(),Error.stackTraceLimit=this._originalErrorStackTraceLimit,this._isRavenInstalled=!1,this},_promiseRejectionHandler:function(e){this._logDebug("debug","Raven caught unhandled promise rejection:",e),this.captureException(e.reason,{mechanism:{type:"onunhandledrejection",handled:!1}})},_attachPromiseRejectionHandler:function(){return this._promiseRejectionHandler=this._promiseRejectionHandler.bind(this),Se.addEventListener&&Se.addEventListener("unhandledrejection",this._promiseRejectionHandler),this},_detachPromiseRejectionHandler:function(){return Se.removeEventListener&&Se.removeEventListener("unhandledrejection",this._promiseRejectionHandler),this},captureException:function(e,t){if(t=re({trimHeadFrames:0},t||{}),K(e)&&e.error)e=e.error;else{if(X(e)||$(e)){var n=e.name||(X(e)?"DOMError":"DOMException"),i=e.message?n+": "+e.message:n;return this.captureMessage(i,re(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}))}if(Y(e))e=e;else{if(!G(e))return this.captureMessage(e,re(t,{stacktrace:!0,trimHeadFrames:t.trimHeadFrames+1}));t=this._getCaptureExceptionOptionsFromPlainObject(t,e),e=new Error(t.message)}}this._lastCapturedException=e;try{var r=A.computeStackTrace(e);this._handleStackInfo(r,t)}catch(t){if(e!==t)throw t}return this},_getCaptureExceptionOptionsFromPlainObject:function(e,t){var n=Object.keys(t).sort(),i=re(e,{message:"Non-Error exception captured with keys: "+ve(n),fingerprint:[U(n)],extra:e.extra||{}});return i.extra.__serialized__=be(t),i},captureMessage:function(e,t){if(!this._globalOptions.ignoreErrors.test||!this._globalOptions.ignoreErrors.test(e)){var n,i=re({message:e+=""},t=t||{});try{throw new Error(e)}catch(e){n=e}n.name=null;var r=A.computeStackTrace(n),a=te(r.stack)&&r.stack[1];a&&"Raven.captureException"===a.func&&(a=r.stack[2]);var s=a&&a.url||"";if((!this._globalOptions.ignoreUrls.test||!this._globalOptions.ignoreUrls.test(s))&&(!this._globalOptions.whitelistUrls.test||this._globalOptions.whitelistUrls.test(s))){if(this._globalOptions.stacktrace||t.stacktrace||""===i.message){i.fingerprint=null==i.fingerprint?e:i.fingerprint,(t=re({trimHeadFrames:0},t)).trimHeadFrames+=1;var o=this._prepareFrames(r,t);i.stacktrace={frames:o.reverse()}}return i.fingerprint&&(i.fingerprint=te(i.fingerprint)?i.fingerprint:[i.fingerprint]),this._send(i),this}}},captureBreadcrumb:function(e){var t=re({timestamp:Ee()/1e3},e);if(Z(this._globalOptions.breadcrumbCallback)){var n=this._globalOptions.breadcrumbCallback(t);if(J(n)&&!ne(n))t=n;else if(!1===n)return this}return this._breadcrumbs.push(t),this._breadcrumbs.length>this._globalOptions.maxBreadcrumbs&&this._breadcrumbs.shift(),this},addPlugin:function(e){var t=[].slice.call(arguments,1);return this._plugins.push([e,t]),this._isRavenInstalled&&this._drainPlugins(),this},setUserContext:function(e){return this._globalContext.user=e,this},setExtraContext:function(e){return this._mergeContext("extra",e),this},setTagsContext:function(e){return this._mergeContext("tags",e),this},clearContext:function(){return this._globalContext={},this},getContext:function(){return JSON.parse(n(this._globalContext))},setEnvironment:function(e){return this._globalOptions.environment=e,this},setRelease:function(e){return this._globalOptions.release=e,this},setDataCallback:function(e){var t=this._globalOptions.dataCallback;return this._globalOptions.dataCallback=Ae(t,e),this},setBreadcrumbCallback:function(e){var t=this._globalOptions.breadcrumbCallback;return this._globalOptions.breadcrumbCallback=Ae(t,e),this},setShouldSendCallback:function(e){var t=this._globalOptions.shouldSendCallback;return this._globalOptions.shouldSendCallback=Ae(t,e),this},setTransport:function(e){return this._globalOptions.transport=e,this},lastException:function(){return this._lastCapturedException},lastEventId:function(){return this._lastEventId},isSetup:function(){return!!this._hasJSON&&(!!this._globalServer||(this.ravenNotConfiguredError||(this.ravenNotConfiguredError=!0,this._logDebug("error","Error: Raven has not been configured.")),!1))},afterLoad:function(){var e=Se.RavenConfig;e&&this.config(e.dsn,e.config).install()},showReportDialog:function(e){if(Ce){if(!(e=re({eventId:this.lastEventId(),dsn:this._dsn,user:this._globalContext.user||{}},e)).eventId)throw new z("Missing eventId");if(!e.dsn)throw new z("Missing DSN");var t=encodeURIComponent,n=[];for(var i in e)if("user"===i){var r=e.user;r.name&&n.push("name="+t(r.name)),r.email&&n.push("email="+t(r.email))}else n.push(t(i)+"="+t(e[i]));var a=this._getGlobalServer(this._parseDSN(e.dsn)),s=Ce.createElement("script");s.async=!0,s.src=a+"/api/embed/error-page/?"+n.join("&"),(Ce.head||Ce.body).appendChild(s)}},_ignoreNextOnError:function(){var e=this;this._ignoreOnError+=1,setTimeout(function(){e._ignoreOnError-=1})},_triggerEvent:function(e,t){var n,i;if(this._hasDocument){for(i in t=t||{},e="raven"+e.substr(0,1).toUpperCase()+e.substr(1),Ce.createEvent?(n=Ce.createEvent("HTMLEvents")).initEvent(e,!0,!0):(n=Ce.createEventObject()).eventType=e,t)oe(t,i)&&(n[i]=t[i]);if(Ce.createEvent)Ce.dispatchEvent(n);else try{Ce.fireEvent("on"+n.eventType.toLowerCase(),n)}catch(e){}}},_breadcrumbEventHandler:function(e){var t=this;return function(n){if(t._keypressTimeout=null,t._lastCapturedEvent!==n){var i;t._lastCapturedEvent=n;try{i=de(n.target)}catch(e){i=""}t.captureBreadcrumb({category:"ui."+e,message:i})}}},_keypressEventHandler:function(){var e=this;return function(t){var n;try{n=t.target}catch(e){return}var i=n&&n.tagName;if(i&&("INPUT"===i||"TEXTAREA"===i||n.isContentEditable)){var r=e._keypressTimeout;r||e._breadcrumbEventHandler("input")(t),clearTimeout(r),e._keypressTimeout=setTimeout(function(){e._keypressTimeout=null},1e3)}}},_captureUrlChange:function(e,t){var n=me(this._location.href),i=me(t),r=me(e);this._lastHref=t,n.protocol===i.protocol&&n.host===i.host&&(t=i.relative),n.protocol===r.protocol&&n.host===r.host&&(e=r.relative),this.captureBreadcrumb({category:"navigation",data:{to:t,from:e}})},_patchFunctionToString:function(){var e=this;e._originalFunctionToString=Function.prototype.toString,Function.prototype.toString=function(){return"function"==typeof this&&this.__raven__?e._originalFunctionToString.apply(this.__orig__,arguments):e._originalFunctionToString.apply(this,arguments)}},_unpatchFunctionToString:function(){this._originalFunctionToString&&(Function.prototype.toString=this._originalFunctionToString)},_instrumentTryCatch:function(){var e=this,t=e._wrappedBuiltIns;function n(t){return function(n,i){for(var r=new Array(arguments.length),a=0;a"}}},s)),t.apply?t.apply(this,r):t(r[0],r[1])}}var i=this._globalOptions.autoBreadcrumbs;function r(n){var r=Se[n]&&Se[n].prototype;r&&r.hasOwnProperty&&r.hasOwnProperty("addEventListener")&&(fe(r,"addEventListener",function(t){return function(r,a,s,o){try{a&&a.handleEvent&&(a.handleEvent=e.wrap({mechanism:{type:"instrument",data:{target:n,function:"handleEvent",handler:a&&a.name||""}}},a.handleEvent))}catch(e){}var l,c,u;return i&&i.dom&&("EventTarget"===n||"Node"===n)&&(c=e._breadcrumbEventHandler("click"),u=e._keypressEventHandler(),l=function(e){if(e){var t;try{t=e.type}catch(e){return}return"click"===t?c(e):"keypress"===t?u(e):void 0}}),t.call(this,r,e.wrap({mechanism:{type:"instrument",data:{target:n,function:"addEventListener",handler:a&&a.name||""}}},a,l),s,o)}},t),fe(r,"removeEventListener",function(e){return function(t,n,i,r){try{n=n&&(n.__raven_wrapper__?n.__raven_wrapper__:n)}catch(e){}return e.call(this,t,n,i,r)}},t))}fe(Se,"setTimeout",n,t),fe(Se,"setInterval",n,t),Se.requestAnimationFrame&&fe(Se,"requestAnimationFrame",function(t){return function(n){return t(e.wrap({mechanism:{type:"instrument",data:{function:"requestAnimationFrame",handler:t&&t.name||""}}},n))}},t);for(var a=["EventTarget","Window","Node","ApplicationCache","AudioTrackList","ChannelMergerNode","CryptoOperation","EventSource","FileReader","HTMLUnknownElement","IDBDatabase","IDBRequest","IDBTransaction","KeyOperation","MediaController","MessagePort","ModalWindow","Notification","SVGElementInstance","Screen","TextTrack","TextTrackCue","TextTrackList","WebSocket","WebSocketWorker","Worker","XMLHttpRequest","XMLHttpRequestEventTarget","XMLHttpRequestUpload"],s=0;s"}}},n)})}if(t.xhr&&"XMLHttpRequest"in Se){var r=Se.XMLHttpRequest&&Se.XMLHttpRequest.prototype;fe(r,"open",function(t){return function(n,i){return ee(i)&&-1===i.indexOf(e._globalKey)&&(this.__raven_xhr={method:n,url:i,status_code:null}),t.apply(this,arguments)}},n),fe(r,"send",function(t){return function(){var n=this;function r(){if(n.__raven_xhr&&4===n.readyState){try{n.__raven_xhr.status_code=n.status}catch(e){}e.captureBreadcrumb({type:"http",category:"xhr",data:n.__raven_xhr})}}for(var a=["onload","onerror","onprogress"],s=0;s"}}},t,r)}):n.onreadystatechange=r,t.apply(this,arguments)}},n)}t.xhr&&ge()&&fe(Se,"fetch",function(t){return function(){for(var n=new Array(arguments.length),i=0;i2?arguments[2]:void 0;return n&&e._captureUrlChange(e._lastHref,n+""),t.apply(this,arguments)}};fe(Se.history,"pushState",l,n),fe(Se.history,"replaceState",l,n)}if(t.console&&"console"in Se&&console.log){var c=function(t,n){e.captureBreadcrumb({message:t,level:n.level,category:"console"})};ie(["debug","info","warn","error","log"],function(e,t){we(console,t,c)})}},_restoreBuiltIns:function(){for(var e;this._wrappedBuiltIns.length;){var t=(e=this._wrappedBuiltIns.shift())[0],n=e[1],i=e[2];t[n]=i}},_restoreConsole:function(){for(var e in this._originalConsoleMethods)this._originalConsole[e]=this._originalConsoleMethods[e]},_drainPlugins:function(){var e=this;ie(this._plugins,function(t,n){var i=n[0],r=n[1];i.apply(e,[e].concat(r))})},_parseDSN:function(e){var t=Te.exec(e),n={},i=7;try{for(;i--;)n[_e[i]]=t[i]||""}catch(t){throw new z("Invalid DSN: "+e)}if(n.pass&&!this._globalOptions.allowSecretKey)throw new z("Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key");return n},_getGlobalServer:function(e){var t="//"+e.host+(e.port?":"+e.port:"");return e.protocol&&(t=e.protocol+":"+t),t},_handleOnErrorStackInfo:function(e,t){(t=t||{}).mechanism=t.mechanism||{type:"onerror",handled:!1},this._ignoreOnError||this._handleStackInfo(e,t)},_handleStackInfo:function(e,t){var n=this._prepareFrames(e,t);this._triggerEvent("handle",{stackInfo:e,options:t}),this._processException(e.name,e.message,e.url,e.lineno,n,t)},_prepareFrames:function(e,t){var n=this,i=[];if(e.stack&&e.stack.length&&(ie(e.stack,function(t,r){var a=n._normalizeFrame(r,e.url);a&&i.push(a)}),t&&t.trimHeadFrames))for(var r=0;r0&&(e.breadcrumbs={values:[].slice.call(this._breadcrumbs,0)}),this._globalContext.user&&(e.user=this._globalContext.user),t.environment&&(e.environment=t.environment),t.release&&(e.release=t.release),t.serverName&&(e.server_name=t.serverName),e=this._sanitizeData(e),Object.keys(e).forEach(function(t){(null==e[t]||""===e[t]||ne(e[t]))&&delete e[t]}),Z(t.dataCallback)&&(e=t.dataCallback(e)||e),e&&!ne(e)&&(Z(t.shouldSendCallback)&&!t.shouldSendCallback(e)||(this._shouldBackoff()?this._logDebug("warn","Raven dropped error due to backoff: ",e):"number"==typeof t.sampleRate?Math.random()null!=e?e.constructor:null,ze=(e,t)=>Boolean(e&&t&&e instanceof t),We=e=>null==e,Ke=e=>Ve(e)===Object,Xe=e=>Ve(e)===String,$e=e=>Array.isArray(e),Ye=e=>ze(e,NodeList);var Je={nullOrUndefined:We,object:Ke,number:e=>Ve(e)===Number&&!Number.isNaN(e),string:Xe,boolean:e=>Ve(e)===Boolean,function:e=>Ve(e)===Function,array:$e,nodeList:Ye,element:e=>ze(e,Element),event:e=>ze(e,Event),empty:e=>We(e)||(Xe(e)||$e(e)||Ye(e))&&!e.length||Ke(e)&&!Object.keys(e).length};function Ge(e,t){if(t<1){const n=function(e){const t=`${e}`.match(/(?:\.(\d+))?(?:[eE]([+-]?\d+))?$/);return t?Math.max(0,(t[1]?t[1].length:0)-(t[2]?+t[2]:0)):0}(t);return parseFloat(e.toFixed(n))}return Math.round(e/t)*t}class Qe{constructor(e,t){Je.element(e)?this.element=e:Je.string(e)&&(this.element=document.querySelector(e)),Je.element(this.element)&&Je.empty(this.element.rangeTouch)&&(this.config=Object.assign({},Ue,t),this.init())}static get enabled(){return"ontouchstart"in document.documentElement}static setup(e,t={}){let n=null;if(Je.empty(e)||Je.string(e)?n=Array.from(document.querySelectorAll(Je.string(e)?e:'input[type="range"]')):Je.element(e)?n=[e]:Je.nodeList(e)?n=Array.from(e):Je.array(e)&&(n=e.filter(Je.element)),Je.empty(n))return null;const i=Object.assign({},Ue,t);if(Je.string(e)&&i.watch){new MutationObserver(t=>{Array.from(t).forEach(t=>{Array.from(t.addedNodes).forEach(t=>{if(!Je.element(t)||!function(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}(t,e))return;new Qe(t,i)})})}).observe(document.body,{childList:!0,subtree:!0})}return n.map(e=>new Qe(e,t))}init(){Qe.enabled&&(this.config.addCSS&&(this.element.style.userSelect="none",this.element.style.webKitUserSelect="none",this.element.style.touchAction="manipulation"),this.listeners(!0),this.element.rangeTouch=this)}destroy(){Qe.enabled&&(this.listeners(!1),this.element.rangeTouch=null)}listeners(e){const t=e?"addEventListener":"removeEventListener";["touchstart","touchmove","touchend"].forEach(e=>{this.element[t](e,e=>this.set(e),!1)})}get(e){if(!Qe.enabled||!Je.event(e))return null;const t=e.target,n=e.changedTouches[0],i=parseFloat(t.getAttribute("min"))||0,r=parseFloat(t.getAttribute("max"))||100,a=parseFloat(t.getAttribute("step"))||1,s=r-i;let o;const l=t.getBoundingClientRect(),c=100/l.width*(this.config.thumbWidth/2)/100;return(o=100/l.width*(n.clientX-l.left))<0?o=0:o>100&&(o=100),o<50?o-=(100-2*o)*c:o>50&&(o+=2*(o-50)*c),i+Ge(s*(o/100),a)}set(e){Qe.enabled&&Je.event(e)&&!e.target.disabled&&(e.preventDefault(),e.target.value=this.get(e),function(e,t){if(!e||!t)return;const n=new Event(t);e.dispatchEvent(n)}(e.target,"touchend"===e.type?"change":"input"))}}var Ze=function(e){return null!=e?e.constructor:null},et=function(e,t){return Boolean(e&&t&&e instanceof t)},tt=function(e){return null==e},nt=function(e){return Ze(e)===Object},it=function(e){return Ze(e)===String},rt=function(e){return Array.isArray(e)},at=function(e){return et(e,NodeList)},st=function(e){return tt(e)||(it(e)||rt(e)||at(e))&&!e.length||nt(e)&&!Object.keys(e).length},ot={nullOrUndefined:tt,object:nt,number:function(e){return Ze(e)===Number&&!Number.isNaN(e)},string:it,boolean:function(e){return Ze(e)===Boolean},function:function(e){return Ze(e)===Function},array:rt,weakMap:function(e){return et(e,WeakMap)},nodeList:at,element:function(e){return et(e,Element)},textNode:function(e){return Ze(e)===Text},event:function(e){return et(e,Event)},keyboardEvent:function(e){return et(e,KeyboardEvent)},cue:function(e){return et(e,window.TextTrackCue)||et(e,window.VTTCue)},track:function(e){return et(e,TextTrack)||!tt(e)&&it(e.kind)},promise:function(e){return et(e,Promise)},url:function(e){if(et(e,window.URL))return!0;if(!it(e))return!1;var t=e;e.startsWith("http://")&&e.startsWith("https://")||(t="http://".concat(e));try{return!st(new URL(t).hostname)}catch(e){return!1}},empty:st},lt=function(){var e=!1;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,null}});window.addEventListener("test",null,t),window.removeEventListener("test",null,t)}catch(e){}return e}();function ct(e,t,n){var i=this,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=arguments.length>5&&void 0!==arguments[5]&&arguments[5];if(e&&"addEventListener"in e&&!ot.empty(t)&&ot.function(n)){var o=t.split(" "),l=s;lt&&(l={passive:a,capture:s}),o.forEach(function(t){i&&i.eventListeners&&r&&i.eventListeners.push({element:e,type:t,callback:n,options:l}),e[r?"addEventListener":"removeEventListener"](t,n,l)})}}function ut(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ct.call(this,e,t,n,!0,i,r)}function dt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ct.call(this,e,t,n,!1,i,r)}function ht(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=arguments.length>2?arguments[2]:void 0,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=arguments.length>4&&void 0!==arguments[4]&&arguments[4];ct.call(this,e,n,function s(){dt(e,n,s,r,a);for(var o=arguments.length,l=new Array(o),c=0;c1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if(ot.element(e)&&!ot.empty(t)){var r=new CustomEvent(t,{bubbles:n,detail:Object.assign({},i,{plyr:this})});e.dispatchEvent(r)}}function mt(e,t){var n=e.length?e:[e];Array.from(n).reverse().forEach(function(e,n){var i=n>0?t.cloneNode(!0):t,r=e.parentNode,a=e.nextSibling;i.appendChild(e),a?r.insertBefore(i,a):r.appendChild(i)})}function ft(e,t){ot.element(e)&&!ot.empty(t)&&Object.entries(t).filter(function(e){var t=He(e,2)[1];return!ot.nullOrUndefined(t)}).forEach(function(t){var n=He(t,2),i=n[0],r=n[1];return e.setAttribute(i,r)})}function gt(e,t,n){var i=document.createElement(e);return ot.object(t)&&ft(i,t),ot.string(n)&&(i.innerText=n),i}function yt(e,t,n,i){ot.element(t)&&t.appendChild(gt(e,n,i))}function vt(e){ot.nodeList(e)||ot.array(e)?Array.from(e).forEach(vt):ot.element(e)&&ot.element(e.parentNode)&&e.parentNode.removeChild(e)}function bt(e){if(ot.element(e))for(var t=e.childNodes.length;t>0;)e.removeChild(e.lastChild),t-=1}function kt(e,t){return ot.element(t)&&ot.element(t.parentNode)&&ot.element(e)?(t.parentNode.replaceChild(e,t),e):null}function wt(e,t){if(!ot.string(e)||ot.empty(e))return{};var n={},i=t;return e.split(",").forEach(function(e){var t=e.trim(),r=t.replace(".",""),a=t.replace(/[[\]]/g,"").split("="),s=a[0],o=a.length>1?a[1].replace(/["']/g,""):"";switch(t.charAt(0)){case".":ot.object(i)&&ot.string(i.class)&&(i.class+=" ".concat(r)),n.class=r;break;case"#":n.id=t.replace("#","");break;case"[":n[s]=o}}),n}function _t(e,t){if(ot.element(e)){var n=t;ot.boolean(n)||(n=!e.hidden),n?e.setAttribute("hidden",""):e.removeAttribute("hidden")}}function Tt(e,t,n){if(ot.nodeList(e))return Array.from(e).map(function(e){return Tt(e,t,n)});if(ot.element(e)){var i="toggle";return void 0!==n&&(i=n?"add":"remove"),e.classList[i](t),e.classList.contains(t)}return!1}function Et(e,t){return ot.element(e)&&e.classList.contains(t)}function St(e,t){return function(){return Array.from(document.querySelectorAll(t)).includes(this)}.call(e,t)}function Ct(e){return this.elements.container.querySelectorAll(e)}function xt(e){return this.elements.container.querySelector(e)}function At(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];ot.element(e)&&(e.focus({preventScroll:!0}),t&&Tt(e,this.config.classNames.tabFocus))}var Pt,Ot,Mt,Nt=(Pt=document.createElement("span"),Ot={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"},Mt=Object.keys(Ot).find(function(e){return void 0!==Pt.style[e]}),!!ot.string(Mt)&&Ot[Mt]);function Lt(e){setTimeout(function(){try{_t(e,!0),e.offsetHeight,_t(e,!1)}catch(e){}},0)}var It,jt={isIE:!!document.documentMode,isEdge:window.navigator.userAgent.includes("Edge"),isWebkit:"WebkitAppearance"in document.documentElement.style&&!/Edge/.test(navigator.userAgent),isIPhone:/(iPhone|iPod)/gi.test(navigator.platform),isIos:/(iPad|iPhone|iPod)/gi.test(navigator.platform)},Rt={"audio/ogg":"vorbis","audio/wav":"1","video/webm":"vp8, vorbis","video/mp4":"avc1.42E01E, mp4a.40.2","video/ogg":"theora"},Dt={audio:"canPlayType"in document.createElement("audio"),video:"canPlayType"in document.createElement("video"),check:function(e,t,n){var i=jt.isIPhone&&n&&Dt.playsinline,r=Dt[e]||"html5"!==t;return{api:r,ui:r&&Dt.rangeInput&&("video"!==e||!jt.isIPhone||i)}},pip:!(jt.isIPhone||!ot.function(gt("video").webkitSetPresentationMode)&&(!document.pictureInPictureEnabled||gt("video").disablePictureInPicture)),airplay:ot.function(window.WebKitPlaybackTargetAvailabilityEvent),playsinline:"playsInline"in document.createElement("video"),mime:function(e){if(ot.empty(e))return!1;var t=He(e.split("/"),1)[0],n=e;if(!this.isHTML5||t!==this.type)return!1;Object.keys(Rt).includes(n)&&(n+='; codecs="'.concat(Rt[e],'"'));try{return Boolean(n&&this.media.canPlayType(n).replace(/no/,""))}catch(e){return!1}},textTracks:"textTracks"in document.createElement("video"),rangeInput:(It=document.createElement("input"),It.type="range","range"===It.type),touch:"ontouchstart"in document.documentElement,transitions:!1!==Nt,reducedMotion:"matchMedia"in window&&window.matchMedia("(prefers-reduced-motion)").matches},Ft={getSources:function(){var e=this;return this.isHTML5?Array.from(this.media.querySelectorAll("source")).filter(function(t){var n=t.getAttribute("type");return!!ot.empty(n)||Dt.mime.call(e,n)}):[]},getQualityOptions:function(){return Ft.getSources.call(this).map(function(e){return Number(e.getAttribute("size"))}).filter(Boolean)},extend:function(){if(this.isHTML5){var e=this;Object.defineProperty(e.media,"quality",{get:function(){var t=Ft.getSources.call(e).find(function(t){return t.getAttribute("src")===e.source});return t&&Number(t.getAttribute("size"))},set:function(t){var n=Ft.getSources.call(e).find(function(e){return Number(e.getAttribute("size"))===t});if(n){var i=e.media,r=i.currentTime,a=i.paused,s=i.preload,o=i.readyState;e.media.src=n.getAttribute("src"),("none"!==s||o)&&(e.once("loadedmetadata",function(){e.currentTime=r,a||e.play()}),e.media.load()),pt.call(e,e.media,"qualitychange",!1,{quality:t})}}})}},cancelRequests:function(){this.isHTML5&&(vt(Ft.getSources.call(this)),this.media.setAttribute("src",this.config.blankVideo),this.media.load(),this.debug.log("Cancelled network requests"))}};function Bt(e){return ot.array(e)?e.filter(function(t,n){return e.indexOf(t)===n}):e}function Ht(e,t){return t.split(".").reduce(function(e,t){return e&&e[t]},e)}function qt(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length,n=new Array(t>1?t-1:0),i=1;i1?t-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return e.replace(new RegExp(t.toString().replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1"),"g"),n.toString())}function zt(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString().replace(/\w\S*/g,function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})}function Wt(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString();return(e=function(){var e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString();return e=Vt(e,"-"," "),e=Vt(e,"_"," "),Vt(e=zt(e)," ","")}(e)).charAt(0).toLowerCase()+e.slice(1)}function Kt(e){var t=document.createElement("div");return t.appendChild(e),t.innerHTML}var Xt={pip:"PIP",airplay:"AirPlay",html5:"HTML5",vimeo:"Vimeo",youtube:"YouTube"},$t=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(ot.empty(e)||ot.empty(t))return"";var n=Ht(t.i18n,e);if(ot.empty(n))return Object.keys(Xt).includes(e)?Xt[e]:"";var i={"{seektime}":t.seekTime,"{title}":t.title};return Object.entries(i).forEach(function(e){var t=He(e,2),i=t[0],r=t[1];n=Vt(n,i,r)}),n},Yt=function(){function e(t){Re(this,e),this.enabled=t.config.storage.enabled,this.key=t.config.storage.key}return Fe(e,[{key:"get",value:function(t){if(!e.supported||!this.enabled)return null;var n=window.localStorage.getItem(this.key);if(ot.empty(n))return null;var i=JSON.parse(n);return ot.string(t)&&t.length?i[t]:i}},{key:"set",value:function(t){if(e.supported&&this.enabled&&ot.object(t)){var n=this.get();ot.empty(n)&&(n={}),qt(n,t),window.localStorage.setItem(this.key,JSON.stringify(n))}}}],[{key:"supported",get:function(){try{if(!("localStorage"in window))return!1;return window.localStorage.setItem("___test","___test"),window.localStorage.removeItem("___test"),!0}catch(e){return!1}}}]),e}();function Jt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"text";return new Promise(function(n,i){try{var r=new XMLHttpRequest;if(!("withCredentials"in r))return;r.addEventListener("load",function(){if("text"===t)try{n(JSON.parse(r.responseText))}catch(e){n(r.responseText)}else n(r.response)}),r.addEventListener("error",function(){throw new Error(r.status)}),r.open("GET",e,!0),r.responseType=t,r.send()}catch(e){i(e)}})}function Gt(e,t){if(ot.string(e)){var n=ot.string(t),i=function(){return null!==document.getElementById(t)},r=function(e,t){e.innerHTML=t,n&&i()||document.body.insertAdjacentElement("afterbegin",e)};if(!n||!i()){var a=Yt.supported,s=document.createElement("div");if(s.setAttribute("hidden",""),n&&s.setAttribute("id",t),a){var o=window.localStorage.getItem("".concat("cache","-").concat(t));if(null!==o){var l=JSON.parse(o);r(s,l.content)}}Jt(e).then(function(e){ot.empty(e)||(a&&window.localStorage.setItem("".concat("cache","-").concat(t),JSON.stringify({content:e})),r(s,e))}).catch(function(){})}}}var Qt=function(e){return Math.trunc(e/60/60%60,10)},Zt=function(e){return Math.trunc(e/60%60,10)},en=function(e){return Math.trunc(e%60,10)};function tn(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!ot.number(e))return tn(null,t,n);var i=function(e){return"0".concat(e).slice(-2)},r=Qt(e),a=Zt(e),s=en(e);return r=t||r>0?"".concat(r,":"):"","".concat(n&&e>0?"-":"").concat(r).concat(i(a),":").concat(i(s))}var nn={getIconUrl:function(){var e=new URL(this.config.iconUrl,window.location).host!==window.location.host||jt.isIE&&!window.svg4everybody;return{url:this.config.iconUrl,cors:e}},findElements:function(){try{return this.elements.controls=xt.call(this,this.config.selectors.controls.wrapper),this.elements.buttons={play:Ct.call(this,this.config.selectors.buttons.play),pause:xt.call(this,this.config.selectors.buttons.pause),restart:xt.call(this,this.config.selectors.buttons.restart),rewind:xt.call(this,this.config.selectors.buttons.rewind),fastForward:xt.call(this,this.config.selectors.buttons.fastForward),mute:xt.call(this,this.config.selectors.buttons.mute),pip:xt.call(this,this.config.selectors.buttons.pip),airplay:xt.call(this,this.config.selectors.buttons.airplay),settings:xt.call(this,this.config.selectors.buttons.settings),captions:xt.call(this,this.config.selectors.buttons.captions),fullscreen:xt.call(this,this.config.selectors.buttons.fullscreen)},this.elements.progress=xt.call(this,this.config.selectors.progress),this.elements.inputs={seek:xt.call(this,this.config.selectors.inputs.seek),volume:xt.call(this,this.config.selectors.inputs.volume)},this.elements.display={buffer:xt.call(this,this.config.selectors.display.buffer),currentTime:xt.call(this,this.config.selectors.display.currentTime),duration:xt.call(this,this.config.selectors.display.duration)},ot.element(this.elements.progress)&&(this.elements.display.seekTooltip=this.elements.progress.querySelector(".".concat(this.config.classNames.tooltip))),!0}catch(e){return this.debug.warn("It looks like there is a problem with your custom controls HTML",e),this.toggleNativeControls(!0),!1}},createIcon:function(e,t){var n=nn.getIconUrl.call(this),i="".concat(n.cors?"":n.url,"#").concat(this.config.iconPrefix),r=document.createElementNS("http://www.w3.org/2000/svg","svg");ft(r,qt(t,{role:"presentation",focusable:"false"}));var a=document.createElementNS("http://www.w3.org/2000/svg","use"),s="".concat(i,"-").concat(e);return"href"in a&&a.setAttributeNS("http://www.w3.org/1999/xlink","href",s),a.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",s),r.appendChild(a),r},createLabel:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=$t(e,this.config);return gt("span",Object.assign({},t,{class:[t.class,this.config.classNames.hidden].filter(Boolean).join(" ")}),n)},createBadge:function(e){if(ot.empty(e))return null;var t=gt("span",{class:this.config.classNames.menu.value});return t.appendChild(gt("span",{class:this.config.classNames.menu.badge},e)),t},createButton:function(e,t){var n=Object.assign({},t),i=Wt(e),r={element:"button",toggle:!1,label:null,icon:null,labelPressed:null,iconPressed:null};switch(["element","icon","label"].forEach(function(e){Object.keys(n).includes(e)&&(r[e]=n[e],delete n[e])}),"button"!==r.element||Object.keys(n).includes("type")||(n.type="button"),Object.keys(n).includes("class")?n.class.includes(this.config.classNames.control)||(n.class+=" ".concat(this.config.classNames.control)):n.class=this.config.classNames.control,e){case"play":r.toggle=!0,r.label="play",r.labelPressed="pause",r.icon="play",r.iconPressed="pause";break;case"mute":r.toggle=!0,r.label="mute",r.labelPressed="unmute",r.icon="volume",r.iconPressed="muted";break;case"captions":r.toggle=!0,r.label="enableCaptions",r.labelPressed="disableCaptions",r.icon="captions-off",r.iconPressed="captions-on";break;case"fullscreen":r.toggle=!0,r.label="enterFullscreen",r.labelPressed="exitFullscreen",r.icon="enter-fullscreen",r.iconPressed="exit-fullscreen";break;case"play-large":n.class+=" ".concat(this.config.classNames.control,"--overlaid"),i="play",r.label="play",r.icon="play";break;default:ot.empty(r.label)&&(r.label=i),ot.empty(r.icon)&&(r.icon=e)}var a=gt(r.element);return r.toggle?(a.appendChild(nn.createIcon.call(this,r.iconPressed,{class:"icon--pressed"})),a.appendChild(nn.createIcon.call(this,r.icon,{class:"icon--not-pressed"})),a.appendChild(nn.createLabel.call(this,r.labelPressed,{class:"label--pressed"})),a.appendChild(nn.createLabel.call(this,r.label,{class:"label--not-pressed"}))):(a.appendChild(nn.createIcon.call(this,r.icon)),a.appendChild(nn.createLabel.call(this,r.label))),qt(n,wt(this.config.selectors.buttons[i],n)),ft(a,n),"play"===i?(ot.array(this.elements.buttons[i])||(this.elements.buttons[i]=[]),this.elements.buttons[i].push(a)):this.elements.buttons[i]=a,a},createRange:function(e,t){var n=gt("input",qt(wt(this.config.selectors.inputs[e]),{type:"range",min:0,max:100,step:.01,value:0,autocomplete:"off",role:"slider","aria-label":$t(e,this.config),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":0},t));return this.elements.inputs[e]=n,nn.updateRangeFill.call(this,n),Qe.setup(n),n},createProgress:function(e,t){var n=gt("progress",qt(wt(this.config.selectors.display[e]),{min:0,max:100,value:0,role:"progressbar","aria-hidden":!0},t));if("volume"!==e){n.appendChild(gt("span",null,"0"));var i={played:"played",buffer:"buffered"}[e],r=i?$t(i,this.config):"";n.innerText="% ".concat(r.toLowerCase())}return this.elements.display[e]=n,n},createTime:function(e){var t=wt(this.config.selectors.display[e]),n=gt("div",qt(t,{class:"".concat(this.config.classNames.display.time," ").concat(t.class?t.class:"").trim(),"aria-label":$t(e,this.config)}),"00:00");return this.elements.display[e]=n,n},bindMenuItemShortcuts:function(e,t){var n=this;ut(e,"keydown keyup",function(i){if([32,38,39,40].includes(i.which)&&(i.preventDefault(),i.stopPropagation(),"keydown"!==i.type)){var r,a=St(e,'[role="menuitemradio"]');if(!a&&[32,39].includes(i.which))nn.showMenuPanel.call(n,t,!0);else 32!==i.which&&(40===i.which||a&&39===i.which?(r=e.nextElementSibling,ot.element(r)||(r=e.parentNode.firstElementChild)):(r=e.previousElementSibling,ot.element(r)||(r=e.parentNode.lastElementChild)),At.call(n,r,!0))}},!1),ut(e,"keyup",function(e){13===e.which&&nn.focusFirstMenuItem.call(n,null,!0)})},createMenuItem:function(e){var t=this,n=e.value,i=e.list,r=e.type,a=e.title,s=e.badge,o=void 0===s?null:s,l=e.checked,c=void 0!==l&&l,u=wt(this.config.selectors.inputs[r]),d=gt("button",qt(u,{type:"button",role:"menuitemradio",class:"".concat(this.config.classNames.control," ").concat(u.class?u.class:"").trim(),"aria-checked":c,value:n})),h=gt("span");h.innerHTML=a,ot.element(o)&&h.appendChild(o),d.appendChild(h),Object.defineProperty(d,"checked",{enumerable:!0,get:function(){return"true"===d.getAttribute("aria-checked")},set:function(e){e&&Array.from(d.parentNode.children).filter(function(e){return St(e,'[role="menuitemradio"]')}).forEach(function(e){return e.setAttribute("aria-checked","false")}),d.setAttribute("aria-checked",e?"true":"false")}}),this.listeners.bind(d,"click keyup",function(e){if(!ot.keyboardEvent(e)||32===e.which){switch(e.preventDefault(),e.stopPropagation(),d.checked=!0,r){case"language":t.currentTrack=Number(n);break;case"quality":t.quality=n;break;case"speed":t.speed=parseFloat(n)}nn.showMenuPanel.call(t,"home",ot.keyboardEvent(e))}},r,!1),nn.bindMenuItemShortcuts.call(this,d,r),i.appendChild(d)},formatTime:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return ot.number(e)?tn(e,Qt(this.duration)>0,t):e},updateTimeDisplay:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];ot.element(e)&&ot.number(t)&&(e.innerText=nn.formatTime(t,n))},updateVolume:function(){this.supported.ui&&(ot.element(this.elements.inputs.volume)&&nn.setRange.call(this,this.elements.inputs.volume,this.muted?0:this.volume),ot.element(this.elements.buttons.mute)&&(this.elements.buttons.mute.pressed=this.muted||0===this.volume))},setRange:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;ot.element(e)&&(e.value=t,nn.updateRangeFill.call(this,e))},updateProgress:function(e){var t=this;if(this.supported.ui&&ot.event(e)){var n,i,r=0;if(e)switch(e.type){case"timeupdate":case"seeking":case"seeked":n=this.currentTime,i=this.duration,r=0===n||0===i||Number.isNaN(n)||Number.isNaN(i)?0:(n/i*100).toFixed(2),"timeupdate"===e.type&&nn.setRange.call(this,this.elements.inputs.seek,r);break;case"playing":case"progress":!function(e,n){var i=ot.number(n)?n:0,r=ot.element(e)?e:t.elements.display.buffer;if(ot.element(r)){r.value=i;var a=r.getElementsByTagName("span")[0];ot.element(a)&&(a.childNodes[0].nodeValue=i)}}(this.elements.display.buffer,100*this.buffered)}}},updateRangeFill:function(e){var t=ot.event(e)?e.target:e;if(ot.element(t)&&"range"===t.getAttribute("type")){if(St(t,this.config.selectors.inputs.seek)){t.setAttribute("aria-valuenow",this.currentTime);var n=nn.formatTime(this.currentTime),i=nn.formatTime(this.duration),r=$t("seekLabel",this.config);t.setAttribute("aria-valuetext",r.replace("{currentTime}",n).replace("{duration}",i))}else if(St(t,this.config.selectors.inputs.volume)){var a=100*t.value;t.setAttribute("aria-valuenow",a),t.setAttribute("aria-valuetext","".concat(a.toFixed(1),"%"))}else t.setAttribute("aria-valuenow",t.value);jt.isWebkit&&t.style.setProperty("--value","".concat(t.value/t.max*100,"%"))}},updateSeekTooltip:function(e){var t=this;if(this.config.tooltips.seek&&ot.element(this.elements.inputs.seek)&&ot.element(this.elements.display.seekTooltip)&&0!==this.duration){var n=0,i=this.elements.progress.getBoundingClientRect(),r="".concat(this.config.classNames.tooltip,"--visible"),a=function(e){Tt(t.elements.display.seekTooltip,r,e)};if(this.touch)a(!1);else{if(ot.event(e))n=100/i.width*(e.pageX-i.left);else{if(!Et(this.elements.display.seekTooltip,r))return;n=parseFloat(this.elements.display.seekTooltip.style.left,10)}n<0?n=0:n>100&&(n=100),nn.updateTimeDisplay.call(this,this.elements.display.seekTooltip,this.duration/100*n),this.elements.display.seekTooltip.style.left="".concat(n,"%"),ot.event(e)&&["mouseenter","mouseleave"].includes(e.type)&&a("mouseenter"===e.type)}}},timeUpdate:function(e){var t=!ot.element(this.elements.display.duration)&&this.config.invertTime;nn.updateTimeDisplay.call(this,this.elements.display.currentTime,t?this.duration-this.currentTime:this.currentTime,t),e&&"timeupdate"===e.type&&this.media.seeking||nn.updateProgress.call(this,e)},durationUpdate:function(){if(this.supported.ui&&(this.config.invertTime||!this.currentTime)){if(this.duration>=Math.pow(2,32))return _t(this.elements.display.currentTime,!0),void _t(this.elements.progress,!0);ot.element(this.elements.inputs.seek)&&this.elements.inputs.seek.setAttribute("aria-valuemax",this.duration);var e=ot.element(this.elements.display.duration);!e&&this.config.displayDuration&&this.paused&&nn.updateTimeDisplay.call(this,this.elements.display.currentTime,this.duration),e&&nn.updateTimeDisplay.call(this,this.elements.display.duration,this.duration),nn.updateSeekTooltip.call(this)}},toggleMenuButton:function(e,t){_t(this.elements.settings.buttons[e],!t)},updateSetting:function(e,t,n){var i=this.elements.settings.panels[e],r=null,a=t;if("captions"===e)r=this.currentTrack;else{if(r=ot.empty(n)?this[e]:n,ot.empty(r)&&(r=this.config[e].default),!ot.empty(this.options[e])&&!this.options[e].includes(r))return void this.debug.warn("Unsupported value of '".concat(r,"' for ").concat(e));if(!this.config[e].options.includes(r))return void this.debug.warn("Disabled value of '".concat(r,"' for ").concat(e))}if(ot.element(a)||(a=i&&i.querySelector('[role="menu"]')),ot.element(a)){this.elements.settings.buttons[e].querySelector(".".concat(this.config.classNames.menu.value)).innerHTML=nn.getLabel.call(this,e,r);var s=a&&a.querySelector('[value="'.concat(r,'"]'));ot.element(s)&&(s.checked=!0)}},getLabel:function(e,t){switch(e){case"speed":return 1===t?$t("normal",this.config):"".concat(t,"×");case"quality":if(ot.number(t)){var n=$t("qualityLabel.".concat(t),this.config);return n.length?n:"".concat(t,"p")}return zt(t);case"captions":return sn.getLabel.call(this);default:return null}},setQualityMenu:function(e){var t=this;if(ot.element(this.elements.settings.panels.quality)){var n=this.elements.settings.panels.quality.querySelector('[role="menu"]');ot.array(e)&&(this.options.quality=Bt(e).filter(function(e){return t.config.quality.options.includes(e)}));var i=!ot.empty(this.options.quality)&&this.options.quality.length>1;if(nn.toggleMenuButton.call(this,"quality",i),bt(n),nn.checkMenu.call(this),i){var r=function(e){var n=$t("qualityBadge.".concat(e),t.config);return n.length?nn.createBadge.call(t,n):null};this.options.quality.sort(function(e,n){var i=t.config.quality.options;return i.indexOf(e)>i.indexOf(n)?1:-1}).forEach(function(e){nn.createMenuItem.call(t,{value:e,list:n,type:"quality",title:nn.getLabel.call(t,"quality",e),badge:r(e)})}),nn.updateSetting.call(this,"quality",n)}}},setCaptionsMenu:function(){var e=this;if(ot.element(this.elements.settings.panels.captions)){var t=this.elements.settings.panels.captions.querySelector('[role="menu"]'),n=sn.getTracks.call(this),i=Boolean(n.length);if(nn.toggleMenuButton.call(this,"captions",i),bt(t),nn.checkMenu.call(this),i){var r=n.map(function(n,i){return{value:i,checked:e.captions.toggled&&e.currentTrack===i,title:sn.getLabel.call(e,n),badge:n.language&&nn.createBadge.call(e,n.language.toUpperCase()),list:t,type:"language"}});r.unshift({value:-1,checked:!this.captions.toggled,title:$t("disabled",this.config),list:t,type:"language"}),r.forEach(nn.createMenuItem.bind(this)),nn.updateSetting.call(this,"captions",t)}}},setSpeedMenu:function(e){var t=this;if(ot.element(this.elements.settings.panels.speed)){var n=this.elements.settings.panels.speed.querySelector('[role="menu"]');ot.array(e)?this.options.speed=e:(this.isHTML5||this.isVimeo)&&(this.options.speed=[.5,.75,1,1.25,1.5,1.75,2]),this.options.speed=this.options.speed.filter(function(e){return t.config.speed.options.includes(e)});var i=!ot.empty(this.options.speed)&&this.options.speed.length>1;nn.toggleMenuButton.call(this,"speed",i),bt(n),nn.checkMenu.call(this),i&&(this.options.speed.forEach(function(e){nn.createMenuItem.call(t,{value:e,list:n,type:"speed",title:nn.getLabel.call(t,"speed",e)})}),nn.updateSetting.call(this,"speed",n))}},checkMenu:function(){var e=this.elements.settings.buttons,t=!ot.empty(e)&&Object.values(e).some(function(e){return!e.hidden});_t(this.elements.settings.menu,!t)},focusFirstMenuItem:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!this.elements.settings.popup.hidden){var n=e;ot.element(n)||(n=Object.values(this.elements.settings.panels).find(function(e){return!e.hidden}));var i=n.querySelector('[role^="menuitem"]');At.call(this,i,t)}},toggleMenu:function(e){var t=this.elements.settings.popup,n=this.elements.buttons.settings;if(ot.element(t)&&ot.element(n)){var i=t.hidden,r=i;if(ot.boolean(e))r=e;else if(ot.keyboardEvent(e)&&27===e.which)r=!1;else if(ot.event(e)){var a=t.contains(e.target);if(a||!a&&e.target!==n&&r)return}n.setAttribute("aria-expanded",r),_t(t,!r),Tt(this.elements.container,this.config.classNames.menu.open,r),r&&ot.keyboardEvent(e)?nn.focusFirstMenuItem.call(this,null,!0):r||i||At.call(this,n,ot.keyboardEvent(e))}},getMenuSize:function(e){var t=e.cloneNode(!0);t.style.position="absolute",t.style.opacity=0,t.removeAttribute("hidden"),e.parentNode.appendChild(t);var n=t.scrollWidth,i=t.scrollHeight;return vt(t),{width:n,height:i}},showMenuPanel:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=document.getElementById("plyr-settings-".concat(this.id,"-").concat(t));if(ot.element(i)){var r=i.parentNode,a=Array.from(r.children).find(function(e){return!e.hidden});if(Dt.transitions&&!Dt.reducedMotion){r.style.width="".concat(a.scrollWidth,"px"),r.style.height="".concat(a.scrollHeight,"px");var s=nn.getMenuSize.call(this,i);ut.call(this,r,Nt,function t(n){n.target===r&&["width","height"].includes(n.propertyName)&&(r.style.width="",r.style.height="",dt.call(e,r,Nt,t))}),r.style.width="".concat(s.width,"px"),r.style.height="".concat(s.height,"px")}_t(a,!0),_t(i,!1),nn.focusFirstMenuItem.call(this,i,n)}},setDownloadLink:function(){var e=this.elements.buttons.download;ot.element(e)&&e.setAttribute("href",this.download)},create:function(e){var t=this,n=gt("div",wt(this.config.selectors.controls.wrapper));if(this.config.controls.includes("restart")&&n.appendChild(nn.createButton.call(this,"restart")),this.config.controls.includes("rewind")&&n.appendChild(nn.createButton.call(this,"rewind")),this.config.controls.includes("play")&&n.appendChild(nn.createButton.call(this,"play")),this.config.controls.includes("fast-forward")&&n.appendChild(nn.createButton.call(this,"fast-forward")),this.config.controls.includes("progress")){var i=gt("div",wt(this.config.selectors.progress));if(i.appendChild(nn.createRange.call(this,"seek",{id:"plyr-seek-".concat(e.id)})),i.appendChild(nn.createProgress.call(this,"buffer")),this.config.tooltips.seek){var r=gt("span",{class:this.config.classNames.tooltip},"00:00");i.appendChild(r),this.elements.display.seekTooltip=r}this.elements.progress=i,n.appendChild(this.elements.progress)}if(this.config.controls.includes("current-time")&&n.appendChild(nn.createTime.call(this,"currentTime")),this.config.controls.includes("duration")&&n.appendChild(nn.createTime.call(this,"duration")),this.config.controls.includes("mute")||this.config.controls.includes("volume")){var a=gt("div",{class:"plyr__volume"});if(this.config.controls.includes("mute")&&a.appendChild(nn.createButton.call(this,"mute")),this.config.controls.includes("volume")){var s={max:1,step:.05,value:this.config.volume};a.appendChild(nn.createRange.call(this,"volume",qt(s,{id:"plyr-volume-".concat(e.id)}))),this.elements.volume=a}n.appendChild(a)}if(this.config.controls.includes("captions")&&n.appendChild(nn.createButton.call(this,"captions")),this.config.controls.includes("settings")&&!ot.empty(this.config.settings)){var o=gt("div",{class:"plyr__menu",hidden:""});o.appendChild(nn.createButton.call(this,"settings",{"aria-haspopup":!0,"aria-controls":"plyr-settings-".concat(e.id),"aria-expanded":!1}));var l=gt("div",{class:"plyr__menu__container",id:"plyr-settings-".concat(e.id),hidden:""}),c=gt("div"),u=gt("div",{id:"plyr-settings-".concat(e.id,"-home")}),d=gt("div",{role:"menu"});u.appendChild(d),c.appendChild(u),this.elements.settings.panels.home=u,this.config.settings.forEach(function(n){var i=gt("button",qt(wt(t.config.selectors.buttons.settings),{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--forward"),role:"menuitem","aria-haspopup":!0,hidden:""}));nn.bindMenuItemShortcuts.call(t,i,n),ut(i,"click",function(){nn.showMenuPanel.call(t,n,!1)});var r=gt("span",null,$t(n,t.config)),a=gt("span",{class:t.config.classNames.menu.value});a.innerHTML=e[n],r.appendChild(a),i.appendChild(r),d.appendChild(i);var s=gt("div",{id:"plyr-settings-".concat(e.id,"-").concat(n),hidden:""}),o=gt("button",{type:"button",class:"".concat(t.config.classNames.control," ").concat(t.config.classNames.control,"--back")});o.appendChild(gt("span",{"aria-hidden":!0},$t(n,t.config))),o.appendChild(gt("span",{class:t.config.classNames.hidden},$t("menuBack",t.config))),ut(s,"keydown",function(e){37===e.which&&(e.preventDefault(),e.stopPropagation(),nn.showMenuPanel.call(t,"home",!0))},!1),ut(o,"click",function(){nn.showMenuPanel.call(t,"home",!1)}),s.appendChild(o),s.appendChild(gt("div",{role:"menu"})),c.appendChild(s),t.elements.settings.buttons[n]=i,t.elements.settings.panels[n]=s}),l.appendChild(c),o.appendChild(l),n.appendChild(o),this.elements.settings.popup=l,this.elements.settings.menu=o}if(this.config.controls.includes("pip")&&Dt.pip&&n.appendChild(nn.createButton.call(this,"pip")),this.config.controls.includes("airplay")&&Dt.airplay&&n.appendChild(nn.createButton.call(this,"airplay")),this.config.controls.includes("download")){var h={element:"a",href:this.download,target:"_blank"},p=this.config.urls.download;!ot.url(p)&&this.isEmbed&&qt(h,{icon:"logo-".concat(this.provider),label:this.provider}),n.appendChild(nn.createButton.call(this,"download",h))}return this.config.controls.includes("fullscreen")&&n.appendChild(nn.createButton.call(this,"fullscreen")),this.config.controls.includes("play-large")&&this.elements.container.appendChild(nn.createButton.call(this,"play-large")),this.elements.controls=n,this.isHTML5&&nn.setQualityMenu.call(this,Ft.getQualityOptions.call(this)),nn.setSpeedMenu.call(this),n},inject:function(){var e=this;if(this.config.loadSprite){var t=nn.getIconUrl.call(this);t.cors&&Gt(t.url,"sprite-plyr")}this.id=Math.floor(1e4*Math.random());var n=null;this.elements.controls=null;var i={id:this.id,seektime:this.config.seekTime,title:this.config.title},r=!0;ot.function(this.config.controls)&&(this.config.controls=this.config.controls.call(this,i)),this.config.controls||(this.config.controls=[]),ot.element(this.config.controls)||ot.string(this.config.controls)?n=this.config.controls:(n=nn.create.call(this,{id:this.id,seektime:this.config.seekTime,speed:this.speed,quality:this.quality,captions:sn.getLabel.call(this)}),r=!1);var a,s=function(e){var t=e;return Object.entries(i).forEach(function(e){var n=He(e,2),i=n[0],r=n[1];t=Vt(t,"{".concat(i,"}"),r)}),t};if(r&&(ot.string(this.config.controls)?n=s(n):ot.element(n)&&(n.innerHTML=s(n.innerHTML))),ot.string(this.config.selectors.controls.container)&&(a=document.querySelector(this.config.selectors.controls.container)),ot.element(a)||(a=this.elements.container),a[ot.element(n)?"insertAdjacentElement":"insertAdjacentHTML"]("afterbegin",n),ot.element(this.elements.controls)||nn.findElements.call(this),!ot.empty(this.elements.buttons)){var o=function(t){var n=e.config.classNames.controlPressed;Object.defineProperty(t,"pressed",{enumerable:!0,get:function(){return Et(t,n)},set:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Tt(t,n,e)}})};Object.values(this.elements.buttons).filter(Boolean).forEach(function(e){ot.array(e)||ot.nodeList(e)?Array.from(e).filter(Boolean).forEach(o):o(e)})}if(jt.isEdge&&Lt(a),this.config.tooltips.controls){var l=this.config,c=l.classNames,u=l.selectors,d="".concat(u.controls.wrapper," ").concat(u.labels," .").concat(c.hidden),h=Ct.call(this,d);Array.from(h).forEach(function(t){Tt(t,e.config.classNames.hidden,!1),Tt(t,e.config.classNames.tooltip,!0)})}}};function rn(e){var t=e;if(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]){var n=document.createElement("a");n.href=t,t=n.href}try{return new URL(t)}catch(e){return null}}function an(e){var t=new URLSearchParams;return ot.object(e)&&Object.entries(e).forEach(function(e){var n=He(e,2),i=n[0],r=n[1];t.set(i,r)}),t}var sn={setup:function(){if(this.supported.ui)if(!this.isVideo||this.isYouTube||this.isHTML5&&!Dt.textTracks)ot.array(this.config.controls)&&this.config.controls.includes("settings")&&this.config.settings.includes("captions")&&nn.setCaptionsMenu.call(this);else{var e,t;if(ot.element(this.elements.captions)||(this.elements.captions=gt("div",wt(this.config.selectors.captions)),e=this.elements.captions,t=this.elements.wrapper,ot.element(e)&&ot.element(t)&&t.parentNode.insertBefore(e,t.nextSibling)),jt.isIE&&window.URL){var n=this.media.querySelectorAll("track");Array.from(n).forEach(function(e){var t=e.getAttribute("src"),n=rn(t);null!==n&&n.hostname!==window.location.href.hostname&&["http:","https:"].includes(n.protocol)&&Jt(t,"blob").then(function(t){e.setAttribute("src",window.URL.createObjectURL(t))}).catch(function(){vt(e)})})}var i=Bt((navigator.languages||[navigator.language||navigator.userLanguage||"en"]).map(function(e){return e.split("-")[0]})),r=(this.storage.get("language")||this.config.captions.language||"auto").toLowerCase();if("auto"===r)r=He(i,1)[0];var a=this.storage.get("captions");if(ot.boolean(a)||(a=this.config.captions.active),Object.assign(this.captions,{toggled:!1,active:a,language:r,languages:i}),this.isHTML5){var s=this.config.captions.update?"addtrack removetrack":"removetrack";ut.call(this,this.media.textTracks,s,sn.update.bind(this))}setTimeout(sn.update.bind(this),0)}},update:function(){var e=this,t=sn.getTracks.call(this,!0),n=this.captions,i=n.active,r=n.language,a=n.meta,s=n.currentTrackNode,o=Boolean(t.find(function(e){return e.language===r}));this.isHTML5&&this.isVideo&&t.filter(function(e){return!a.get(e)}).forEach(function(t){e.debug.log("Track added",t),a.set(t,{default:"showing"===t.mode}),t.mode="hidden",ut.call(e,t,"cuechange",function(){return sn.updateCues.call(e)})}),(o&&this.language!==r||!t.includes(s))&&(sn.setLanguage.call(this,r),sn.toggle.call(this,i&&o)),Tt(this.elements.container,this.config.classNames.captions.enabled,!ot.empty(t)),(this.config.controls||[]).includes("settings")&&this.config.settings.includes("captions")&&nn.setCaptionsMenu.call(this)},toggle:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(this.supported.ui){var n=this.captions.toggled,i=this.config.classNames.captions.active,r=ot.nullOrUndefined(e)?!n:e;if(r!==n){if(t||(this.captions.active=r,this.storage.set({captions:r})),!this.language&&r&&!t){var a=sn.getTracks.call(this),s=sn.findTrack.call(this,[this.captions.language].concat(qe(this.captions.languages)),!0);return this.captions.language=s.language,void sn.set.call(this,a.indexOf(s))}this.elements.buttons.captions&&(this.elements.buttons.captions.pressed=r),Tt(this.elements.container,i,r),this.captions.toggled=r,nn.updateSetting.call(this,"captions"),pt.call(this,this.media,r?"captionsenabled":"captionsdisabled")}}},set:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=sn.getTracks.call(this);if(-1!==e)if(ot.number(e))if(e in n){if(this.captions.currentTrack!==e){this.captions.currentTrack=e;var i=n[e],r=(i||{}).language;this.captions.currentTrackNode=i,nn.updateSetting.call(this,"captions"),t||(this.captions.language=r,this.storage.set({language:r})),this.isVimeo&&this.embed.enableTextTrack(r),pt.call(this,this.media,"languagechange")}sn.toggle.call(this,!0,t),this.isHTML5&&this.isVideo&&sn.updateCues.call(this)}else this.debug.warn("Track not found",e);else this.debug.warn("Invalid caption argument",e);else sn.toggle.call(this,!1,t)},setLanguage:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(ot.string(e)){var n=e.toLowerCase();this.captions.language=n;var i=sn.getTracks.call(this),r=sn.findTrack.call(this,[n]);sn.set.call(this,i.indexOf(r),t)}else this.debug.warn("Invalid language argument",e)},getTracks:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return Array.from((this.media||{}).textTracks||[]).filter(function(n){return!e.isHTML5||t||e.captions.meta.has(n)}).filter(function(e){return["captions","subtitles"].includes(e.kind)})},findTrack:function(e){var t,n=this,i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=sn.getTracks.call(this),a=function(e){return Number((n.captions.meta.get(e)||{}).default)},s=Array.from(r).sort(function(e,t){return a(t)-a(e)});return e.every(function(e){return!(t=s.find(function(t){return t.language===e}))}),t||(i?s[0]:void 0)},getCurrentTrack:function(){return sn.getTracks.call(this)[this.currentTrack]},getLabel:function(e){var t=e;return!ot.track(t)&&Dt.textTracks&&this.captions.toggled&&(t=sn.getCurrentTrack.call(this)),ot.track(t)?ot.empty(t.label)?ot.empty(t.language)?$t("enabled",this.config):e.language.toUpperCase():t.label:$t("disabled",this.config)},updateCues:function(e){if(this.supported.ui)if(ot.element(this.elements.captions))if(ot.nullOrUndefined(e)||Array.isArray(e)){var t=e;if(!t){var n=sn.getCurrentTrack.call(this);t=Array.from((n||{}).activeCues||[]).map(function(e){return e.getCueAsHTML()}).map(Kt)}var i=t.map(function(e){return e.trim()}).join("\n");if(i!==this.elements.captions.innerHTML){bt(this.elements.captions);var r=gt("span",wt(this.config.selectors.caption));r.innerHTML=i,this.elements.captions.appendChild(r),pt.call(this,this.media,"cuechange")}}else this.debug.warn("updateCues: Invalid input",e);else this.debug.warn("No captions element to render to")}},on={enabled:!0,title:"",debug:!1,autoplay:!1,autopause:!0,playsinline:!0,seekTime:10,volume:1,muted:!1,duration:null,displayDuration:!0,invertTime:!0,toggleInvert:!0,ratio:"16:9",clickToPlay:!0,hideControls:!0,resetOnEnd:!1,disableContextMenu:!0,loadSprite:!0,iconPrefix:"plyr",iconUrl:"https://cdn.plyr.io/3.5.0-beta.5/plyr.svg",blankVideo:"https://cdn.plyr.io/static/blank.mp4",quality:{default:576,options:[4320,2880,2160,1440,1080,720,576,480,360,240]},loop:{active:!1},speed:{selected:1,options:[.5,.75,1,1.25,1.5,1.75,2]},keyboard:{focused:!0,global:!1},tooltips:{controls:!1,seek:!0},captions:{active:!1,language:"auto",update:!1},fullscreen:{enabled:!0,fallback:!0,iosNative:!1},storage:{enabled:!0,key:"plyr"},controls:["play-large","play","progress","current-time","mute","volume","captions","settings","pip","airplay","fullscreen"],settings:["captions","quality","speed"],i18n:{restart:"Restart",rewind:"Rewind {seektime}s",play:"Play",pause:"Pause",fastForward:"Forward {seektime}s",seek:"Seek",seekLabel:"{currentTime} of {duration}",played:"Played",buffered:"Buffered",currentTime:"Current time",duration:"Duration",volume:"Volume",mute:"Mute",unmute:"Unmute",enableCaptions:"Enable captions",disableCaptions:"Disable captions",download:"Download",enterFullscreen:"Enter fullscreen",exitFullscreen:"Exit fullscreen",frameTitle:"Player for {title}",captions:"Captions",settings:"Settings",menuBack:"Go back to previous menu",speed:"Speed",normal:"Normal",quality:"Quality",loop:"Loop",start:"Start",end:"End",all:"All",reset:"Reset",disabled:"Disabled",enabled:"Enabled",advertisement:"Ad",qualityBadge:{2160:"4K",1440:"HD",1080:"HD",720:"HD",576:"SD",480:"SD"}},urls:{download:null,vimeo:{sdk:"https://player.vimeo.com/api/player.js",iframe:"https://player.vimeo.com/video/{0}?{1}",api:"https://vimeo.com/api/v2/video/{0}.json"},youtube:{sdk:"https://www.youtube.com/iframe_api",api:"https://www.googleapis.com/youtube/v3/videos?id={0}&key={1}&fields=items(snippet(title))&part=snippet"},googleIMA:{sdk:"https://imasdk.googleapis.com/js/sdkloader/ima3.js"}},listeners:{seek:null,play:null,pause:null,restart:null,rewind:null,fastForward:null,mute:null,volume:null,captions:null,download:null,fullscreen:null,pip:null,airplay:null,speed:null,quality:null,loop:null,language:null},events:["ended","progress","stalled","playing","waiting","canplay","canplaythrough","loadstart","loadeddata","loadedmetadata","timeupdate","volumechange","play","pause","error","seeking","seeked","emptied","ratechange","cuechange","download","enterfullscreen","exitfullscreen","captionsenabled","captionsdisabled","languagechange","controlshidden","controlsshown","ready","statechange","qualitychange","adsloaded","adscontentpause","adscontentresume","adstarted","adsmidpoint","adscomplete","adsallcomplete","adsimpression","adsclick"],selectors:{editable:"input, textarea, select, [contenteditable]",container:".plyr",controls:{container:null,wrapper:".plyr__controls"},labels:"[data-plyr]",buttons:{play:'[data-plyr="play"]',pause:'[data-plyr="pause"]',restart:'[data-plyr="restart"]',rewind:'[data-plyr="rewind"]',fastForward:'[data-plyr="fast-forward"]',mute:'[data-plyr="mute"]',captions:'[data-plyr="captions"]',download:'[data-plyr="download"]',fullscreen:'[data-plyr="fullscreen"]',pip:'[data-plyr="pip"]',airplay:'[data-plyr="airplay"]',settings:'[data-plyr="settings"]',loop:'[data-plyr="loop"]'},inputs:{seek:'[data-plyr="seek"]',volume:'[data-plyr="volume"]',speed:'[data-plyr="speed"]',language:'[data-plyr="language"]',quality:'[data-plyr="quality"]'},display:{currentTime:".plyr__time--current",duration:".plyr__time--duration",buffer:".plyr__progress__buffer",loop:".plyr__progress__loop",volume:".plyr__volume--display"},progress:".plyr__progress",captions:".plyr__captions",caption:".plyr__caption",menu:{quality:".js-plyr__menu__list--quality"}},classNames:{type:"plyr--{0}",provider:"plyr--{0}",video:"plyr__video-wrapper",embed:"plyr__video-embed",embedContainer:"plyr__video-embed__container",poster:"plyr__poster",posterEnabled:"plyr__poster-enabled",ads:"plyr__ads",control:"plyr__control",controlPressed:"plyr__control--pressed",playing:"plyr--playing",paused:"plyr--paused",stopped:"plyr--stopped",loading:"plyr--loading",hover:"plyr--hover",tooltip:"plyr__tooltip",cues:"plyr__cues",hidden:"plyr__sr-only",hideControls:"plyr--hide-controls",isIos:"plyr--is-ios",isTouch:"plyr--is-touch",uiSupported:"plyr--full-ui",noTransition:"plyr--no-transition",display:{time:"plyr__time"},menu:{value:"plyr__menu__value",badge:"plyr__badge",open:"plyr--menu-open"},captions:{enabled:"plyr--captions-enabled",active:"plyr--captions-active"},fullscreen:{enabled:"plyr--fullscreen-enabled",fallback:"plyr--fullscreen-fallback"},pip:{supported:"plyr--pip-supported",active:"plyr--pip-active"},airplay:{supported:"plyr--airplay-supported",active:"plyr--airplay-active"},tabFocus:"plyr__tab-focus",previewThumbnails:{thumbContainer:"plyr__preview-thumb",thumbContainerShown:"plyr__preview-thumb--is-shown",imageContainer:"plyr__preview-thumb__image-container",timeContainer:"plyr__preview-thumb__time-container",scrubbingContainer:"plyr__preview-scrubbing",scrubbingContainerShown:"plyr__preview-scrubbing--is-shown"}},attributes:{embed:{provider:"data-plyr-provider",id:"data-plyr-embed-id"}},keys:{google:null},ads:{enabled:!1,publisherId:"",tagUrl:""},previewThumbnails:{enabled:!1,src:""},vimeo:{byline:!1,portrait:!1,title:!1,speed:!0,transparent:!1},youtube:{noCookie:!1,rel:0,showinfo:0,iv_load_policy:3,modestbranding:1}},ln="picture-in-picture",cn="inline",un={html5:"html5",youtube:"youtube",vimeo:"vimeo"},dn={audio:"audio",video:"video"};var hn=function(){},pn=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];Re(this,e),this.enabled=window.console&&t,this.enabled&&this.log("Debugging enabled")}return Fe(e,[{key:"log",get:function(){return this.enabled?Function.prototype.bind.call(console.log,console):hn}},{key:"warn",get:function(){return this.enabled?Function.prototype.bind.call(console.warn,console):hn}},{key:"error",get:function(){return this.enabled?Function.prototype.bind.call(console.error,console):hn}}]),e}();function mn(){if(this.enabled){var e=this.player.elements.buttons.fullscreen;ot.element(e)&&(e.pressed=this.active),pt.call(this.player,this.target,this.active?"enterfullscreen":"exitfullscreen",!0),jt.isIos||function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(ot.element(e)){var n=Ct.call(this,"button:not(:disabled), input:not(:disabled), [tabindex]"),i=n[0],r=n[n.length-1];ct.call(this,this.elements.container,"keydown",function(e){if("Tab"===e.key&&9===e.keyCode){var t=document.activeElement;t!==r||e.shiftKey?t===i&&e.shiftKey&&(r.focus(),e.preventDefault()):(i.focus(),e.preventDefault())}},t,!1)}}.call(this.player,this.target,this.active)}}function fn(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(t?this.scrollPosition={x:window.scrollX||0,y:window.scrollY||0}:window.scrollTo(this.scrollPosition.x,this.scrollPosition.y),document.body.style.overflow=t?"hidden":"",Tt(this.target,this.player.config.classNames.fullscreen.fallback,t),jt.isIos){var n=document.head.querySelector('meta[name="viewport"]'),i="viewport-fit=cover";n||(n=document.createElement("meta")).setAttribute("name","viewport");var r=ot.string(n.content)&&n.content.includes(i);t?(this.cleanupViewport=!r,r||(n.content+=",".concat(i))):this.cleanupViewport&&(n.content=n.content.split(",").filter(function(e){return e.trim()!==i}).join(",")),setTimeout(function(){return Lt(e.target)},100)}mn.call(this)}var gn=function(){function e(t){var n=this;Re(this,e),this.player=t,this.prefix=e.prefix,this.property=e.property,this.scrollPosition={x:0,y:0},this.forceFallback="force"===t.config.fullscreen.fallback,ut.call(this.player,document,"ms"===this.prefix?"MSFullscreenChange":"".concat(this.prefix,"fullscreenchange"),function(){mn.call(n)}),ut.call(this.player,this.player.elements.container,"dblclick",function(e){ot.element(n.player.elements.controls)&&n.player.elements.controls.contains(e.target)||n.toggle()}),this.update()}return Fe(e,[{key:"update",value:function(){var t;this.enabled?(t=this.forceFallback?"Fallback (forced)":e.native?"Native":"Fallback",this.player.debug.log("".concat(t," fullscreen enabled"))):this.player.debug.log("Fullscreen not supported and fallback disabled");Tt(this.player.elements.container,this.player.config.classNames.fullscreen.enabled,this.enabled)}},{key:"enter",value:function(){this.enabled&&(jt.isIos&&this.player.config.fullscreen.iosNative?this.target.webkitEnterFullscreen():!e.native||this.forceFallback?fn.call(this,!0):this.prefix?ot.empty(this.prefix)||this.target["".concat(this.prefix,"Request").concat(this.property)]():this.target.requestFullscreen())}},{key:"exit",value:function(){if(this.enabled)if(jt.isIos&&this.player.config.fullscreen.iosNative)this.target.webkitExitFullscreen(),this.player.play();else if(!e.native||this.forceFallback)fn.call(this,!1);else if(this.prefix){if(!ot.empty(this.prefix)){var t="moz"===this.prefix?"Cancel":"Exit";document["".concat(this.prefix).concat(t).concat(this.property)]()}}else(document.cancelFullScreen||document.exitFullscreen).call(document)}},{key:"toggle",value:function(){this.active?this.exit():this.enter()}},{key:"usingNative",get:function(){return e.native&&!this.forceFallback}},{key:"enabled",get:function(){return(e.native||this.player.config.fullscreen.fallback)&&this.player.config.fullscreen.enabled&&this.player.supported.ui&&this.player.isVideo}},{key:"active",get:function(){return!!this.enabled&&(!e.native||this.forceFallback?Et(this.target,this.player.config.classNames.fullscreen.fallback):(this.prefix?document["".concat(this.prefix).concat(this.property,"Element")]:document.fullscreenElement)===this.target)}},{key:"target",get:function(){return jt.isIos&&this.player.config.fullscreen.iosNative?this.player.media:this.player.elements.container}}],[{key:"native",get:function(){return!!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled)}},{key:"prefix",get:function(){if(ot.function(document.exitFullscreen))return"";var e="";return["webkit","moz","ms"].some(function(t){return!(!ot.function(document["".concat(t,"ExitFullscreen")])&&!ot.function(document["".concat(t,"CancelFullScreen")]))&&(e=t,!0)}),e}},{key:"property",get:function(){return"moz"===this.prefix?"FullScreen":"Fullscreen"}}]),e}();function yn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return new Promise(function(n,i){var r=new Image,a=function(){delete r.onload,delete r.onerror,(r.naturalWidth>=t?n:i)(r)};Object.assign(r,{onload:a,onerror:a,src:e})})}var vn={addStyleHook:function(){Tt(this.elements.container,this.config.selectors.container.replace(".",""),!0),Tt(this.elements.container,this.config.classNames.uiSupported,this.supported.ui)},toggleNativeControls:function(){arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&this.isHTML5?this.media.setAttribute("controls",""):this.media.removeAttribute("controls")},build:function(){var e=this;if(this.listeners.media(),!this.supported.ui)return this.debug.warn("Basic support only for ".concat(this.provider," ").concat(this.type)),void vn.toggleNativeControls.call(this,!0);ot.element(this.elements.controls)||(nn.inject.call(this),this.listeners.controls()),vn.toggleNativeControls.call(this),this.isHTML5&&sn.setup.call(this),this.volume=null,this.muted=null,this.speed=null,this.loop=null,this.quality=null,nn.updateVolume.call(this),nn.timeUpdate.call(this),vn.checkPlaying.call(this),Tt(this.elements.container,this.config.classNames.pip.supported,Dt.pip&&this.isHTML5&&this.isVideo),Tt(this.elements.container,this.config.classNames.airplay.supported,Dt.airplay&&this.isHTML5),Tt(this.elements.container,this.config.classNames.isIos,jt.isIos),Tt(this.elements.container,this.config.classNames.isTouch,this.touch),this.ready=!0,setTimeout(function(){pt.call(e,e.media,"ready")},0),vn.setTitle.call(this),this.poster&&vn.setPoster.call(this,this.poster,!1).catch(function(){}),this.config.duration&&nn.durationUpdate.call(this)},setTitle:function(){var e=$t("play",this.config);if(ot.string(this.config.title)&&!ot.empty(this.config.title)&&(e+=", ".concat(this.config.title)),Array.from(this.elements.buttons.play||[]).forEach(function(t){t.setAttribute("aria-label",e)}),this.isEmbed){var t=xt.call(this,"iframe");if(!ot.element(t))return;var n=ot.empty(this.config.title)?"video":this.config.title,i=$t("frameTitle",this.config);t.setAttribute("title",i.replace("{title}",n))}},togglePoster:function(e){Tt(this.elements.container,this.config.classNames.posterEnabled,e)},setPoster:function(e){var t=this;return arguments.length>1&&void 0!==arguments[1]&&!arguments[1]||!this.poster?(this.media.setAttribute("poster",e),function(){var e=this;return new Promise(function(t){return e.ready?setTimeout(t,0):ut.call(e,e.elements.container,"ready",t)}).then(function(){})}.call(this).then(function(){return yn(e)}).catch(function(n){throw e===t.poster&&vn.togglePoster.call(t,!1),n}).then(function(){if(e!==t.poster)throw new Error("setPoster cancelled by later call to setPoster")}).then(function(){return Object.assign(t.elements.poster.style,{backgroundImage:"url('".concat(e,"')"),backgroundSize:""}),vn.togglePoster.call(t,!0),e})):Promise.reject(new Error("Poster already set"))},checkPlaying:function(e){var t=this;Tt(this.elements.container,this.config.classNames.playing,this.playing),Tt(this.elements.container,this.config.classNames.paused,this.paused),Tt(this.elements.container,this.config.classNames.stopped,this.stopped),Array.from(this.elements.buttons.play||[]).forEach(function(e){e.pressed=t.playing}),ot.event(e)&&"timeupdate"===e.type||vn.toggleControls.call(this)},checkLoading:function(e){var t=this;this.loading=["stalled","waiting"].includes(e.type),clearTimeout(this.timers.loading),this.timers.loading=setTimeout(function(){Tt(t.elements.container,t.config.classNames.loading,t.loading),vn.toggleControls.call(t)},this.loading?250:0)},toggleControls:function(e){var t=this.elements.controls;if(t&&this.config.hideControls){var n=this.touch&&this.lastSeekTime+2e3>Date.now();this.toggleControls(Boolean(e||this.loading||this.paused||t.pressed||t.hover||n))}}};function bn(e){var t=e;ot.string(t)||ot.nullOrUndefined(this.embed)||(t=this.embed.ratio),ot.string(t)||(t=this.config.ratio);var n=He(t.split(":").map(Number),2),i=100/n[0]*n[1];if(this.elements.wrapper.style.paddingBottom="".concat(i,"%"),this.isVimeo&&this.supported.ui){var r=(240-i)/4.8;this.media.style.transform="translateY(-".concat(r,"%)")}return{padding:i,ratio:t}}var kn=function(){function e(t){Re(this,e),this.player=t,this.lastKey=null,this.focusTimer=null,this.lastKeyDown=null,this.handleKey=this.handleKey.bind(this),this.toggleMenu=this.toggleMenu.bind(this),this.setTabFocus=this.setTabFocus.bind(this),this.firstTouch=this.firstTouch.bind(this)}return Fe(e,[{key:"handleKey",value:function(e){var t=this.player,n=t.elements,i=e.keyCode?e.keyCode:e.which,r="keydown"===e.type,a=r&&i===this.lastKey;if(!(e.altKey||e.ctrlKey||e.metaKey||e.shiftKey)&&ot.number(i)){if(r){var s=document.activeElement;if(ot.element(s)){var o=t.config.selectors.editable;if(s!==n.inputs.seek&&St(s,o))return;if(32===e.which&&St(s,'button, [role^="menuitem"]'))return}switch([32,37,38,39,40,48,49,50,51,52,53,54,56,57,67,70,73,75,76,77,79].includes(i)&&(e.preventDefault(),e.stopPropagation()),i){case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:a||(t.currentTime=t.duration/10*(i-48));break;case 32:case 75:a||t.togglePlay();break;case 38:t.increaseVolume(.1);break;case 40:t.decreaseVolume(.1);break;case 77:a||(t.muted=!t.muted);break;case 39:t.forward();break;case 37:t.rewind();break;case 70:t.fullscreen.toggle();break;case 67:a||t.toggleCaptions();break;case 76:t.loop=!t.loop}27===i&&!t.fullscreen.usingNative&&t.fullscreen.active&&t.fullscreen.toggle(),this.lastKey=i}else this.lastKey=null}}},{key:"toggleMenu",value:function(e){nn.toggleMenu.call(this.player,e)}},{key:"firstTouch",value:function(){var e=this.player,t=e.elements;e.touch=!0,Tt(t.container,e.config.classNames.isTouch,!0)}},{key:"setTabFocus",value:function(e){var t=this.player,n=t.elements;if(clearTimeout(this.focusTimer),"keydown"!==e.type||9===e.which){"keydown"===e.type&&(this.lastKeyDown=e.timeStamp);var i,r=e.timeStamp-this.lastKeyDown<=20;if("focus"!==e.type||r)i=t.config.classNames.tabFocus,Tt(Ct.call(t,".".concat(i)),i,!1),this.focusTimer=setTimeout(function(){var e=document.activeElement;n.container.contains(e)&&Tt(document.activeElement,t.config.classNames.tabFocus,!0)},10)}}},{key:"global",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.player;t.config.keyboard.global&&ct.call(t,window,"keydown keyup",this.handleKey,e,!1),ct.call(t,document.body,"click",this.toggleMenu,e),ht.call(t,document.body,"touchstart",this.firstTouch),ct.call(t,document.body,"keydown focus blur",this.setTabFocus,e,!1,!0)}},{key:"container",value:function(){var e=this.player,t=e.config,n=e.elements,i=e.timers;!t.keyboard.global&&t.keyboard.focused&&ut.call(e,n.container,"keydown keyup",this.handleKey,!1),ut.call(e,n.container,"mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen",function(t){var r=n.controls;r&&"enterfullscreen"===t.type&&(r.pressed=!1,r.hover=!1);var a=0;["touchstart","touchmove","mousemove"].includes(t.type)&&(vn.toggleControls.call(e,!0),a=e.touch?3e3:2e3),clearTimeout(i.controls),i.controls=setTimeout(function(){return vn.toggleControls.call(e,!1)},a)});var r=function(t){if(!t)return bn.call(e);var i=n.container.getBoundingClientRect(),r=i.width,a=i.height;return bn.call(e,"".concat(r,":").concat(a))},a=function(){window.clearTimeout(i.resized),i.resized=window.setTimeout(r,50)};ut.call(e,n.container,"enterfullscreen exitfullscreen",function(t){var i=e.fullscreen,s=i.target,o=i.usingNative;if(e.isEmbed&&s===n.container){var l="enterfullscreen"===t.type,c=r(l);c.padding;!function(t,n,i){if(e.isVimeo){var r=e.elements.wrapper.firstChild,a=He(t.split(":").map(Number),2)[1],s=He(e.embed.ratio.split(":").map(Number),2),o=s[0],l=s[1];r.style.maxWidth=i?"".concat(a/l*o,"px"):null,r.style.margin=i?"0 auto":null}}(c.ratio,0,l),o||(l?ut.call(e,window,"resize",a):dt.call(e,window,"resize",a))}})}},{key:"media",value:function(){var e=this,t=this.player,n=t.elements;if(ut.call(t,t.media,"timeupdate seeking seeked",function(e){return nn.timeUpdate.call(t,e)}),ut.call(t,t.media,"durationchange loadeddata loadedmetadata",function(e){return nn.durationUpdate.call(t,e)}),ut.call(t,t.media,"canplay loadeddata",function(){_t(n.volume,!t.hasAudio),_t(n.buttons.mute,!t.hasAudio)}),ut.call(t,t.media,"ended",function(){t.isHTML5&&t.isVideo&&t.config.resetOnEnd&&t.restart()}),ut.call(t,t.media,"progress playing seeking seeked",function(e){return nn.updateProgress.call(t,e)}),ut.call(t,t.media,"volumechange",function(e){return nn.updateVolume.call(t,e)}),ut.call(t,t.media,"playing play pause ended emptied timeupdate",function(e){return vn.checkPlaying.call(t,e)}),ut.call(t,t.media,"waiting canplay seeked playing",function(e){return vn.checkLoading.call(t,e)}),t.supported.ui&&t.config.clickToPlay&&!t.isAudio){var i=xt.call(t,".".concat(t.config.classNames.video));if(!ot.element(i))return;ut.call(t,n.container,"click",function(r){([n.container,i].includes(r.target)||i.contains(r.target))&&(t.touch&&t.config.hideControls||(t.ended?(e.proxy(r,t.restart,"restart"),e.proxy(r,t.play,"play")):e.proxy(r,t.togglePlay,"play")))})}t.supported.ui&&t.config.disableContextMenu&&ut.call(t,n.wrapper,"contextmenu",function(e){e.preventDefault()},!1),ut.call(t,t.media,"volumechange",function(){t.storage.set({volume:t.volume,muted:t.muted})}),ut.call(t,t.media,"ratechange",function(){nn.updateSetting.call(t,"speed"),t.storage.set({speed:t.speed})}),ut.call(t,t.media,"qualitychange",function(e){nn.updateSetting.call(t,"quality",null,e.detail.quality)}),ut.call(t,t.media,"ready qualitychange",function(){nn.setDownloadLink.call(t)});var r=t.config.events.concat(["keyup","keydown"]).join(" ");ut.call(t,t.media,r,function(e){var i=e.detail,r=void 0===i?{}:i;"error"===e.type&&(r=t.media.error),pt.call(t,n.container,e.type,!0,r)})}},{key:"proxy",value:function(e,t,n){var i=this.player,r=i.config.listeners[n],a=!0;ot.function(r)&&(a=r.call(i,e)),a&&ot.function(t)&&t.call(i,e)}},{key:"bind",value:function(e,t,n,i){var r=this,a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=this.player,o=s.config.listeners[i],l=ot.function(o);ut.call(s,e,t,function(e){return r.proxy(e,n,i)},a&&!l)}},{key:"controls",value:function(){var e=this,t=this.player,n=t.elements,i=jt.isIE?"change":"input";if(n.buttons.play&&Array.from(n.buttons.play).forEach(function(n){e.bind(n,"click",t.togglePlay,"play")}),this.bind(n.buttons.restart,"click",t.restart,"restart"),this.bind(n.buttons.rewind,"click",t.rewind,"rewind"),this.bind(n.buttons.fastForward,"click",t.forward,"fastForward"),this.bind(n.buttons.mute,"click",function(){t.muted=!t.muted},"mute"),this.bind(n.buttons.captions,"click",function(){return t.toggleCaptions()}),this.bind(n.buttons.download,"click",function(){pt.call(t,t.media,"download")},"download"),this.bind(n.buttons.fullscreen,"click",function(){t.fullscreen.toggle()},"fullscreen"),this.bind(n.buttons.pip,"click",function(){t.pip="toggle"},"pip"),this.bind(n.buttons.airplay,"click",t.airplay,"airplay"),this.bind(n.buttons.settings,"click",function(e){e.stopPropagation(),nn.toggleMenu.call(t,e)}),this.bind(n.buttons.settings,"keyup",function(e){var n=e.which;[13,32].includes(n)&&(13!==n?(e.preventDefault(),e.stopPropagation(),nn.toggleMenu.call(t,e)):nn.focusFirstMenuItem.call(t,null,!0))},null,!1),this.bind(n.settings.menu,"keydown",function(e){27===e.which&&nn.toggleMenu.call(t,e)}),this.bind(n.inputs.seek,"mousedown mousemove",function(e){var t=n.progress.getBoundingClientRect(),i=100/t.width*(e.pageX-t.left);e.currentTarget.setAttribute("seek-value",i)}),this.bind(n.inputs.seek,"mousedown mouseup keydown keyup touchstart touchend",function(e){var n=e.currentTarget,i=e.keyCode?e.keyCode:e.which;if(!ot.keyboardEvent(e)||39===i||37===i){t.lastSeekTime=Date.now();var r=n.hasAttribute("play-on-seeked"),a=["mouseup","touchend","keyup"].includes(e.type);r&&a?(n.removeAttribute("play-on-seeked"),t.play()):!a&&t.playing&&(n.setAttribute("play-on-seeked",""),t.pause())}}),jt.isIos){var r=Ct.call(t,'input[type="range"]');Array.from(r).forEach(function(t){return e.bind(t,i,function(e){return Lt(e.target)})})}this.bind(n.inputs.seek,i,function(e){var n=e.currentTarget,i=n.getAttribute("seek-value");ot.empty(i)&&(i=n.value),n.removeAttribute("seek-value"),t.currentTime=i/n.max*t.duration},"seek"),this.bind(n.progress,"mouseenter mouseleave mousemove",function(e){return nn.updateSeekTooltip.call(t,e)}),this.bind(n.progress,"mousemove touchmove",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startMove(e)}),this.bind(n.progress,"mouseleave click",function(){var e=t.previewThumbnails;e&&e.loaded&&e.endMove(!1,!0)}),this.bind(n.progress,"mousedown touchstart",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.startScrubbing(e)}),this.bind(n.progress,"mouseup touchend",function(e){var n=t.previewThumbnails;n&&n.loaded&&n.endScrubbing(e)}),jt.isWebkit&&Array.from(Ct.call(t,'input[type="range"]')).forEach(function(n){e.bind(n,"input",function(e){return nn.updateRangeFill.call(t,e.target)})}),t.config.toggleInvert&&!ot.element(n.display.duration)&&this.bind(n.display.currentTime,"click",function(){0!==t.currentTime&&(t.config.invertTime=!t.config.invertTime,nn.timeUpdate.call(t))}),this.bind(n.inputs.volume,i,function(e){t.volume=e.target.value},"volume"),this.bind(n.controls,"mouseenter mouseleave",function(e){n.controls.hover=!t.touch&&"mouseenter"===e.type}),this.bind(n.controls,"mousedown mouseup touchstart touchend touchcancel",function(e){n.controls.pressed=["mousedown","touchstart"].includes(e.type)}),this.bind(n.controls,"focusin",function(){var n=t.config,i=t.elements,r=t.timers;Tt(i.controls,n.classNames.noTransition,!0),vn.toggleControls.call(t,!0),setTimeout(function(){Tt(i.controls,n.classNames.noTransition,!1)},0);var a=e.touch?3e3:4e3;clearTimeout(r.controls),r.controls=setTimeout(function(){return vn.toggleControls.call(t,!1)},a)}),this.bind(n.inputs.volume,"wheel",function(e){var n=e.webkitDirectionInvertedFromDevice,i=He([e.deltaX,-e.deltaY].map(function(e){return n?-e:e}),2),r=i[0],a=i[1],s=Math.sign(Math.abs(r)>Math.abs(a)?r:a);t.increaseVolume(s/50);var o=t.media.volume;(1===s&&o<1||-1===s&&o>0)&&e.preventDefault()},"volume",!1)}}]),e}(),wn=t(function(e,t){e.exports=function(){var e=function(){},t={},n={},i={};function r(e,t){if(e){var r=i[e];if(n[e]=t,r)for(;r.length;)r[0](e,t),r.splice(0,1)}}function a(t,n){t.call&&(t={success:t}),n.length?(t.error||e)(n):(t.success||e)(t)}function s(t,n,i,r){var a,o,l=document,c=i.async,u=(i.numRetries||0)+1,d=i.before||e,h=t.replace(/^(css|img)!/,"");r=r||0,/(^css!|\.css$)/.test(t)?(a=!0,(o=l.createElement("link")).rel="stylesheet",o.href=h):/(^img!|\.(png|gif|jpg|svg)$)/.test(t)?(o=l.createElement("img")).src=h:((o=l.createElement("script")).src=t,o.async=void 0===c||c),o.onload=o.onerror=o.onbeforeload=function(e){var l=e.type[0];if(a&&"hideFocus"in o)try{o.sheet.cssText.length||(l="e")}catch(e){18!=e.code&&(l="e")}if("e"==l&&(r+=1)0&&void 0!==arguments[0]&&arguments[0]))return clearInterval(this.countdownTimer),void this.elements.container.removeAttribute("data-badge-text");this.countdownTimer=setInterval(function(){var t=tn(Math.max(e.manager.getRemainingTime(),0)),n="".concat($t("advertisement",e.player.config)," - ").concat(t);e.elements.container.setAttribute("data-badge-text",n)},100)}},{key:"onAdsManagerLoaded",value:function(e){var t=this;if(this.enabled){var n=new google.ima.AdsRenderingSettings;n.restoreCustomPlaybackStateOnAdBreakComplete=!0,n.enablePreloading=!0,this.manager=e.getAdsManager(this.player,n),this.cuePoints=this.manager.getCuePoints(),this.manager.setVolume(this.player.volume),this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR,function(e){return t.onAdError(e)}),Object.keys(google.ima.AdEvent.Type).forEach(function(e){t.manager.addEventListener(google.ima.AdEvent.Type[e],function(e){return t.onAdEvent(e)})}),this.trigger("loaded")}}},{key:"addCuePoints",value:function(){var e=this;ot.empty(this.cuePoints)||this.cuePoints.forEach(function(t){if(0!==t&&-1!==t&&t1?n-1:0),r=1;r ?)([0-9]{2}):([0-9]{2}):([0-9]{2}).([0-9]{2,3})/);a&&(t.startTime=60*Number(a[1])*60+60*Number(a[2])+Number(a[3])+Number("0.".concat(a[4])),t.endTime=60*Number(a[6])*60+60*Number(a[7])+Number(a[8])+Number("0.".concat(a[9])))}}),t.text&&a.push(t)}),a),height:null,urlPrefix:""};s.frames[0].text.startsWith("/")||(s.urlPrefix=e.substring(0,e.lastIndexOf("/")+1));var o=new Image;o.onload=function(){s.height=o.naturalHeight,s.width=o.naturalWidth,t.thumbnails.push(s),n()},o.src=s.urlPrefix+s.frames[0].text})})}},{key:"startMove",value:function(e){if(this.loaded&&ot.event(e)&&["touchmove","mousemove"].includes(e.type)&&this.player.media.duration){if("touchmove"===e.type)this.seekTime=this.player.media.duration*(this.player.elements.inputs.seek.value/100);else{var t=this.player.elements.progress.getBoundingClientRect(),n=100/t.width*(e.pageX-t.left);this.seekTime=this.player.media.duration*(n/100),this.seekTime<0&&(this.seekTime=0),this.seekTime>this.player.media.duration-1&&(this.seekTime=this.player.media.duration-1),this.mousePosX=e.pageX,this.elements.thumb.time.innerText=tn(this.seekTime)}this.showImageAtCurrentTime()}}},{key:"endMove",value:function(){this.toggleThumbContainer(!1,!0)}},{key:"startScrubbing",value:function(e){!1!==e.button&&0!==e.button||(this.mouseDown=!0,this.player.media.duration&&(this.toggleScrubbingContainer(!0),this.toggleThumbContainer(!1,!0),this.showImageAtCurrentTime()))}},{key:"endScrubbing",value:function(){var e=this;this.mouseDown=!1,Math.ceil(this.lastTime)===Math.ceil(this.player.media.currentTime)?this.toggleScrubbingContainer(!1):ht.call(this.player,this.player.media,"timeupdate",function(){e.mouseDown||e.toggleScrubbingContainer(!1)})}},{key:"listeners",value:function(){var e=this;this.player.on("play",function(){e.toggleThumbContainer(!1,!0)}),this.player.on("seeked",function(){e.toggleThumbContainer(!1)}),this.player.on("timeupdate",function(){e.lastTime=e.player.media.currentTime})}},{key:"render",value:function(){this.elements.thumb.container=gt("div",{class:this.player.config.classNames.previewThumbnails.thumbContainer}),this.elements.thumb.imageContainer=gt("div",{class:this.player.config.classNames.previewThumbnails.imageContainer}),this.elements.thumb.container.appendChild(this.elements.thumb.imageContainer);var e=gt("div",{class:this.player.config.classNames.previewThumbnails.timeContainer});this.elements.thumb.time=gt("span",{},"00:00"),e.appendChild(this.elements.thumb.time),this.elements.thumb.container.appendChild(e),this.player.elements.progress.appendChild(this.elements.thumb.container),this.elements.scrubbing.container=gt("div",{class:this.player.config.classNames.previewThumbnails.scrubbingContainer}),this.player.elements.wrapper.appendChild(this.elements.scrubbing.container)}},{key:"showImageAtCurrentTime",value:function(){var e=this;this.mouseDown?this.setScrubbingContainerSize():(this.toggleThumbContainer(!0),this.setThumbContainerSizeAndPos());var t=this.thumbnails[0].frames.findIndex(function(t){return e.seekTime>=t.startTime&&e.seekTime<=t.endTime}),n=t>=0,i=0;this.toggleThumbContainer(n),n&&(this.thumbnails.forEach(function(n,r){e.loadedImages.includes(n.frames[t].text)&&(i=r)}),t!==this.showingThumb&&(this.showingThumb=t,this.loadImage(i)))}},{key:"loadImage",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=this.showingThumb,i=this.thumbnails[t],r=i.urlPrefix,a=i.frames[n],s=i.frames[n].text,o=r+s;if(this.currentImageElement&&this.currentImageElement.dataset.filename===s)this.showImage(this.currentImageElement,a,t,n,s,!1),this.currentImageElement.dataset.index=n,this.removeOldImages(this.currentImageElement);else{this.loadingImage&&this.usingSprites&&(this.loadingImage.onload=null);var l=new Image;l.src=o,l.dataset.index=n,l.dataset.filename=s,this.showingThumbFilename=s,this.player.debug.log("Loading image: ".concat(o)),l.onload=function(){return e.showImage(l,a,t,n,s,!0)},this.loadingImage=l,this.removeOldImages(l)}}},{key:"showImage",value:function(e,t,n,i,r){var a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];this.player.debug.log("Showing thumb: ".concat(r,". num: ").concat(i,". qual: ").concat(n,". newimg: ").concat(a)),this.setImageSizeAndOffset(e,t),a&&(this.currentImageContainer.appendChild(e),this.currentImageElement=e,this.loadedImages.includes(r)||this.loadedImages.push(r)),this.preloadNearby(i,!0).then(this.preloadNearby(i,!1)).then(this.getHigherQuality(n,e,t,r))}},{key:"removeOldImages",value:function(e){var t=this;Array.from(this.currentImageContainer.children).forEach(function(n){if("img"===n.tagName.toLowerCase()){var i=t.usingSprites?500:1e3;if(n.dataset.index!==e.dataset.index&&!n.dataset.deleting){n.dataset.deleting=!0;var r=t.currentImageContainer;setTimeout(function(){r.removeChild(n),t.player.debug.log("Removing thumb: ".concat(n.dataset.filename))},i)}}})}},{key:"preloadNearby",value:function(e){var t=this,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return new Promise(function(i){setTimeout(function(){var r=t.thumbnails[0].frames[e].text;if(t.showingThumbFilename===r){var a;a=n?t.thumbnails[0].frames.slice(e):t.thumbnails[0].frames.slice(0,e).reverse();var s=!1;a.forEach(function(e){var n=e.text;if(n!==r&&!t.loadedImages.includes(n)){s=!0,t.player.debug.log("Preloading thumb filename: ".concat(n));var a=t.thumbnails[0].urlPrefix+n,o=new Image;o.src=a,o.onload=function(){t.player.debug.log("Preloaded thumb filename: ".concat(n)),t.loadedImages.includes(n)||t.loadedImages.push(n),i()}}}),s||i()}},300)})}},{key:"getHigherQuality",value:function(e,t,n,i){var r=this;if(e0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.player.config.classNames.previewThumbnails.thumbContainerShown;this.elements.thumb.container.classList.toggle(n,e),!e&&t&&(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"toggleScrubbingContainer",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.player.config.classNames.previewThumbnails.scrubbingContainerShown;this.elements.scrubbing.container.classList.toggle(t,e),e||(this.showingThumb=null,this.showingThumbFilename=null)}},{key:"determineContainerAutoSizing",value:function(){this.elements.thumb.imageContainer.clientHeight>20&&(this.sizeSpecifiedInCSS=!0)}},{key:"setThumbContainerSizeAndPos",value:function(){if(!this.sizeSpecifiedInCSS){var e=Math.floor(this.thumbContainerHeight*this.thumbAspectRatio);this.elements.thumb.imageContainer.style.height="".concat(this.thumbContainerHeight,"px"),this.elements.thumb.imageContainer.style.width="".concat(e,"px")}this.setThumbContainerPos()}},{key:"setThumbContainerPos",value:function(){var e=this.player.elements.progress.getBoundingClientRect(),t=this.player.elements.container.getBoundingClientRect(),n=this.elements.thumb.container,i=t.left-e.left+10,r=t.right-e.left-n.clientWidth-10,a=this.mousePosX-e.left-n.clientWidth/2;ar&&(a=r),n.style.left="".concat(a,"px")}},{key:"setScrubbingContainerSize",value:function(){this.elements.scrubbing.container.style.width="".concat(this.player.media.clientWidth,"px"),this.elements.scrubbing.container.style.height="".concat(this.player.media.clientWidth/this.thumbAspectRatio,"px")}},{key:"setImageSizeAndOffset",value:function(e,t){if(this.usingSprites){var n=this.thumbContainerHeight/t.h;e.style.height="".concat(Math.floor(e.naturalHeight*n),"px"),e.style.width="".concat(Math.floor(e.naturalWidth*n),"px"),e.style.left="-".concat(t.x*n,"px"),e.style.top="-".concat(t.y*n,"px")}}},{key:"enabled",get:function(){return this.player.isHTML5&&this.player.isVideo&&this.player.config.previewThumbnails.enabled}},{key:"currentImageContainer",get:function(){return this.mouseDown?this.elements.scrubbing.container:this.elements.thumb.imageContainer}},{key:"usingSprites",get:function(){return Object.keys(this.thumbnails[0].frames[0]).includes("w")}},{key:"thumbAspectRatio",get:function(){return this.usingSprites?this.thumbnails[0].frames[0].w/this.thumbnails[0].frames[0].h:this.thumbnails[0].width/this.thumbnails[0].height}},{key:"thumbContainerHeight",get:function(){return this.mouseDown?Math.floor(this.player.media.clientWidth/this.thumbAspectRatio):Math.floor(this.player.media.clientWidth/this.thumbAspectRatio/4)}},{key:"currentImageElement",get:function(){return this.mouseDown?this.currentScrubbingImageElement:this.currentThumbnailImageElement},set:function(e){this.mouseDown?this.currentScrubbingImageElement=e:this.currentThumbnailImageElement=e}}]),e}(),Ln={insertElements:function(e,t){var n=this;ot.string(t)?yt(e,this.media,{src:t}):ot.array(t)&&t.forEach(function(t){yt(e,n.media,t)})},change:function(e){var t=this;Ht(e,"sources.length")?(Ft.cancelRequests.call(this),this.destroy.call(this,function(){t.options.quality=[],vt(t.media),t.media=null,ot.element(t.elements.container)&&t.elements.container.removeAttribute("class");var n=e.sources,i=e.type,r=He(n,1)[0],a=r.provider,s=void 0===a?un.html5:a,o=r.src,l="html5"===s?i:"div",c="html5"===s?{}:{src:o};Object.assign(t,{provider:s,type:i,supported:Dt.check(i,s,t.config.playsinline),media:gt(l,c)}),t.elements.container.appendChild(t.media),ot.boolean(e.autoplay)&&(t.config.autoplay=e.autoplay),t.isHTML5&&(t.config.crossorigin&&t.media.setAttribute("crossorigin",""),t.config.autoplay&&t.media.setAttribute("autoplay",""),ot.empty(e.poster)||(t.poster=e.poster),t.config.loop.active&&t.media.setAttribute("loop",""),t.config.muted&&t.media.setAttribute("muted",""),t.config.playsinline&&t.media.setAttribute("playsinline","")),vn.addStyleHook.call(t),t.isHTML5&&Ln.insertElements.call(t,"source",n),t.config.title=e.title,On.setup.call(t),t.isHTML5&&Object.keys(e).includes("tracks")&&Ln.insertElements.call(t,"track",e.tracks),(t.isHTML5||t.isEmbed&&!t.supported.ui)&&vn.build.call(t),t.isHTML5&&t.media.load(),t.previewThumbnails&&t.previewThumbnails.load(),t.fullscreen.update()},!0)):this.debug.warn("Invalid source format")}},In=function(){function e(t,n){var i=this;if(Re(this,e),this.timers={},this.ready=!1,this.loading=!1,this.failed=!1,this.touch=Dt.touch,this.media=t,ot.string(this.media)&&(this.media=document.querySelectorAll(this.media)),(window.jQuery&&this.media instanceof jQuery||ot.nodeList(this.media)||ot.array(this.media))&&(this.media=this.media[0]),this.config=qt({},on,e.defaults,n||{},function(){try{return JSON.parse(i.media.getAttribute("data-plyr-config"))}catch(e){return{}}}()),this.elements={container:null,captions:null,buttons:{},display:{},progress:{},inputs:{},settings:{popup:null,menu:null,panels:{},buttons:{}}},this.captions={active:null,currentTrack:-1,meta:new WeakMap},this.fullscreen={active:!1},this.options={speed:[],quality:[]},this.debug=new pn(this.config.debug),this.debug.log("Config",this.config),this.debug.log("Support",Dt),!ot.nullOrUndefined(this.media)&&ot.element(this.media))if(this.media.plyr)this.debug.warn("Target already setup");else if(this.config.enabled)if(Dt.check().api){var r=this.media.cloneNode(!0);r.autoplay=!1,this.elements.original=r;var a=this.media.tagName.toLowerCase(),s=null,o=null;switch(a){case"div":if(s=this.media.querySelector("iframe"),ot.element(s)){if(o=rn(s.getAttribute("src")),this.provider=function(e){return/^(https?:\/\/)?(www\.)?(youtube\.com|youtube-nocookie\.com|youtu\.?be)\/.+$/.test(e)?un.youtube:/^https?:\/\/player.vimeo.com\/video\/\d{0,9}(?=\b|\/)/.test(e)?un.vimeo:null}(o.toString()),this.elements.container=this.media,this.media=s,this.elements.container.className="",o.search.length){var l=["1","true"];l.includes(o.searchParams.get("autoplay"))&&(this.config.autoplay=!0),l.includes(o.searchParams.get("loop"))&&(this.config.loop.active=!0),this.isYouTube?(this.config.playsinline=l.includes(o.searchParams.get("playsinline")),this.config.youtube.hl=o.searchParams.get("hl")):this.config.playsinline=!0}}else this.provider=this.media.getAttribute(this.config.attributes.embed.provider),this.media.removeAttribute(this.config.attributes.embed.provider);if(ot.empty(this.provider)||!Object.keys(un).includes(this.provider))return void this.debug.error("Setup failed: Invalid provider");this.type=dn.video;break;case"video":case"audio":this.type=a,this.provider=un.html5,this.media.hasAttribute("crossorigin")&&(this.config.crossorigin=!0),this.media.hasAttribute("autoplay")&&(this.config.autoplay=!0),(this.media.hasAttribute("playsinline")||this.media.hasAttribute("webkit-playsinline"))&&(this.config.playsinline=!0),this.media.hasAttribute("muted")&&(this.config.muted=!0),this.media.hasAttribute("loop")&&(this.config.loop.active=!0);break;default:return void this.debug.error("Setup failed: unsupported type")}this.supported=Dt.check(this.type,this.provider,this.config.playsinline),this.supported.api?(this.eventListeners=[],this.listeners=new kn(this),this.storage=new Yt(this),this.media.plyr=this,ot.element(this.elements.container)||(this.elements.container=gt("div",{tabindex:0}),mt(this.media,this.elements.container)),vn.addStyleHook.call(this),On.setup.call(this),this.config.debug&&ut.call(this,this.elements.container,this.config.events.join(" "),function(e){i.debug.log("event: ".concat(e.type))}),(this.isHTML5||this.isEmbed&&!this.supported.ui)&&vn.build.call(this),this.listeners.container(),this.listeners.global(),this.fullscreen=new gn(this),this.config.ads.enabled&&(this.ads=new Mn(this)),this.config.autoplay&&this.play(),this.lastSeekTime=0,this.config.previewThumbnails.enabled&&(this.previewThumbnails=new Nn(this))):this.debug.error("Setup failed: no support")}else this.debug.error("Setup failed: no support");else this.debug.error("Setup failed: disabled by config");else this.debug.error("Setup failed: no suitable element passed")}return Fe(e,[{key:"play",value:function(){var e=this;return ot.function(this.media.play)?(this.ads&&this.ads.enabled&&this.ads.managerPromise.then(function(){return e.ads.play()}).catch(function(){return e.media.play()}),this.media.play()):null}},{key:"pause",value:function(){this.playing&&ot.function(this.media.pause)&&this.media.pause()}},{key:"togglePlay",value:function(e){(ot.boolean(e)?e:!this.playing)?this.play():this.pause()}},{key:"stop",value:function(){this.isHTML5?(this.pause(),this.restart()):ot.function(this.media.stop)&&this.media.stop()}},{key:"restart",value:function(){this.currentTime=0}},{key:"rewind",value:function(e){this.currentTime=this.currentTime-(ot.number(e)?e:this.config.seekTime)}},{key:"forward",value:function(e){this.currentTime=this.currentTime+(ot.number(e)?e:this.config.seekTime)}},{key:"increaseVolume",value:function(e){var t=this.media.muted?0:this.volume;this.volume=t+(ot.number(e)?e:0)}},{key:"decreaseVolume",value:function(e){this.increaseVolume(-e)}},{key:"toggleCaptions",value:function(e){sn.toggle.call(this,e,!1)}},{key:"airplay",value:function(){Dt.airplay&&this.media.webkitShowPlaybackTargetPicker()}},{key:"toggleControls",value:function(e){if(this.supported.ui&&!this.isAudio){var t=Et(this.elements.container,this.config.classNames.hideControls),n=void 0===e?void 0:!e,i=Tt(this.elements.container,this.config.classNames.hideControls,n);if(i&&this.config.controls.includes("settings")&&!ot.empty(this.config.settings)&&nn.toggleMenu.call(this,!1),i!==t){var r=i?"controlshidden":"controlsshown";pt.call(this,this.media,r)}return!i}return!1}},{key:"on",value:function(e,t){ut.call(this,this.elements.container,e,t)}},{key:"once",value:function(e,t){ht.call(this,this.elements.container,e,t)}},{key:"off",value:function(e,t){dt(this.elements.container,e,t)}},{key:"destroy",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.ready){var i=function(){document.body.style.overflow="",t.embed=null,n?(Object.keys(t.elements).length&&(vt(t.elements.buttons.play),vt(t.elements.captions),vt(t.elements.controls),vt(t.elements.wrapper),t.elements.buttons.play=null,t.elements.captions=null,t.elements.controls=null,t.elements.wrapper=null),ot.function(e)&&e()):(function(){this&&this.eventListeners&&(this.eventListeners.forEach(function(e){var t=e.element,n=e.type,i=e.callback,r=e.options;t.removeEventListener(n,i,r)}),this.eventListeners=[])}.call(t),kt(t.elements.original,t.elements.container),pt.call(t,t.elements.original,"destroyed",!0),ot.function(e)&&e.call(t.elements.original),t.ready=!1,setTimeout(function(){t.elements=null,t.media=null},200))};this.stop(),this.isHTML5?(clearTimeout(this.timers.loading),vn.toggleNativeControls.call(this,!0),i()):this.isYouTube?(clearInterval(this.timers.buffering),clearInterval(this.timers.playing),null!==this.embed&&ot.function(this.embed.destroy)&&this.embed.destroy(),i()):this.isVimeo&&(null!==this.embed&&this.embed.unload().then(i),setTimeout(i,200))}}},{key:"supports",value:function(e){return Dt.mime.call(this,e)}},{key:"isHTML5",get:function(){return Boolean(this.provider===un.html5)}},{key:"isEmbed",get:function(){return Boolean(this.isYouTube||this.isVimeo)}},{key:"isYouTube",get:function(){return Boolean(this.provider===un.youtube)}},{key:"isVimeo",get:function(){return Boolean(this.provider===un.vimeo)}},{key:"isVideo",get:function(){return Boolean(this.type===dn.video)}},{key:"isAudio",get:function(){return Boolean(this.type===dn.audio)}},{key:"playing",get:function(){return Boolean(this.ready&&!this.paused&&!this.ended)}},{key:"paused",get:function(){return Boolean(this.media.paused)}},{key:"stopped",get:function(){return Boolean(this.paused&&0===this.currentTime)}},{key:"ended",get:function(){return Boolean(this.media.ended)}},{key:"currentTime",set:function(e){if(this.duration){var t=ot.number(e)&&e>0;this.media.currentTime=t?Math.min(e,this.duration):0,this.debug.log("Seeking to ".concat(this.currentTime," seconds"))}},get:function(){return Number(this.media.currentTime)}},{key:"buffered",get:function(){var e=this.media.buffered;return ot.number(e)?e:e&&e.length&&this.duration>0?e.end(0)/this.duration:0}},{key:"seeking",get:function(){return Boolean(this.media.seeking)}},{key:"duration",get:function(){var e=parseFloat(this.config.duration),t=(this.media||{}).duration,n=ot.number(t)&&t!==1/0?t:0;return e||n}},{key:"volume",set:function(e){var t=e;ot.string(t)&&(t=Number(t)),ot.number(t)||(t=this.storage.get("volume")),ot.number(t)||(t=this.config.volume),t>1&&(t=1),t<0&&(t=0),this.config.volume=t,this.media.volume=t,!ot.empty(e)&&this.muted&&t>0&&(this.muted=!1)},get:function(){return Number(this.media.volume)}},{key:"muted",set:function(e){var t=e;ot.boolean(t)||(t=this.storage.get("muted")),ot.boolean(t)||(t=this.config.muted),this.config.muted=t,this.media.muted=t},get:function(){return Boolean(this.media.muted)}},{key:"hasAudio",get:function(){return!this.isHTML5||(!!this.isAudio||(Boolean(this.media.mozHasAudio)||Boolean(this.media.webkitAudioDecodedByteCount)||Boolean(this.media.audioTracks&&this.media.audioTracks.length)))}},{key:"speed",set:function(e){var t=null;ot.number(e)&&(t=e),ot.number(t)||(t=this.storage.get("speed")),ot.number(t)||(t=this.config.speed.selected),t<.1&&(t=.1),t>2&&(t=2),this.config.speed.options.includes(t)?(this.config.speed.selected=t,this.media.playbackRate=t):this.debug.warn("Unsupported speed (".concat(t,")"))},get:function(){return Number(this.media.playbackRate)}},{key:"quality",set:function(e){var t=this.config.quality,n=this.options.quality;if(n.length){var i=[!ot.empty(e)&&Number(e),this.storage.get("quality"),t.selected,t.default].find(ot.number),r=!0;if(!n.includes(i)){var a=function(e,t){return ot.array(e)&&e.length?e.reduce(function(e,n){return Math.abs(n-t)1&&void 0!==arguments[1]?arguments[1]:{},i=null;return ot.string(t)?i=Array.from(document.querySelectorAll(t)):ot.nodeList(t)?i=Array.from(t):ot.array(t)&&(i=t.filter(ot.element)),ot.empty(i)?null:i.map(function(t){return new e(t,n)})}}]),e}();In.defaults=(Cn=on,JSON.parse(JSON.stringify(Cn))),xn=window.location.host,An={prod:"plyr.io"===xn,dev:"dev.plyr.io"===xn},document.addEventListener("DOMContentLoaded",function(){Ie.context(function(){var e=document.getElementById("container");window.Shr&&window.Shr.setup(".js-shr-button",{count:{classname:"button__count"}}),document.addEventListener("focusout",function(t){t.target.classList&&!e.contains(t.target)&&t.target.classList.remove("tab-focus")}),document.addEventListener("keydown",function(t){9===t.keyCode&&setTimeout(function(){var t=document.activeElement;t&&t.classList&&!e.contains(t)&&t.classList.add("tab-focus")},10)});var t=new In("#player",{debug:!0,title:"View From A Blue Moon",iconUrl:"dist/demo.svg",keyboard:{global:!0},tooltips:{controls:!0},captions:{active:!0},keys:{google:"AIzaSyDrNwtN3nLH_8rjCmu5Wq3ZCm4MNAVdc0c"},ads:{enabled:An.prod||An.dev,publisherId:"918848828995742"},previewThumbnails:{enabled:!0,src:["https://cdn.plyr.io/static/demo/thumbs/100p.vtt","https://cdn.plyr.io/static/demo/thumbs/240p.vtt"]}});window.player=t;var n=document.querySelectorAll("[data-source]"),i={video:"video",audio:"audio",youtube:"youtube",vimeo:"vimeo"},r=window.location.hash.replace("#",""),a=window.history&&window.history.pushState;function s(e,t,n){e&&e.classList[n?"add":"remove"](t)}function o(e,a){if(e in i&&(a||e!==r)&&(r.length||e!==i.video)){switch(e){case i.video:t.source={type:"video",title:"View From A Blue Moon",sources:[{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-576p.mp4",type:"video/mp4",size:576},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-720p.mp4",type:"video/mp4",size:720},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1080p.mp4",type:"video/mp4",size:1080},{src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-1440p.mp4",type:"video/mp4",size:1440}],poster:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg",tracks:[{kind:"captions",label:"English",srclang:"en",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt",default:!0},{kind:"captions",label:"French",srclang:"fr",src:"https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt"}]};break;case i.audio:t.source={type:"audio",title:"Kishi Bashi – “It All Began With A Burst”",sources:[{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.mp3",type:"audio/mp3"},{src:"https://cdn.plyr.io/static/demo/Kishi_Bashi_-_It_All_Began_With_a_Burst.ogg",type:"audio/ogg"}]};break;case i.youtube:t.source={type:"video",sources:[{src:"https://youtube.com/watch?v=bTqVqk7FSmY",provider:"youtube"}]};break;case i.vimeo:t.source={type:"video",sources:[{src:"https://vimeo.com/76979871",provider:"vimeo"}]}}r=e,Array.from(n).forEach(function(e){return s(e.parentElement,"active",!1)}),s(document.querySelector('[data-source="'.concat(e,'"]')),"active",!0),Array.from(document.querySelectorAll(".plyr__cite")).forEach(function(e){e.setAttribute("hidden","")}),document.querySelector(".plyr__cite--".concat(e)).removeAttribute("hidden")}}if(Array.from(n).forEach(function(e){e.addEventListener("click",function(){var t=e.getAttribute("data-source");o(t),a&&window.history.pushState({type:t},"","#".concat(t))})}),window.addEventListener("popstate",function(e){e.state&&"type"in e.state&&o(e.state.type)}),a){var l=!r.length;l&&(r=i.video),r in i&&window.history.replaceState({type:r},"",l?"":"#".concat(r)),r!==i.video&&o(r,!0)}})}),An.prod&&Ie.config("https://d4ad9866ad834437a4754e23937071e4@sentry.io/305555").install()}(); //# sourceMappingURL=demo.min.js.map diff --git a/demo/dist/demo.min.js.map b/demo/dist/demo.min.js.map index 5ed41268c..46fd82cf1 100644 --- a/demo/dist/demo.min.js.map +++ b/demo/dist/demo.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["demo.js","node_modules/raven-js/vendor/json-stringify-safe/stringify.js","node_modules/raven-js/src/utils.js","node_modules/raven-js/vendor/TraceKit/tracekit.js","node_modules/raven-js/vendor/md5/md5.js","node_modules/raven-js/src/configError.js","node_modules/raven-js/src/console.js","node_modules/raven-js/src/raven.js","node_modules/raven-js/src/singleton.js","node_modules/rangetouch/src/js/config.js","node_modules/rangetouch/src/js/utils/is.js","node_modules/rangetouch/src/js/utils/numbers.js","node_modules/rangetouch/src/js/rangetouch.js","node_modules/rangetouch/src/js/utils/css.js","node_modules/rangetouch/src/js/utils/events.js","src/js/utils/is.js","src/js/utils/events.js","src/js/utils/elements.js","src/js/utils/animation.js","src/js/utils/browser.js","src/js/support.js","src/js/html5.js","src/js/utils/arrays.js","src/js/utils/objects.js","src/js/utils/strings.js","src/js/utils/i18n.js","src/js/storage.js","src/js/utils/fetch.js","src/js/utils/loadSprite.js","src/js/utils/time.js","src/js/controls.js","src/js/utils/urls.js","src/js/captions.js","src/js/config/defaults.js","src/js/config/states.js","src/js/config/types.js","src/js/console.js","src/js/fullscreen.js","src/js/utils/loadImage.js","src/js/ui.js","src/js/utils/style.js","src/js/listeners.js","node_modules/loadjs/dist/loadjs.umd.js","src/js/utils/loadScript.js","src/js/plugins/vimeo.js","src/js/plugins/youtube.js","demo/src/js/demo.js","src/js/media.js","src/js/plugins/ads.js","src/js/plugins/previewThumbnails.js","src/js/source.js","src/js/plyr.js"],"names":["navigator","commonjsGlobal","window","global","self","createCommonjsModule","fn","module","exports","stringify_1","indexOf","haystack","needle","i","length","serializer","replacer","cycleReplacer","stack","keys","key","value","slice","join","thisPos","this","splice","push","Infinity","call","Error","err","message","name","Object","prototype","hasOwnProperty","stringifyError","obj","spaces","JSON","stringify","getSerialize","_window","isUndefined","what","isPlainObject","toString","isString","isArray","supportsFetch","Headers","Request","Response","e","each","callback","j","hasKey","truncate","str","max","substr","object","joinRegExp","patterns","pattern","sources","len","replace","source","RegExp","htmlElementAsString","elem","className","classes","attr","out","tagName","toLowerCase","id","split","attrWhitelist","getAttribute","isOnlyOneTruthy","a","b","isSameStacktrace","stack1","stack2","frames1","frames","frames2","undefined","filename","lineno","colno","MAX_SERIALIZE_EXCEPTION_DEPTH","MAX_SERIALIZE_EXCEPTION_SIZE","MAX_SERIALIZE_KEYS_LENGTH","jsonSize","encodeURI","utf8Length","serializeValue","type","utils","isObject","isError","isErrorEvent","isDOMError","isDOMException","isFunction","isEmptyObject","_","supportsErrorEvent","ErrorEvent","supportsDOMError","DOMError","supportsDOMException","DOMException","supportsReferrerPolicy","referrerPolicy","supportsPromiseRejectionEvent","PromiseRejectionEvent","wrappedCallback","data","original","normalizedData","objectMerge","obj1","obj2","objectFrozen","isFrozen","urlencode","o","pairs","encodeURIComponent","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","c","r","Math","random","htmlTreeAsString","nextStr","height","sepLength","parentNode","reverse","isSameException","ex1","ex2","values","stacktrace","parseUrl","url","match","query","fragment","protocol","host","path","relative","fill","replacement","track","orig","__raven__","__orig__","safeJoin","input","delimiter","output","String","serializeException","ex","depth","maxSize","serialized","serializeObject","reduce","acc","Array","map","val","serializeKeysForMessage","maxLength","filter","usedKeys","sanitize","sanitizeKeys","safeInput","sanitizeRegExp","sanitizeMask","parse","o_O","sanitizeWorker","workerInput","k","test","TraceKit","collectWindowErrors","debug","_slice","UNKNOWN_FUNCTION","ERROR_TYPES_RE","getLocationHref","document","location","href","report","_oldOnerrorHandler","_onErrorHandlerInstalled","handlers","lastArgs","lastException","lastExceptionStack","notifyHandlers","isWindowError","exception","apply","concat","arguments","inner","traceKitWindowOnError","msg","lineNo","colNo","error","computeStackTrace","augmentStackTraceWithInitialElement","processLastException","groups","line","column","func","_lastExceptionStack","_lastArgs","rethrow","args","setTimeout","incomplete","subscribe","handler","onerror","unsubscribe","uninstall","computeStackTraceFromStackProp","submatch","parts","element","chrome","winjs","gecko","geckoEval","chromeEval","lines","exec","isNative","columnNumber","xhr","XMLHttpRequest","open","send","status","responseText","sourceMaps","sourceMapAddress","charAt","origin","hostname","port","stackInfo","initial","unshift","partial","computeStackTraceByWalkingCallerChain","item","functionName","funcs","recursion","curr","caller","substring","result","sourceURL","fileName","lineNumber","description","tracekit","safeAdd","x","y","lsw","md5cmn","q","s","t","cnt","md5ff","d","md5gg","md5hh","md5ii","binlMD5","olda","oldb","oldc","oldd","binl2rstr","length32","fromCharCode","rstr2binl","length8","charCodeAt","rstr2hex","str2rstrUTF8","unescape","rawMD5","rstrMD5","rawHMACMD5","hash","bkey","ipad","opad","rstrHMACMD5","md5_1","string","raw","RavenConfigError","constructor","configError","console$1","console","level","originalConsoleLevel","originalConsole","sentryLevel","logger","extra","Function","wrapConsoleMethod","require$$0","dsnKeys","dsnPattern","now","Date","_document","_navigator","keepOriginalCallback","Raven","method","_hasJSON","_hasDocument","_hasNavigator","_lastCapturedException","_lastData","_lastEventId","_globalServer","_globalKey","_globalProject","_globalContext","_globalOptions","release","SENTRY_RELEASE","ignoreErrors","ignoreUrls","whitelistUrls","includePaths","headers","captureUnhandledRejections","maxMessageLength","maxUrlLength","stackTraceLimit","autoBreadcrumbs","instrument","sampleRate","_fetchDefaults","_ignoreOnError","_isRavenInstalled","_originalErrorStackTraceLimit","_originalConsole","_originalConsoleMethods","_plugins","_startTime","_wrappedBuiltIns","_breadcrumbs","_lastCapturedEvent","_keypressTimeout","_location","_lastHref","_resetBackoff","VERSION","config","dsn","options","_logDebug","globalOptions","setDSN","maxBreadcrumbs","min","autoBreadcrumbDefaults","dom","sentry","instrumentDefaults","tryCatch","install","isSetup","_handleOnErrorStackInfo","_attachPromiseRejectionHandler","_patchFunctionToString","_instrumentTryCatch","_instrumentBreadcrumbs","_drainPlugins","uri","_parseDSN","lastSlash","lastIndexOf","_dsn","user","_globalSecret","pass","_getGlobalServer","_globalEndpoint","context","wrap","_before","__raven_wrapper__","wrapped","deep","_ignoreNextOnError","captureException","property","_detachPromiseRejectionHandler","_unpatchFunctionToString","_restoreBuiltIns","_restoreConsole","_promiseRejectionHandler","event","reason","mechanism","handled","bind","addEventListener","removeEventListener","trimHeadFrames","captureMessage","_getCaptureExceptionOptionsFromPlainObject","_handleStackInfo","currentOptions","exKeys","sort","fingerprint","md5","__serialized__","initialCall","fileurl","_prepareFrames","_send","captureBreadcrumb","crumb","timestamp","breadcrumbCallback","shift","addPlugin","plugin","pluginArgs","setUserContext","setExtraContext","_mergeContext","setTagsContext","tags","clearContext","getContext","setEnvironment","environment","setRelease","setDataCallback","dataCallback","setBreadcrumbCallback","setShouldSendCallback","shouldSendCallback","setTransport","transport","lastEventId","ravenNotConfiguredError","afterLoad","RavenConfig","showReportDialog","eventId","encode","encodedOptions","email","globalServer","script","createElement","async","src","head","body","appendChild","_triggerEvent","eventType","evt","toUpperCase","createEvent","initEvent","createEventObject","dispatchEvent","fireEvent","_breadcrumbEventHandler","evtName","target","category","_keypressEventHandler","isContentEditable","timeout","clearTimeout","_captureUrlChange","from","to","parsedLoc","parsedTo","parsedFrom","_originalFunctionToString","wrappedBuiltIns","wrapTimeFn","originalCallback","function","wrapEventTarget","proto","capture","secure","handleEvent","before","clickHandler","keypressHandler","requestAnimationFrame","cb","eventTargets","wrapProp","prop","xhrproto","origOpen","__raven_xhr","status_code","origSend","onreadystatechangeHandler","readyState","props","onreadystatechange","origFetch","fetchInput","fetchData","then","response","attachEvent","hasPushAndReplaceState","app","runtime","history","pushState","replaceState","oldOnPopState","onpopstate","currentHref","historyReplacementFunction","origHistFunction","log","consoleMethodCallback","builtin","installer","m","allowSecretKey","_processException","frame","_normalizeFrame","in_app","stackInfoUrl","normalized","prefixedMessage","transaction","_trimPacket","request","Referer","breadcrumbs","_trimBreadcrumbs","urlProp","urlProps","_getHttpData","httpData","userAgent","User-Agent","referrer","_backoffDuration","_backoffStart","_shouldBackoff","_isRepeatData","current","last","_setBackoffState","retry","get","getResponseHeader","parseInt","baseData","project","platform","serverName","server_name","_sanitizeData","forEach","_sendProcessedPayload","_getUuid","allowDuplicates","event_id","auth","sentry_version","sentry_client","sentry_key","sentry_secret","_makeRequest","onSuccess","onError","opts","evaluatedHeaders","evaluatedFetchParameters","_evaluateHash","fetchParameters","defaultFetchOptions","fetchOptions","fetch","ok","XDomainRequest","onload","setRequestHeader","evaluated","setUser","setReleaseContext","raven","_Raven","RavenConstructor","noConflict","singleton","Client","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","enumerable","configurable","writable","defineProperty","_createClass","protoProps","staticProps","_defineProperty","_slicedToArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","Symbol","iterator","next","done","_iterableToArrayLimit","_nonIterableRest","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","defaults","addCSS","thumbWidth","watch","getConstructor","instanceOf","Boolean","isNullOrUndefined","isNodeList","NodeList","is","nullOrUndefined","number","Number","isNaN","boolean","array","nodeList","Element","Event","empty","round","step","places","getDecimalPlaces","parseFloat","toFixed","RangeTouch","[object Object]","querySelector","rangeTouch","assign","init","enabled","documentElement","targets","querySelectorAll","MutationObserver","mutations","mutation","addedNodes","node","selector","includes","matches","observe","childList","subtree","style","userSelect","webKitUserSelect","touchAction","listeners","toggle","set","touch","changedTouches","delta","percent","clientRect","getBoundingClientRect","width","clientX","left","disabled","preventDefault","trigger","isEmpty","is$1","weakMap","WeakMap","textNode","Text","keyboardEvent","KeyboardEvent","cue","TextTrackCue","VTTCue","TextTrack","kind","promise","Promise","URL","startsWith","supportsPassiveListeners","supported","toggleListener","_this","passive","events","eventListeners","on","off","once","_this2","onceCallback","_len","_key","triggerEvent","bubbles","detail","CustomEvent","plyr","elements","wrapper","index","child","cloneNode","parent","sibling","nextSibling","insertBefore","setAttributes","attributes","entries","_ref","_ref3","_ref4","setAttribute","text","innerText","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","trim","class","toggleHidden","hidden","hide","removeAttribute","toggleClass","force","classList","contains","hasClass","getElements","container","getElement","setFocus","tabFocus","focus","preventScroll","classNames","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","find","repaint","offsetHeight","range","browser","isIE","documentMode","isEdge","isWebkit","isIPhone","isIos","defaultCodecs","audio/ogg","audio/wav","video/webm","video/mp4","video/ogg","support","audio","video","check","provider","playsinline","canPlayInline","api","ui","rangeInput","pip","webkitSetPresentationMode","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","mediaType","isHTML5","media","canPlayType","textTracks","transitions","reducedMotion","matchMedia","html5","getSources","getQualityOptions","extend","player","_player$media","currentTime","paused","preload","play","load","quality","cancelRequests","blankVideo","dedupe","getDeep","format","replaceAll","toTitleCase","toCamelCase","toPascalCase","getHTML","innerHTML","resources","vimeo","youtube","i18n","{seektime}","seekTime","{title}","title","_ref2","Storage","storage","store","localStorage","getItem","json","setItem","removeItem","responseType","resolve","reject","loadSprite","hasId","exists","getElementById","update","insertAdjacentElement","useStorage","cached","content","catch","getHours","trunc","getMinutes","getSeconds","formatTime","time","displayHours","inverted","hours","mins","secs","controls","getIconUrl","cors","iconUrl","svg4everybody","findElements","selectors","buttons","pause","restart","rewind","fastForward","mute","settings","captions","fullscreen","progress","inputs","seek","volume","display","buffer","duration","seekTooltip","tooltip","warn","toggleNativeControls","createIcon","iconPath","iconPrefix","icon","createElementNS","role","focusable","use","setAttributeNS","createLabel","createBadge","badge","menu","createButton","buttonType","label","labelPressed","iconPressed","control","button","createRange","autocomplete","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","updateRangeFill","setup","createProgress","aria-hidden","suffixKey","played","suffix","createTime","bindMenuItemShortcuts","menuItem","which","stopPropagation","isRadioButton","showMenuPanel","nextElementSibling","firstElementChild","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","list","_ref$badge","_ref$checked","checked","aria-checked","flex","children","currentTrack","speed","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","_this3","getElementsByTagName","nodeValue","setProgress","buffered","setProperty","updateSeekTooltip","_this4","tooltips","visible","pageX","timeUpdate","invert","invertTime","seeking","durationUpdate","pow","hasDuration","displayDuration","toggleMenuButton","setting","updateSetting","pane","panels","default","getLabel","setQualityMenu","_this5","checkMenu","getBadge","sorting","setCaptionsMenu","_this6","tracks","getTracks","toggled","language","setSpeedMenu","_this7","isVimeo","some","popup","firstItem","toggleMenu","show","isMenuItem","getMenuSize","tab","clone","position","opacity","scrollWidth","scrollHeight","_this8","size","restore","propertyName","setDownloadLink","download","create","_this9","aria-haspopup","aria-controls","aria-expanded","home","backButton","urls","isEmbed","inject","_this10","floor","seektime","addProperty","controlPressed","_this$config","labels","parser","buildUrlParams","params","URLSearchParams","isVideo","isYouTube","blob","createObjectURL","languages","userLanguage","active","trackEvents","_this$captions","meta","currentTrackNode","languageExists","mode","updateCues","setLanguage","activeClass","findTrack","embed","enableTextTrack","has","sortIsDefault","sorted","every","getCurrentTrack","cues","activeCues","getCueAsHTML","cueText","caption","autoplay","autopause","toggleInvert","ratio","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","selected","keyboard","focused","fallback","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","start","end","all","reset","advertisement","qualityBadge","2160","1440","1080","720","576","480","sdk","iframe","googleIMA","editable","embedContainer","poster","posterEnabled","ads","playing","stopped","loading","hover","isTouch","uiSupported","noTransition","previewThumbnails","thumbContainer","thumbContainerShown","imageContainer","timeContainer","scrubbingContainer","scrubbingContainerShown","google","publisherId","tagUrl","byline","portrait","transparent","noCookie","rel","showinfo","iv_load_policy","modestbranding","providers","types","noop","Console","onChange","first","keyCode","activeElement","shiftKey","toggleFallback","scrollPosition","scrollX","scrollY","scrollTo","overflow","viewport","hasProperty","cleanupViewport","part","Fullscreen","prefix","forceFallback","native","webkitEnterFullscreen","requestFullscreen","webkitExitFullscreen","action","cancelFullScreen","exit","enter","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","pre","loadImage","minWidth","image","Image","naturalWidth","addStyleHook","build","checkPlaying","ready","setTitle","setPoster","togglePoster","enable","backgroundImage","backgroundSize","toggleControls","checkLoading","timers","recentTouchSeek","lastSeekTime","setAspectRatio","_ratio$split$map2","padding","paddingBottom","offset","transform","Listeners","lastKey","focusTimer","lastKeyDown","handleKey","setTabFocus","firstTouch","code","repeat","altKey","ctrlKey","metaKey","togglePlay","increaseVolume","decreaseVolume","forward","toggleCaptions","usingNative","timeStamp","wasKeyDown","delay","setPlayerSize","measure","rect","resized","_player$fullscreen","isEnter","_setPlayerSize","firstChild","_player$embed$ratio$s2","videoWidth","videoHeight","maxWidth","margin","setGutter","hasAudio","isAudio","ended","proxy","proxyEvents","_event$detail","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","currentTarget","hasAttribute","seekTo","loaded","startMove","endMove","startScrubbing","endScrubbing","webkitDirectionInvertedFromDevice","_map2","deltaX","deltaY","direction","sign","abs","loadjs_umd","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","executeCallbacks","depsNotFound","success","loadFile","callbackFn","numTries","isCss","doc","maxTries","numRetries","beforeCallbackFn","pathStripped","onbeforeload","ev","sheet","cssText","defaultPrevented","loadjs","paths","arg1","arg2","numWaiting","loadFiles","deps","bundleIds","isDefined","factory","loadScript","assurePlaybackState","hasPlayed","Vimeo","gesture","$2","thumbnail_large","pathname","Player","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","setPlaybackRate","currentSrc","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","_dimensions","setAutopause","state","getVideoTitle","getCurrentTime","getDuration","getTextTracks","_ref$cues","strippedCues","createDocumentFragment","getPaused","seconds","env","YT","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","getTitle","videoId","getVideoData","items","snippet","currentId","posterSrc","playerVars","hl","disablekb","cc_load_policy","cc_lang_pref","widget_referrer","2","5","100","101","150","onPlaybackRateChange","playbackRate","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","getAvailablePlaybackRates","clearInterval","buffering","setInterval","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","Ads","initialized","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","managerPromise","ima","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","setDisableCustomPlaybackForIOS10Plus","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","AdEvent","onAdEvent","cuePoint","seekElement","cuePercentage","ad","getAd","adData","getAdData","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","LOG","adError","getMessage","cancel","addCuePoints","contentComplete","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","zIndex","_this11","destroy","_this12","_this13","AV_PUBLISHERID","AV_CHANNELID","AV_URL","AV_WIDTH","AV_HEIGHT","AV_CDIM2","PreviewThumbnails","thumbnails","lastMouseMoveTime","mouseDown","loadedImages","thumb","scrubbing","getThumbnails","render","determineContainerAutoSizing","promises","u","getThumbnail","vttDataString","processedList","thumbnail","startTime","lineSplit","_lineSplit","_lineSplit$1$split2","w","h","matchTimes","endTime","urlPrefix","tempImage","naturalHeight","percentage","mousePosX","showImageAtCurrentTime","toggleThumbContainer","toggleScrubbingContainer","ceil","lastTime","setScrubbingContainerSize","setThumbContainerSizeAndPos","thumbNum","findIndex","hasThumb","qualityIndex","showingThumb","thumbFilename","thumbUrl","currentImageElement","dataset","showImage","removeOldImages","loadingImage","usingSprites","previewImage","showingThumbFilename","newImage","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","currentImage","removeDelay","deleting","oldThumbFilename","thumbnailsClone","foundOne","newThumbFilename","thumbURL","currentQualityIndex","previewImageHeight","thumbContainerHeight","clearShowing","clientHeight","sizeSpecifiedInCSS","thumbAspectRatio","setThumbContainerPos","seekbarRect","plyrRect","minVal","maxVal","right","clientWidth","previewPos","multiplier","top","currentScrubbingImageElement","currentThumbnailImageElement","insertElements","attribute","change","_sources$","_sources$$provider","crossorigin","Plyr","failed","jQuery","getProviderByUrl","search","truthy","searchParams","tabindex","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","fauxDuration","realDuration","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","updateStorage","prev","closest","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","inline","prod","dev","Shr","count","classname","remove","add","currentType","historySupport","newSource","srclang","parentElement","cite"],"mappings":"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","file":"demo.min.js","sourcesContent":["typeof navigator === \"object\" && (function () {\n\t'use strict';\n\n\tvar commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar stringify_1 = createCommonjsModule(function (module, exports) {\n\t/*\n\t json-stringify-safe\n\t Like JSON.stringify, but doesn't throw on circular references.\n\n\t Originally forked from https://github.com/isaacs/json-stringify-safe\n\t version 5.0.1 on 3/8/2017 and modified to handle Errors serialization\n\t and IE8 compatibility. Tests for this are in test/vendor.\n\n\t ISC license: https://github.com/isaacs/json-stringify-safe/blob/master/LICENSE\n\t*/\n\n\texports = module.exports = stringify;\n\texports.getSerialize = serializer;\n\n\tfunction indexOf(haystack, needle) {\n\t for (var i = 0; i < haystack.length; ++i) {\n\t if (haystack[i] === needle) return i;\n\t }\n\t return -1;\n\t}\n\n\tfunction stringify(obj, replacer, spaces, cycleReplacer) {\n\t return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces);\n\t}\n\n\t// https://github.com/ftlabs/js-abbreviate/blob/fa709e5f139e7770a71827b1893f22418097fbda/index.js#L95-L106\n\tfunction stringifyError(value) {\n\t var err = {\n\t // These properties are implemented as magical getters and don't show up in for in\n\t stack: value.stack,\n\t message: value.message,\n\t name: value.name\n\t };\n\n\t for (var i in value) {\n\t if (Object.prototype.hasOwnProperty.call(value, i)) {\n\t err[i] = value[i];\n\t }\n\t }\n\n\t return err;\n\t}\n\n\tfunction serializer(replacer, cycleReplacer) {\n\t var stack = [];\n\t var keys = [];\n\n\t if (cycleReplacer == null) {\n\t cycleReplacer = function(key, value) {\n\t if (stack[0] === value) {\n\t return '[Circular ~]';\n\t }\n\t return '[Circular ~.' + keys.slice(0, indexOf(stack, value)).join('.') + ']';\n\t };\n\t }\n\n\t return function(key, value) {\n\t if (stack.length > 0) {\n\t var thisPos = indexOf(stack, this);\n\t ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\n\t ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\n\n\t if (~indexOf(stack, value)) {\n\t value = cycleReplacer.call(this, key, value);\n\t }\n\t } else {\n\t stack.push(value);\n\t }\n\n\t return replacer == null\n\t ? value instanceof Error ? stringifyError(value) : value\n\t : replacer.call(this, key, value);\n\t };\n\t}\n\t});\n\tvar stringify_2 = stringify_1.getSerialize;\n\n\tvar _window =\n\t typeof window !== 'undefined'\n\t ? window\n\t : typeof commonjsGlobal !== 'undefined'\n\t ? commonjsGlobal\n\t : typeof self !== 'undefined'\n\t ? self\n\t : {};\n\n\tfunction isObject(what) {\n\t return typeof what === 'object' && what !== null;\n\t}\n\n\t// Yanked from https://git.io/vS8DV re-used under CC0\n\t// with some tiny modifications\n\tfunction isError(value) {\n\t switch (Object.prototype.toString.call(value)) {\n\t case '[object Error]':\n\t return true;\n\t case '[object Exception]':\n\t return true;\n\t case '[object DOMException]':\n\t return true;\n\t default:\n\t return value instanceof Error;\n\t }\n\t}\n\n\tfunction isErrorEvent(value) {\n\t return Object.prototype.toString.call(value) === '[object ErrorEvent]';\n\t}\n\n\tfunction isDOMError(value) {\n\t return Object.prototype.toString.call(value) === '[object DOMError]';\n\t}\n\n\tfunction isDOMException(value) {\n\t return Object.prototype.toString.call(value) === '[object DOMException]';\n\t}\n\n\tfunction isUndefined(what) {\n\t return what === void 0;\n\t}\n\n\tfunction isFunction(what) {\n\t return typeof what === 'function';\n\t}\n\n\tfunction isPlainObject(what) {\n\t return Object.prototype.toString.call(what) === '[object Object]';\n\t}\n\n\tfunction isString(what) {\n\t return Object.prototype.toString.call(what) === '[object String]';\n\t}\n\n\tfunction isArray(what) {\n\t return Object.prototype.toString.call(what) === '[object Array]';\n\t}\n\n\tfunction isEmptyObject(what) {\n\t if (!isPlainObject(what)) return false;\n\n\t for (var _ in what) {\n\t if (what.hasOwnProperty(_)) {\n\t return false;\n\t }\n\t }\n\t return true;\n\t}\n\n\tfunction supportsErrorEvent() {\n\t try {\n\t new ErrorEvent(''); // eslint-disable-line no-new\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsDOMError() {\n\t try {\n\t new DOMError(''); // eslint-disable-line no-new\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsDOMException() {\n\t try {\n\t new DOMException(''); // eslint-disable-line no-new\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsFetch() {\n\t if (!('fetch' in _window)) return false;\n\n\t try {\n\t new Headers(); // eslint-disable-line no-new\n\t new Request(''); // eslint-disable-line no-new\n\t new Response(); // eslint-disable-line no-new\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\t// Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n\t// https://caniuse.com/#feat=referrer-policy\n\t// It doesn't. And it throw exception instead of ignoring this parameter...\n\t// REF: https://github.com/getsentry/raven-js/issues/1233\n\tfunction supportsReferrerPolicy() {\n\t if (!supportsFetch()) return false;\n\n\t try {\n\t // eslint-disable-next-line no-new\n\t new Request('pickleRick', {\n\t referrerPolicy: 'origin'\n\t });\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t}\n\n\tfunction supportsPromiseRejectionEvent() {\n\t return typeof PromiseRejectionEvent === 'function';\n\t}\n\n\tfunction wrappedCallback(callback) {\n\t function dataCallback(data, original) {\n\t var normalizedData = callback(data) || data;\n\t if (original) {\n\t return original(normalizedData) || normalizedData;\n\t }\n\t return normalizedData;\n\t }\n\n\t return dataCallback;\n\t}\n\n\tfunction each(obj, callback) {\n\t var i, j;\n\n\t if (isUndefined(obj.length)) {\n\t for (i in obj) {\n\t if (hasKey(obj, i)) {\n\t callback.call(null, i, obj[i]);\n\t }\n\t }\n\t } else {\n\t j = obj.length;\n\t if (j) {\n\t for (i = 0; i < j; i++) {\n\t callback.call(null, i, obj[i]);\n\t }\n\t }\n\t }\n\t}\n\n\tfunction objectMerge(obj1, obj2) {\n\t if (!obj2) {\n\t return obj1;\n\t }\n\t each(obj2, function(key, value) {\n\t obj1[key] = value;\n\t });\n\t return obj1;\n\t}\n\n\t/**\n\t * This function is only used for react-native.\n\t * react-native freezes object that have already been sent over the\n\t * js bridge. We need this function in order to check if the object is frozen.\n\t * So it's ok that objectFrozen returns false if Object.isFrozen is not\n\t * supported because it's not relevant for other \"platforms\". See related issue:\n\t * https://github.com/getsentry/react-native-sentry/issues/57\n\t */\n\tfunction objectFrozen(obj) {\n\t if (!Object.isFrozen) {\n\t return false;\n\t }\n\t return Object.isFrozen(obj);\n\t}\n\n\tfunction truncate(str, max) {\n\t if (typeof max !== 'number') {\n\t throw new Error('2nd argument to `truncate` function should be a number');\n\t }\n\t if (typeof str !== 'string' || max === 0) {\n\t return str;\n\t }\n\t return str.length <= max ? str : str.substr(0, max) + '\\u2026';\n\t}\n\n\t/**\n\t * hasKey, a better form of hasOwnProperty\n\t * Example: hasKey(MainHostObject, property) === true/false\n\t *\n\t * @param {Object} host object to check property\n\t * @param {string} key to check\n\t */\n\tfunction hasKey(object, key) {\n\t return Object.prototype.hasOwnProperty.call(object, key);\n\t}\n\n\tfunction joinRegExp(patterns) {\n\t // Combine an array of regular expressions and strings into one large regexp\n\t // Be mad.\n\t var sources = [],\n\t i = 0,\n\t len = patterns.length,\n\t pattern;\n\n\t for (; i < len; i++) {\n\t pattern = patterns[i];\n\t if (isString(pattern)) {\n\t // If it's a string, we need to escape it\n\t // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n\t sources.push(pattern.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1'));\n\t } else if (pattern && pattern.source) {\n\t // If it's a regexp already, we want to extract the source\n\t sources.push(pattern.source);\n\t }\n\t // Intentionally skip other cases\n\t }\n\t return new RegExp(sources.join('|'), 'i');\n\t}\n\n\tfunction urlencode(o) {\n\t var pairs = [];\n\t each(o, function(key, value) {\n\t pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n\t });\n\t return pairs.join('&');\n\t}\n\n\t// borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n\t// intentionally using regex and not href parsing trick because React Native and other\n\t// environments where DOM might not be available\n\tfunction parseUrl(url) {\n\t if (typeof url !== 'string') return {};\n\t var match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n\t // coerce to undefined values to empty string so we don't get 'undefined'\n\t var query = match[6] || '';\n\t var fragment = match[8] || '';\n\t return {\n\t protocol: match[2],\n\t host: match[4],\n\t path: match[5],\n\t relative: match[5] + query + fragment // everything minus origin\n\t };\n\t}\n\tfunction uuid4() {\n\t var crypto = _window.crypto || _window.msCrypto;\n\n\t if (!isUndefined(crypto) && crypto.getRandomValues) {\n\t // Use window.crypto API if available\n\t // eslint-disable-next-line no-undef\n\t var arr = new Uint16Array(8);\n\t crypto.getRandomValues(arr);\n\n\t // set 4 in byte 7\n\t arr[3] = (arr[3] & 0xfff) | 0x4000;\n\t // set 2 most significant bits of byte 9 to '10'\n\t arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n\t var pad = function(num) {\n\t var v = num.toString(16);\n\t while (v.length < 4) {\n\t v = '0' + v;\n\t }\n\t return v;\n\t };\n\n\t return (\n\t pad(arr[0]) +\n\t pad(arr[1]) +\n\t pad(arr[2]) +\n\t pad(arr[3]) +\n\t pad(arr[4]) +\n\t pad(arr[5]) +\n\t pad(arr[6]) +\n\t pad(arr[7])\n\t );\n\t } else {\n\t // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n\t return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n\t var r = (Math.random() * 16) | 0,\n\t v = c === 'x' ? r : (r & 0x3) | 0x8;\n\t return v.toString(16);\n\t });\n\t }\n\t}\n\n\t/**\n\t * Given a child DOM element, returns a query-selector statement describing that\n\t * and its ancestors\n\t * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n\t * @param elem\n\t * @returns {string}\n\t */\n\tfunction htmlTreeAsString(elem) {\n\t /* eslint no-extra-parens:0*/\n\t var MAX_TRAVERSE_HEIGHT = 5,\n\t MAX_OUTPUT_LEN = 80,\n\t out = [],\n\t height = 0,\n\t len = 0,\n\t separator = ' > ',\n\t sepLength = separator.length,\n\t nextStr;\n\n\t while (elem && height++ < MAX_TRAVERSE_HEIGHT) {\n\t nextStr = htmlElementAsString(elem);\n\t // bail out if\n\t // - nextStr is the 'html' element\n\t // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n\t // (ignore this limit if we are on the first iteration)\n\t if (\n\t nextStr === 'html' ||\n\t (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)\n\t ) {\n\t break;\n\t }\n\n\t out.push(nextStr);\n\n\t len += nextStr.length;\n\t elem = elem.parentNode;\n\t }\n\n\t return out.reverse().join(separator);\n\t}\n\n\t/**\n\t * Returns a simple, query-selector representation of a DOM element\n\t * e.g. [HTMLElement] => input#foo.btn[name=baz]\n\t * @param HTMLElement\n\t * @returns {string}\n\t */\n\tfunction htmlElementAsString(elem) {\n\t var out = [],\n\t className,\n\t classes,\n\t key,\n\t attr,\n\t i;\n\n\t if (!elem || !elem.tagName) {\n\t return '';\n\t }\n\n\t out.push(elem.tagName.toLowerCase());\n\t if (elem.id) {\n\t out.push('#' + elem.id);\n\t }\n\n\t className = elem.className;\n\t if (className && isString(className)) {\n\t classes = className.split(/\\s+/);\n\t for (i = 0; i < classes.length; i++) {\n\t out.push('.' + classes[i]);\n\t }\n\t }\n\t var attrWhitelist = ['type', 'name', 'title', 'alt'];\n\t for (i = 0; i < attrWhitelist.length; i++) {\n\t key = attrWhitelist[i];\n\t attr = elem.getAttribute(key);\n\t if (attr) {\n\t out.push('[' + key + '=\"' + attr + '\"]');\n\t }\n\t }\n\t return out.join('');\n\t}\n\n\t/**\n\t * Returns true if either a OR b is truthy, but not both\n\t */\n\tfunction isOnlyOneTruthy(a, b) {\n\t return !!(!!a ^ !!b);\n\t}\n\n\t/**\n\t * Returns true if both parameters are undefined\n\t */\n\tfunction isBothUndefined(a, b) {\n\t return isUndefined(a) && isUndefined(b);\n\t}\n\n\t/**\n\t * Returns true if the two input exception interfaces have the same content\n\t */\n\tfunction isSameException(ex1, ex2) {\n\t if (isOnlyOneTruthy(ex1, ex2)) return false;\n\n\t ex1 = ex1.values[0];\n\t ex2 = ex2.values[0];\n\n\t if (ex1.type !== ex2.type || ex1.value !== ex2.value) return false;\n\n\t // in case both stacktraces are undefined, we can't decide so default to false\n\t if (isBothUndefined(ex1.stacktrace, ex2.stacktrace)) return false;\n\n\t return isSameStacktrace(ex1.stacktrace, ex2.stacktrace);\n\t}\n\n\t/**\n\t * Returns true if the two input stack trace interfaces have the same content\n\t */\n\tfunction isSameStacktrace(stack1, stack2) {\n\t if (isOnlyOneTruthy(stack1, stack2)) return false;\n\n\t var frames1 = stack1.frames;\n\t var frames2 = stack2.frames;\n\n\t // Exit early if stacktrace is malformed\n\t if (frames1 === undefined || frames2 === undefined) return false;\n\n\t // Exit early if frame count differs\n\t if (frames1.length !== frames2.length) return false;\n\n\t // Iterate through every frame; bail out if anything differs\n\t var a, b;\n\t for (var i = 0; i < frames1.length; i++) {\n\t a = frames1[i];\n\t b = frames2[i];\n\t if (\n\t a.filename !== b.filename ||\n\t a.lineno !== b.lineno ||\n\t a.colno !== b.colno ||\n\t a['function'] !== b['function']\n\t )\n\t return false;\n\t }\n\t return true;\n\t}\n\n\t/**\n\t * Polyfill a method\n\t * @param obj object e.g. `document`\n\t * @param name method name present on object e.g. `addEventListener`\n\t * @param replacement replacement function\n\t * @param track {optional} record instrumentation to an array\n\t */\n\tfunction fill(obj, name, replacement, track) {\n\t if (obj == null) return;\n\t var orig = obj[name];\n\t obj[name] = replacement(orig);\n\t obj[name].__raven__ = true;\n\t obj[name].__orig__ = orig;\n\t if (track) {\n\t track.push([obj, name, orig]);\n\t }\n\t}\n\n\t/**\n\t * Join values in array\n\t * @param input array of values to be joined together\n\t * @param delimiter string to be placed in-between values\n\t * @returns {string}\n\t */\n\tfunction safeJoin(input, delimiter) {\n\t if (!isArray(input)) return '';\n\n\t var output = [];\n\n\t for (var i = 0; i < input.length; i++) {\n\t try {\n\t output.push(String(input[i]));\n\t } catch (e) {\n\t output.push('[value cannot be serialized]');\n\t }\n\t }\n\n\t return output.join(delimiter);\n\t}\n\n\t// Default Node.js REPL depth\n\tvar MAX_SERIALIZE_EXCEPTION_DEPTH = 3;\n\t// 50kB, as 100kB is max payload size, so half sounds reasonable\n\tvar MAX_SERIALIZE_EXCEPTION_SIZE = 50 * 1024;\n\tvar MAX_SERIALIZE_KEYS_LENGTH = 40;\n\n\tfunction utf8Length(value) {\n\t return ~-encodeURI(value).split(/%..|./).length;\n\t}\n\n\tfunction jsonSize(value) {\n\t return utf8Length(JSON.stringify(value));\n\t}\n\n\tfunction serializeValue(value) {\n\t if (typeof value === 'string') {\n\t var maxLength = 40;\n\t return truncate(value, maxLength);\n\t } else if (\n\t typeof value === 'number' ||\n\t typeof value === 'boolean' ||\n\t typeof value === 'undefined'\n\t ) {\n\t return value;\n\t }\n\n\t var type = Object.prototype.toString.call(value);\n\n\t // Node.js REPL notation\n\t if (type === '[object Object]') return '[Object]';\n\t if (type === '[object Array]') return '[Array]';\n\t if (type === '[object Function]')\n\t return value.name ? '[Function: ' + value.name + ']' : '[Function]';\n\n\t return value;\n\t}\n\n\tfunction serializeObject(value, depth) {\n\t if (depth === 0) return serializeValue(value);\n\n\t if (isPlainObject(value)) {\n\t return Object.keys(value).reduce(function(acc, key) {\n\t acc[key] = serializeObject(value[key], depth - 1);\n\t return acc;\n\t }, {});\n\t } else if (Array.isArray(value)) {\n\t return value.map(function(val) {\n\t return serializeObject(val, depth - 1);\n\t });\n\t }\n\n\t return serializeValue(value);\n\t}\n\n\tfunction serializeException(ex, depth, maxSize) {\n\t if (!isPlainObject(ex)) return ex;\n\n\t depth = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_DEPTH : depth;\n\t maxSize = typeof depth !== 'number' ? MAX_SERIALIZE_EXCEPTION_SIZE : maxSize;\n\n\t var serialized = serializeObject(ex, depth);\n\n\t if (jsonSize(stringify_1(serialized)) > maxSize) {\n\t return serializeException(ex, depth - 1);\n\t }\n\n\t return serialized;\n\t}\n\n\tfunction serializeKeysForMessage(keys, maxLength) {\n\t if (typeof keys === 'number' || typeof keys === 'string') return keys.toString();\n\t if (!Array.isArray(keys)) return '';\n\n\t keys = keys.filter(function(key) {\n\t return typeof key === 'string';\n\t });\n\t if (keys.length === 0) return '[object has no keys]';\n\n\t maxLength = typeof maxLength !== 'number' ? MAX_SERIALIZE_KEYS_LENGTH : maxLength;\n\t if (keys[0].length >= maxLength) return keys[0];\n\n\t for (var usedKeys = keys.length; usedKeys > 0; usedKeys--) {\n\t var serialized = keys.slice(0, usedKeys).join(', ');\n\t if (serialized.length > maxLength) continue;\n\t if (usedKeys === keys.length) return serialized;\n\t return serialized + '\\u2026';\n\t }\n\n\t return '';\n\t}\n\n\tfunction sanitize(input, sanitizeKeys) {\n\t if (!isArray(sanitizeKeys) || (isArray(sanitizeKeys) && sanitizeKeys.length === 0))\n\t return input;\n\n\t var sanitizeRegExp = joinRegExp(sanitizeKeys);\n\t var sanitizeMask = '********';\n\t var safeInput;\n\n\t try {\n\t safeInput = JSON.parse(stringify_1(input));\n\t } catch (o_O) {\n\t return input;\n\t }\n\n\t function sanitizeWorker(workerInput) {\n\t if (isArray(workerInput)) {\n\t return workerInput.map(function(val) {\n\t return sanitizeWorker(val);\n\t });\n\t }\n\n\t if (isPlainObject(workerInput)) {\n\t return Object.keys(workerInput).reduce(function(acc, k) {\n\t if (sanitizeRegExp.test(k)) {\n\t acc[k] = sanitizeMask;\n\t } else {\n\t acc[k] = sanitizeWorker(workerInput[k]);\n\t }\n\t return acc;\n\t }, {});\n\t }\n\n\t return workerInput;\n\t }\n\n\t return sanitizeWorker(safeInput);\n\t}\n\n\tvar utils = {\n\t isObject: isObject,\n\t isError: isError,\n\t isErrorEvent: isErrorEvent,\n\t isDOMError: isDOMError,\n\t isDOMException: isDOMException,\n\t isUndefined: isUndefined,\n\t isFunction: isFunction,\n\t isPlainObject: isPlainObject,\n\t isString: isString,\n\t isArray: isArray,\n\t isEmptyObject: isEmptyObject,\n\t supportsErrorEvent: supportsErrorEvent,\n\t supportsDOMError: supportsDOMError,\n\t supportsDOMException: supportsDOMException,\n\t supportsFetch: supportsFetch,\n\t supportsReferrerPolicy: supportsReferrerPolicy,\n\t supportsPromiseRejectionEvent: supportsPromiseRejectionEvent,\n\t wrappedCallback: wrappedCallback,\n\t each: each,\n\t objectMerge: objectMerge,\n\t truncate: truncate,\n\t objectFrozen: objectFrozen,\n\t hasKey: hasKey,\n\t joinRegExp: joinRegExp,\n\t urlencode: urlencode,\n\t uuid4: uuid4,\n\t htmlTreeAsString: htmlTreeAsString,\n\t htmlElementAsString: htmlElementAsString,\n\t isSameException: isSameException,\n\t isSameStacktrace: isSameStacktrace,\n\t parseUrl: parseUrl,\n\t fill: fill,\n\t safeJoin: safeJoin,\n\t serializeException: serializeException,\n\t serializeKeysForMessage: serializeKeysForMessage,\n\t sanitize: sanitize\n\t};\n\n\t/*\n\t TraceKit - Cross brower stack traces\n\n\t This was originally forked from github.com/occ/TraceKit, but has since been\n\t largely re-written and is now maintained as part of raven-js. Tests for\n\t this are in test/vendor.\n\n\t MIT license\n\t*/\n\n\tvar TraceKit = {\n\t collectWindowErrors: true,\n\t debug: false\n\t};\n\n\t// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\tvar _window$1 =\n\t typeof window !== 'undefined'\n\t ? window\n\t : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\n\t// global reference to slice\n\tvar _slice = [].slice;\n\tvar UNKNOWN_FUNCTION = '?';\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Error_types\n\tvar ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/;\n\n\tfunction getLocationHref() {\n\t if (typeof document === 'undefined' || document.location == null) return '';\n\t return document.location.href;\n\t}\n\n\tfunction getLocationOrigin() {\n\t if (typeof document === 'undefined' || document.location == null) return '';\n\n\t // Oh dear IE10...\n\t if (!document.location.origin) {\n\t return (\n\t document.location.protocol +\n\t '//' +\n\t document.location.hostname +\n\t (document.location.port ? ':' + document.location.port : '')\n\t );\n\t }\n\n\t return document.location.origin;\n\t}\n\n\t/**\n\t * TraceKit.report: cross-browser processing of unhandled exceptions\n\t *\n\t * Syntax:\n\t * TraceKit.report.subscribe(function(stackInfo) { ... })\n\t * TraceKit.report.unsubscribe(function(stackInfo) { ... })\n\t * TraceKit.report(exception)\n\t * try { ...code... } catch(ex) { TraceKit.report(ex); }\n\t *\n\t * Supports:\n\t * - Firefox: full stack trace with line numbers, plus column number\n\t * on top frame; column number is not guaranteed\n\t * - Opera: full stack trace with line and column numbers\n\t * - Chrome: full stack trace with line and column numbers\n\t * - Safari: line and column number for the top frame only; some frames\n\t * may be missing, and column number is not guaranteed\n\t * - IE: line and column number for the top frame only; some frames\n\t * may be missing, and column number is not guaranteed\n\t *\n\t * In theory, TraceKit should work on all of the following versions:\n\t * - IE5.5+ (only 8.0 tested)\n\t * - Firefox 0.9+ (only 3.5+ tested)\n\t * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require\n\t * Exceptions Have Stacktrace to be enabled in opera:config)\n\t * - Safari 3+ (only 4+ tested)\n\t * - Chrome 1+ (only 5+ tested)\n\t * - Konqueror 3.5+ (untested)\n\t *\n\t * Requires TraceKit.computeStackTrace.\n\t *\n\t * Tries to catch all unhandled exceptions and report them to the\n\t * subscribed handlers. Please note that TraceKit.report will rethrow the\n\t * exception. This is REQUIRED in order to get a useful stack trace in IE.\n\t * If the exception does not reach the top of the browser, you will only\n\t * get a stack trace from the point where TraceKit.report was called.\n\t *\n\t * Handlers receive a stackInfo object as described in the\n\t * TraceKit.computeStackTrace docs.\n\t */\n\tTraceKit.report = (function reportModuleWrapper() {\n\t var handlers = [],\n\t lastArgs = null,\n\t lastException = null,\n\t lastExceptionStack = null;\n\n\t /**\n\t * Add a crash handler.\n\t * @param {Function} handler\n\t */\n\t function subscribe(handler) {\n\t installGlobalHandler();\n\t handlers.push(handler);\n\t }\n\n\t /**\n\t * Remove a crash handler.\n\t * @param {Function} handler\n\t */\n\t function unsubscribe(handler) {\n\t for (var i = handlers.length - 1; i >= 0; --i) {\n\t if (handlers[i] === handler) {\n\t handlers.splice(i, 1);\n\t }\n\t }\n\t }\n\n\t /**\n\t * Remove all crash handlers.\n\t */\n\t function unsubscribeAll() {\n\t uninstallGlobalHandler();\n\t handlers = [];\n\t }\n\n\t /**\n\t * Dispatch stack information to all handlers.\n\t * @param {Object.} stack\n\t */\n\t function notifyHandlers(stack, isWindowError) {\n\t var exception = null;\n\t if (isWindowError && !TraceKit.collectWindowErrors) {\n\t return;\n\t }\n\t for (var i in handlers) {\n\t if (handlers.hasOwnProperty(i)) {\n\t try {\n\t handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));\n\t } catch (inner) {\n\t exception = inner;\n\t }\n\t }\n\t }\n\n\t if (exception) {\n\t throw exception;\n\t }\n\t }\n\n\t var _oldOnerrorHandler, _onErrorHandlerInstalled;\n\n\t /**\n\t * Ensures all global unhandled exceptions are recorded.\n\t * Supported by Gecko and IE.\n\t * @param {string} msg Error message.\n\t * @param {string} url URL of script that generated the exception.\n\t * @param {(number|string)} lineNo The line number at which the error\n\t * occurred.\n\t * @param {?(number|string)} colNo The column number at which the error\n\t * occurred.\n\t * @param {?Error} ex The actual Error object.\n\t */\n\t function traceKitWindowOnError(msg, url, lineNo, colNo, ex) {\n\t var stack = null;\n\t // If 'ex' is ErrorEvent, get real Error from inside\n\t var exception = utils.isErrorEvent(ex) ? ex.error : ex;\n\t // If 'msg' is ErrorEvent, get real message from inside\n\t var message = utils.isErrorEvent(msg) ? msg.message : msg;\n\n\t if (lastExceptionStack) {\n\t TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(\n\t lastExceptionStack,\n\t url,\n\t lineNo,\n\t message\n\t );\n\t processLastException();\n\t } else if (exception && utils.isError(exception)) {\n\t // non-string `exception` arg; attempt to extract stack trace\n\n\t // New chrome and blink send along a real error object\n\t // Let's just report that like a normal error.\n\t // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror\n\t stack = TraceKit.computeStackTrace(exception);\n\t notifyHandlers(stack, true);\n\t } else {\n\t var location = {\n\t url: url,\n\t line: lineNo,\n\t column: colNo\n\t };\n\n\t var name = undefined;\n\t var groups;\n\n\t if ({}.toString.call(message) === '[object String]') {\n\t var groups = message.match(ERROR_TYPES_RE);\n\t if (groups) {\n\t name = groups[1];\n\t message = groups[2];\n\t }\n\t }\n\n\t location.func = UNKNOWN_FUNCTION;\n\n\t stack = {\n\t name: name,\n\t message: message,\n\t url: getLocationHref(),\n\t stack: [location]\n\t };\n\t notifyHandlers(stack, true);\n\t }\n\n\t if (_oldOnerrorHandler) {\n\t return _oldOnerrorHandler.apply(this, arguments);\n\t }\n\n\t return false;\n\t }\n\n\t function installGlobalHandler() {\n\t if (_onErrorHandlerInstalled) {\n\t return;\n\t }\n\t _oldOnerrorHandler = _window$1.onerror;\n\t _window$1.onerror = traceKitWindowOnError;\n\t _onErrorHandlerInstalled = true;\n\t }\n\n\t function uninstallGlobalHandler() {\n\t if (!_onErrorHandlerInstalled) {\n\t return;\n\t }\n\t _window$1.onerror = _oldOnerrorHandler;\n\t _onErrorHandlerInstalled = false;\n\t _oldOnerrorHandler = undefined;\n\t }\n\n\t function processLastException() {\n\t var _lastExceptionStack = lastExceptionStack,\n\t _lastArgs = lastArgs;\n\t lastArgs = null;\n\t lastExceptionStack = null;\n\t lastException = null;\n\t notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));\n\t }\n\n\t /**\n\t * Reports an unhandled Error to TraceKit.\n\t * @param {Error} ex\n\t * @param {?boolean} rethrow If false, do not re-throw the exception.\n\t * Only used for window.onerror to not cause an infinite loop of\n\t * rethrowing.\n\t */\n\t function report(ex, rethrow) {\n\t var args = _slice.call(arguments, 1);\n\t if (lastExceptionStack) {\n\t if (lastException === ex) {\n\t return; // already caught by an inner catch block, ignore\n\t } else {\n\t processLastException();\n\t }\n\t }\n\n\t var stack = TraceKit.computeStackTrace(ex);\n\t lastExceptionStack = stack;\n\t lastException = ex;\n\t lastArgs = args;\n\n\t // If the stack trace is incomplete, wait for 2 seconds for\n\t // slow slow IE to see if onerror occurs or not before reporting\n\t // this exception; otherwise, we will end up with an incomplete\n\t // stack trace\n\t setTimeout(function() {\n\t if (lastException === ex) {\n\t processLastException();\n\t }\n\t }, stack.incomplete ? 2000 : 0);\n\n\t if (rethrow !== false) {\n\t throw ex; // re-throw to propagate to the top level (and cause window.onerror)\n\t }\n\t }\n\n\t report.subscribe = subscribe;\n\t report.unsubscribe = unsubscribe;\n\t report.uninstall = unsubscribeAll;\n\t return report;\n\t})();\n\n\t/**\n\t * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript\n\t *\n\t * Syntax:\n\t * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)\n\t * Returns:\n\t * s.name - exception name\n\t * s.message - exception message\n\t * s.stack[i].url - JavaScript or HTML file URL\n\t * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)\n\t * s.stack[i].args - arguments passed to the function, if known\n\t * s.stack[i].line - line number, if known\n\t * s.stack[i].column - column number, if known\n\t *\n\t * Supports:\n\t * - Firefox: full stack trace with line numbers and unreliable column\n\t * number on top frame\n\t * - Opera 10: full stack trace with line and column numbers\n\t * - Opera 9-: full stack trace with line numbers\n\t * - Chrome: full stack trace with line and column numbers\n\t * - Safari: line and column number for the topmost stacktrace element\n\t * only\n\t * - IE: no line numbers whatsoever\n\t *\n\t * Tries to guess names of anonymous functions by looking for assignments\n\t * in the source code. In IE and Safari, we have to guess source file names\n\t * by searching for function bodies inside all page scripts. This will not\n\t * work for scripts that are loaded cross-domain.\n\t * Here be dragons: some function names may be guessed incorrectly, and\n\t * duplicate functions may be mismatched.\n\t *\n\t * TraceKit.computeStackTrace should only be used for tracing purposes.\n\t * Logging of unhandled exceptions should be done with TraceKit.report,\n\t * which builds on top of TraceKit.computeStackTrace and provides better\n\t * IE support by utilizing the window.onerror event to retrieve information\n\t * about the top of the stack.\n\t *\n\t * Note: In IE and Safari, no stack trace is recorded on the Error object,\n\t * so computeStackTrace instead walks its *own* chain of callers.\n\t * This means that:\n\t * * in Safari, some methods may be missing from the stack trace;\n\t * * in IE, the topmost function in the stack trace will always be the\n\t * caller of computeStackTrace.\n\t *\n\t * This is okay for tracing (because you are likely to be calling\n\t * computeStackTrace from the function you want to be the topmost element\n\t * of the stack trace anyway), but not okay for logging unhandled\n\t * exceptions (because your catch block will likely be far away from the\n\t * inner function that actually caused the exception).\n\t *\n\t */\n\tTraceKit.computeStackTrace = (function computeStackTraceWrapper() {\n\t // Contents of Exception in various browsers.\n\t //\n\t // SAFARI:\n\t // ex.message = Can't find variable: qq\n\t // ex.line = 59\n\t // ex.sourceId = 580238192\n\t // ex.sourceURL = http://...\n\t // ex.expressionBeginOffset = 96\n\t // ex.expressionCaretOffset = 98\n\t // ex.expressionEndOffset = 98\n\t // ex.name = ReferenceError\n\t //\n\t // FIREFOX:\n\t // ex.message = qq is not defined\n\t // ex.fileName = http://...\n\t // ex.lineNumber = 59\n\t // ex.columnNumber = 69\n\t // ex.stack = ...stack trace... (see the example below)\n\t // ex.name = ReferenceError\n\t //\n\t // CHROME:\n\t // ex.message = qq is not defined\n\t // ex.name = ReferenceError\n\t // ex.type = not_defined\n\t // ex.arguments = ['aa']\n\t // ex.stack = ...stack trace...\n\t //\n\t // INTERNET EXPLORER:\n\t // ex.message = ...\n\t // ex.name = ReferenceError\n\t //\n\t // OPERA:\n\t // ex.message = ...message... (see the example below)\n\t // ex.name = ReferenceError\n\t // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)\n\t // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'\n\n\t /**\n\t * Computes stack trace information from the stack property.\n\t * Chrome and Gecko use this property.\n\t * @param {Error} ex\n\t * @return {?Object.} Stack trace information.\n\t */\n\t function computeStackTraceFromStackProp(ex) {\n\t if (typeof ex.stack === 'undefined' || !ex.stack) return;\n\n\t var chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|native|eval|webpack||[a-z]:|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n\t var winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx(?:-web)|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\n\t // NOTE: blob urls are now supposed to always have an origin, therefore it's format\n\t // which is `blob:http://url/path/with-some-uuid`, is matched by `blob.*?:\\/` as well\n\t var gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*bundle)(?::(\\d+))?(?::(\\d+))?\\s*$/i;\n\t // Used to additionally parse URL/line/column from eval frames\n\t var geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\n\t var chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\t var lines = ex.stack.split('\\n');\n\t var stack = [];\n\t var submatch;\n\t var parts;\n\t var element;\n\t var reference = /^(.*) is undefined$/.exec(ex.message);\n\n\t for (var i = 0, j = lines.length; i < j; ++i) {\n\t if ((parts = chrome.exec(lines[i]))) {\n\t var isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n\t var isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n\t if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n\t // throw out eval line/column and use top-most line/column number\n\t parts[2] = submatch[1]; // url\n\t parts[3] = submatch[2]; // line\n\t parts[4] = submatch[3]; // column\n\t }\n\t element = {\n\t url: !isNative ? parts[2] : null,\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: isNative ? [parts[2]] : [],\n\t line: parts[3] ? +parts[3] : null,\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t } else if ((parts = winjs.exec(lines[i]))) {\n\t element = {\n\t url: parts[2],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: [],\n\t line: +parts[3],\n\t column: parts[4] ? +parts[4] : null\n\t };\n\t } else if ((parts = gecko.exec(lines[i]))) {\n\t var isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n\t if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n\t // throw out eval line/column and use top-most line number\n\t parts[3] = submatch[1];\n\t parts[4] = submatch[2];\n\t parts[5] = null; // no column when eval\n\t } else if (i === 0 && !parts[5] && typeof ex.columnNumber !== 'undefined') {\n\t // FireFox uses this awesome columnNumber property for its top frame\n\t // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n\t // so adding 1\n\t // NOTE: this hack doesn't work if top-most frame is eval\n\t stack[0].column = ex.columnNumber + 1;\n\t }\n\t element = {\n\t url: parts[3],\n\t func: parts[1] || UNKNOWN_FUNCTION,\n\t args: parts[2] ? parts[2].split(',') : [],\n\t line: parts[4] ? +parts[4] : null,\n\t column: parts[5] ? +parts[5] : null\n\t };\n\t } else {\n\t continue;\n\t }\n\n\t if (!element.func && element.line) {\n\t element.func = UNKNOWN_FUNCTION;\n\t }\n\n\t if (element.url && element.url.substr(0, 5) === 'blob:') {\n\t // Special case for handling JavaScript loaded into a blob.\n\t // We use a synchronous AJAX request here as a blob is already in\n\t // memory - it's not making a network request. This will generate a warning\n\t // in the browser console, but there has already been an error so that's not\n\t // that much of an issue.\n\t var xhr = new XMLHttpRequest();\n\t xhr.open('GET', element.url, false);\n\t xhr.send(null);\n\n\t // If we failed to download the source, skip this patch\n\t if (xhr.status === 200) {\n\t var source = xhr.responseText || '';\n\n\t // We trim the source down to the last 300 characters as sourceMappingURL is always at the end of the file.\n\t // Why 300? To be in line with: https://github.com/getsentry/sentry/blob/4af29e8f2350e20c28a6933354e4f42437b4ba42/src/sentry/lang/javascript/processor.py#L164-L175\n\t source = source.slice(-300);\n\n\t // Now we dig out the source map URL\n\t var sourceMaps = source.match(/\\/\\/# sourceMappingURL=(.*)$/);\n\n\t // If we don't find a source map comment or we find more than one, continue on to the next element.\n\t if (sourceMaps) {\n\t var sourceMapAddress = sourceMaps[1];\n\n\t // Now we check to see if it's a relative URL.\n\t // If it is, convert it to an absolute one.\n\t if (sourceMapAddress.charAt(0) === '~') {\n\t sourceMapAddress = getLocationOrigin() + sourceMapAddress.slice(1);\n\t }\n\n\t // Now we strip the '.map' off of the end of the URL and update the\n\t // element so that Sentry can match the map to the blob.\n\t element.url = sourceMapAddress.slice(0, -4);\n\t }\n\t }\n\t }\n\n\t stack.push(element);\n\t }\n\n\t if (!stack.length) {\n\t return null;\n\t }\n\n\t return {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref(),\n\t stack: stack\n\t };\n\t }\n\n\t /**\n\t * Adds information about the first frame to incomplete stack traces.\n\t * Safari and IE require this to get complete data on the first frame.\n\t * @param {Object.} stackInfo Stack trace information from\n\t * one of the compute* methods.\n\t * @param {string} url The URL of the script that caused an error.\n\t * @param {(number|string)} lineNo The line number of the script that\n\t * caused an error.\n\t * @param {string=} message The error generated by the browser, which\n\t * hopefully contains the name of the object that caused the error.\n\t * @return {boolean} Whether or not the stack information was\n\t * augmented.\n\t */\n\t function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {\n\t var initial = {\n\t url: url,\n\t line: lineNo\n\t };\n\n\t if (initial.url && initial.line) {\n\t stackInfo.incomplete = false;\n\n\t if (!initial.func) {\n\t initial.func = UNKNOWN_FUNCTION;\n\t }\n\n\t if (stackInfo.stack.length > 0) {\n\t if (stackInfo.stack[0].url === initial.url) {\n\t if (stackInfo.stack[0].line === initial.line) {\n\t return false; // already in stack trace\n\t } else if (\n\t !stackInfo.stack[0].line &&\n\t stackInfo.stack[0].func === initial.func\n\t ) {\n\t stackInfo.stack[0].line = initial.line;\n\t return false;\n\t }\n\t }\n\t }\n\n\t stackInfo.stack.unshift(initial);\n\t stackInfo.partial = true;\n\t return true;\n\t } else {\n\t stackInfo.incomplete = true;\n\t }\n\n\t return false;\n\t }\n\n\t /**\n\t * Computes stack trace information by walking the arguments.caller\n\t * chain at the time the exception occurred. This will cause earlier\n\t * frames to be missed but is the only way to get any stack trace in\n\t * Safari and IE. The top frame is restored by\n\t * {@link augmentStackTraceWithInitialElement}.\n\t * @param {Error} ex\n\t * @return {?Object.} Stack trace information.\n\t */\n\t function computeStackTraceByWalkingCallerChain(ex, depth) {\n\t var functionName = /function\\s+([_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*)?\\s*\\(/i,\n\t stack = [],\n\t funcs = {},\n\t recursion = false,\n\t parts,\n\t item;\n\n\t for (\n\t var curr = computeStackTraceByWalkingCallerChain.caller;\n\t curr && !recursion;\n\t curr = curr.caller\n\t ) {\n\t if (curr === computeStackTrace || curr === TraceKit.report) {\n\t // console.log('skipping internal function');\n\t continue;\n\t }\n\n\t item = {\n\t url: null,\n\t func: UNKNOWN_FUNCTION,\n\t line: null,\n\t column: null\n\t };\n\n\t if (curr.name) {\n\t item.func = curr.name;\n\t } else if ((parts = functionName.exec(curr.toString()))) {\n\t item.func = parts[1];\n\t }\n\n\t if (typeof item.func === 'undefined') {\n\t try {\n\t item.func = parts.input.substring(0, parts.input.indexOf('{'));\n\t } catch (e) {}\n\t }\n\n\t if (funcs['' + curr]) {\n\t recursion = true;\n\t } else {\n\t funcs['' + curr] = true;\n\t }\n\n\t stack.push(item);\n\t }\n\n\t if (depth) {\n\t // console.log('depth is ' + depth);\n\t // console.log('stack is ' + stack.length);\n\t stack.splice(0, depth);\n\t }\n\n\t var result = {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref(),\n\t stack: stack\n\t };\n\t augmentStackTraceWithInitialElement(\n\t result,\n\t ex.sourceURL || ex.fileName,\n\t ex.line || ex.lineNumber,\n\t ex.message || ex.description\n\t );\n\t return result;\n\t }\n\n\t /**\n\t * Computes a stack trace for an exception.\n\t * @param {Error} ex\n\t * @param {(string|number)=} depth\n\t */\n\t function computeStackTrace(ex, depth) {\n\t var stack = null;\n\t depth = depth == null ? 0 : +depth;\n\n\t try {\n\t stack = computeStackTraceFromStackProp(ex);\n\t if (stack) {\n\t return stack;\n\t }\n\t } catch (e) {\n\t if (TraceKit.debug) {\n\t throw e;\n\t }\n\t }\n\n\t try {\n\t stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);\n\t if (stack) {\n\t return stack;\n\t }\n\t } catch (e) {\n\t if (TraceKit.debug) {\n\t throw e;\n\t }\n\t }\n\t return {\n\t name: ex.name,\n\t message: ex.message,\n\t url: getLocationHref()\n\t };\n\t }\n\n\t computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;\n\t computeStackTrace.computeStackTraceFromStackProp = computeStackTraceFromStackProp;\n\n\t return computeStackTrace;\n\t})();\n\n\tvar tracekit = TraceKit;\n\n\t/*\n\t * JavaScript MD5\n\t * https://github.com/blueimp/JavaScript-MD5\n\t *\n\t * Copyright 2011, Sebastian Tschan\n\t * https://blueimp.net\n\t *\n\t * Licensed under the MIT license:\n\t * https://opensource.org/licenses/MIT\n\t *\n\t * Based on\n\t * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n\t * Digest Algorithm, as defined in RFC 1321.\n\t * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n\t * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n\t * Distributed under the BSD License\n\t * See http://pajhome.org.uk/crypt/md5 for more info.\n\t */\n\n\t/*\n\t* Add integers, wrapping at 2^32. This uses 16-bit operations internally\n\t* to work around bugs in some JS interpreters.\n\t*/\n\tfunction safeAdd(x, y) {\n\t var lsw = (x & 0xffff) + (y & 0xffff);\n\t var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n\t return (msw << 16) | (lsw & 0xffff);\n\t}\n\n\t/*\n\t* Bitwise rotate a 32-bit number to the left.\n\t*/\n\tfunction bitRotateLeft(num, cnt) {\n\t return (num << cnt) | (num >>> (32 - cnt));\n\t}\n\n\t/*\n\t* These functions implement the four basic operations the algorithm uses.\n\t*/\n\tfunction md5cmn(q, a, b, x, s, t) {\n\t return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n\t}\n\tfunction md5ff(a, b, c, d, x, s, t) {\n\t return md5cmn((b & c) | (~b & d), a, b, x, s, t);\n\t}\n\tfunction md5gg(a, b, c, d, x, s, t) {\n\t return md5cmn((b & d) | (c & ~d), a, b, x, s, t);\n\t}\n\tfunction md5hh(a, b, c, d, x, s, t) {\n\t return md5cmn(b ^ c ^ d, a, b, x, s, t);\n\t}\n\tfunction md5ii(a, b, c, d, x, s, t) {\n\t return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n\t}\n\n\t/*\n\t* Calculate the MD5 of an array of little-endian words, and a bit length.\n\t*/\n\tfunction binlMD5(x, len) {\n\t /* append padding */\n\t x[len >> 5] |= 0x80 << (len % 32);\n\t x[(((len + 64) >>> 9) << 4) + 14] = len;\n\n\t var i;\n\t var olda;\n\t var oldb;\n\t var oldc;\n\t var oldd;\n\t var a = 1732584193;\n\t var b = -271733879;\n\t var c = -1732584194;\n\t var d = 271733878;\n\n\t for (i = 0; i < x.length; i += 16) {\n\t olda = a;\n\t oldb = b;\n\t oldc = c;\n\t oldd = d;\n\n\t a = md5ff(a, b, c, d, x[i], 7, -680876936);\n\t d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n\t c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n\t b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n\t a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n\t d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n\t c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n\t b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n\t a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n\t d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n\t c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n\t b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n\t a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n\t d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n\t c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n\t b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n\t a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n\t d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n\t c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n\t b = md5gg(b, c, d, a, x[i], 20, -373897302);\n\t a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n\t d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n\t c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n\t b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n\t a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n\t d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n\t c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n\t b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n\t a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n\t d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n\t c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n\t b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n\t a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n\t d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n\t c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n\t b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n\t a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n\t d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n\t c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n\t b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n\t a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n\t d = md5hh(d, a, b, c, x[i], 11, -358537222);\n\t c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n\t b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n\t a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n\t d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n\t c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n\t b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n\t a = md5ii(a, b, c, d, x[i], 6, -198630844);\n\t d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n\t c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n\t b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n\t a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n\t d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n\t c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n\t b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n\t a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n\t d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n\t c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n\t b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n\t a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n\t d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n\t c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n\t b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n\n\t a = safeAdd(a, olda);\n\t b = safeAdd(b, oldb);\n\t c = safeAdd(c, oldc);\n\t d = safeAdd(d, oldd);\n\t }\n\t return [a, b, c, d];\n\t}\n\n\t/*\n\t* Convert an array of little-endian words to a string\n\t*/\n\tfunction binl2rstr(input) {\n\t var i;\n\t var output = '';\n\t var length32 = input.length * 32;\n\t for (i = 0; i < length32; i += 8) {\n\t output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);\n\t }\n\t return output;\n\t}\n\n\t/*\n\t* Convert a raw string to an array of little-endian words\n\t* Characters >255 have their high-byte silently ignored.\n\t*/\n\tfunction rstr2binl(input) {\n\t var i;\n\t var output = [];\n\t output[(input.length >> 2) - 1] = undefined;\n\t for (i = 0; i < output.length; i += 1) {\n\t output[i] = 0;\n\t }\n\t var length8 = input.length * 8;\n\t for (i = 0; i < length8; i += 8) {\n\t output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);\n\t }\n\t return output;\n\t}\n\n\t/*\n\t* Calculate the MD5 of a raw string\n\t*/\n\tfunction rstrMD5(s) {\n\t return binl2rstr(binlMD5(rstr2binl(s), s.length * 8));\n\t}\n\n\t/*\n\t* Calculate the HMAC-MD5, of a key and some data (raw strings)\n\t*/\n\tfunction rstrHMACMD5(key, data) {\n\t var i;\n\t var bkey = rstr2binl(key);\n\t var ipad = [];\n\t var opad = [];\n\t var hash;\n\t ipad[15] = opad[15] = undefined;\n\t if (bkey.length > 16) {\n\t bkey = binlMD5(bkey, key.length * 8);\n\t }\n\t for (i = 0; i < 16; i += 1) {\n\t ipad[i] = bkey[i] ^ 0x36363636;\n\t opad[i] = bkey[i] ^ 0x5c5c5c5c;\n\t }\n\t hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);\n\t return binl2rstr(binlMD5(opad.concat(hash), 512 + 128));\n\t}\n\n\t/*\n\t* Convert a raw string to a hex string\n\t*/\n\tfunction rstr2hex(input) {\n\t var hexTab = '0123456789abcdef';\n\t var output = '';\n\t var x;\n\t var i;\n\t for (i = 0; i < input.length; i += 1) {\n\t x = input.charCodeAt(i);\n\t output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);\n\t }\n\t return output;\n\t}\n\n\t/*\n\t* Encode a string as utf-8\n\t*/\n\tfunction str2rstrUTF8(input) {\n\t return unescape(encodeURIComponent(input));\n\t}\n\n\t/*\n\t* Take string arguments and return either raw or hex encoded strings\n\t*/\n\tfunction rawMD5(s) {\n\t return rstrMD5(str2rstrUTF8(s));\n\t}\n\tfunction hexMD5(s) {\n\t return rstr2hex(rawMD5(s));\n\t}\n\tfunction rawHMACMD5(k, d) {\n\t return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n\t}\n\tfunction hexHMACMD5(k, d) {\n\t return rstr2hex(rawHMACMD5(k, d));\n\t}\n\n\tfunction md5(string, key, raw) {\n\t if (!key) {\n\t if (!raw) {\n\t return hexMD5(string);\n\t }\n\t return rawMD5(string);\n\t }\n\t if (!raw) {\n\t return hexHMACMD5(key, string);\n\t }\n\t return rawHMACMD5(key, string);\n\t}\n\n\tvar md5_1 = md5;\n\n\tfunction RavenConfigError(message) {\n\t this.name = 'RavenConfigError';\n\t this.message = message;\n\t}\n\tRavenConfigError.prototype = new Error();\n\tRavenConfigError.prototype.constructor = RavenConfigError;\n\n\tvar configError = RavenConfigError;\n\n\tvar wrapMethod = function(console, level, callback) {\n\t var originalConsoleLevel = console[level];\n\t var originalConsole = console;\n\n\t if (!(level in console)) {\n\t return;\n\t }\n\n\t var sentryLevel = level === 'warn' ? 'warning' : level;\n\n\t console[level] = function() {\n\t var args = [].slice.call(arguments);\n\n\t var msg = utils.safeJoin(args, ' ');\n\t var data = {level: sentryLevel, logger: 'console', extra: {arguments: args}};\n\n\t if (level === 'assert') {\n\t if (args[0] === false) {\n\t // Default browsers message\n\t msg =\n\t 'Assertion failed: ' + (utils.safeJoin(args.slice(1), ' ') || 'console.assert');\n\t data.extra.arguments = args.slice(1);\n\t callback && callback(msg, data);\n\t }\n\t } else {\n\t callback && callback(msg, data);\n\t }\n\n\t // this fails for some browsers. :(\n\t if (originalConsoleLevel) {\n\t // IE9 doesn't allow calling apply on console functions directly\n\t // See: https://stackoverflow.com/questions/5472938/does-ie9-support-console-log-and-is-it-a-real-function#answer-5473193\n\t Function.prototype.apply.call(originalConsoleLevel, originalConsole, args);\n\t }\n\t };\n\t};\n\n\tvar console$1 = {\n\t wrapMethod: wrapMethod\n\t};\n\n\t/*global XDomainRequest:false */\n\n\n\n\n\n\n\n\tvar isErrorEvent$1 = utils.isErrorEvent;\n\tvar isDOMError$1 = utils.isDOMError;\n\tvar isDOMException$1 = utils.isDOMException;\n\tvar isError$1 = utils.isError;\n\tvar isObject$1 = utils.isObject;\n\tvar isPlainObject$1 = utils.isPlainObject;\n\tvar isUndefined$1 = utils.isUndefined;\n\tvar isFunction$1 = utils.isFunction;\n\tvar isString$1 = utils.isString;\n\tvar isArray$1 = utils.isArray;\n\tvar isEmptyObject$1 = utils.isEmptyObject;\n\tvar each$1 = utils.each;\n\tvar objectMerge$1 = utils.objectMerge;\n\tvar truncate$1 = utils.truncate;\n\tvar objectFrozen$1 = utils.objectFrozen;\n\tvar hasKey$1 = utils.hasKey;\n\tvar joinRegExp$1 = utils.joinRegExp;\n\tvar urlencode$1 = utils.urlencode;\n\tvar uuid4$1 = utils.uuid4;\n\tvar htmlTreeAsString$1 = utils.htmlTreeAsString;\n\tvar isSameException$1 = utils.isSameException;\n\tvar isSameStacktrace$1 = utils.isSameStacktrace;\n\tvar parseUrl$1 = utils.parseUrl;\n\tvar fill$1 = utils.fill;\n\tvar supportsFetch$1 = utils.supportsFetch;\n\tvar supportsReferrerPolicy$1 = utils.supportsReferrerPolicy;\n\tvar serializeKeysForMessage$1 = utils.serializeKeysForMessage;\n\tvar serializeException$1 = utils.serializeException;\n\tvar sanitize$1 = utils.sanitize;\n\n\tvar wrapConsoleMethod = console$1.wrapMethod;\n\n\tvar dsnKeys = 'source protocol user pass host port path'.split(' '),\n\t dsnPattern = /^(?:(\\w+):)?\\/\\/(?:(\\w+)(:\\w+)?@)?([\\w\\.-]+)(?::(\\d+))?(\\/.*)/;\n\n\tfunction now() {\n\t return +new Date();\n\t}\n\n\t// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\tvar _window$2 =\n\t typeof window !== 'undefined'\n\t ? window\n\t : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\tvar _document = _window$2.document;\n\tvar _navigator = _window$2.navigator;\n\n\tfunction keepOriginalCallback(original, callback) {\n\t return isFunction$1(callback)\n\t ? function(data) {\n\t return callback(data, original);\n\t }\n\t : callback;\n\t}\n\n\t// First, check for JSON support\n\t// If there is no JSON, we no-op the core features of Raven\n\t// since JSON is required to encode the payload\n\tfunction Raven() {\n\t this._hasJSON = !!(typeof JSON === 'object' && JSON.stringify);\n\t // Raven can run in contexts where there's no document (react-native)\n\t this._hasDocument = !isUndefined$1(_document);\n\t this._hasNavigator = !isUndefined$1(_navigator);\n\t this._lastCapturedException = null;\n\t this._lastData = null;\n\t this._lastEventId = null;\n\t this._globalServer = null;\n\t this._globalKey = null;\n\t this._globalProject = null;\n\t this._globalContext = {};\n\t this._globalOptions = {\n\t // SENTRY_RELEASE can be injected by https://github.com/getsentry/sentry-webpack-plugin\n\t release: _window$2.SENTRY_RELEASE && _window$2.SENTRY_RELEASE.id,\n\t logger: 'javascript',\n\t ignoreErrors: [],\n\t ignoreUrls: [],\n\t whitelistUrls: [],\n\t includePaths: [],\n\t headers: null,\n\t collectWindowErrors: true,\n\t captureUnhandledRejections: true,\n\t maxMessageLength: 0,\n\t // By default, truncates URL values to 250 chars\n\t maxUrlLength: 250,\n\t stackTraceLimit: 50,\n\t autoBreadcrumbs: true,\n\t instrument: true,\n\t sampleRate: 1,\n\t sanitizeKeys: []\n\t };\n\t this._fetchDefaults = {\n\t method: 'POST',\n\t // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n\t // https://caniuse.com/#feat=referrer-policy\n\t // It doesn't. And it throw exception instead of ignoring this parameter...\n\t // REF: https://github.com/getsentry/raven-js/issues/1233\n\t referrerPolicy: supportsReferrerPolicy$1() ? 'origin' : ''\n\t };\n\t this._ignoreOnError = 0;\n\t this._isRavenInstalled = false;\n\t this._originalErrorStackTraceLimit = Error.stackTraceLimit;\n\t // capture references to window.console *and* all its methods first\n\t // before the console plugin has a chance to monkey patch\n\t this._originalConsole = _window$2.console || {};\n\t this._originalConsoleMethods = {};\n\t this._plugins = [];\n\t this._startTime = now();\n\t this._wrappedBuiltIns = [];\n\t this._breadcrumbs = [];\n\t this._lastCapturedEvent = null;\n\t this._keypressTimeout;\n\t this._location = _window$2.location;\n\t this._lastHref = this._location && this._location.href;\n\t this._resetBackoff();\n\n\t // eslint-disable-next-line guard-for-in\n\t for (var method in this._originalConsole) {\n\t this._originalConsoleMethods[method] = this._originalConsole[method];\n\t }\n\t}\n\n\t/*\n\t * The core Raven singleton\n\t *\n\t * @this {Raven}\n\t */\n\n\tRaven.prototype = {\n\t // Hardcode version string so that raven source can be loaded directly via\n\t // webpack (using a build step causes webpack #1617). Grunt verifies that\n\t // this value matches package.json during build.\n\t // See: https://github.com/getsentry/raven-js/issues/465\n\t VERSION: '3.27.0',\n\n\t debug: false,\n\n\t TraceKit: tracekit, // alias to TraceKit\n\n\t /*\n\t * Configure Raven with a DSN and extra options\n\t *\n\t * @param {string} dsn The public Sentry DSN\n\t * @param {object} options Set of global options [optional]\n\t * @return {Raven}\n\t */\n\t config: function(dsn, options) {\n\t var self = this;\n\n\t if (self._globalServer) {\n\t this._logDebug('error', 'Error: Raven has already been configured');\n\t return self;\n\t }\n\t if (!dsn) return self;\n\n\t var globalOptions = self._globalOptions;\n\n\t // merge in options\n\t if (options) {\n\t each$1(options, function(key, value) {\n\t // tags and extra are special and need to be put into context\n\t if (key === 'tags' || key === 'extra' || key === 'user') {\n\t self._globalContext[key] = value;\n\t } else {\n\t globalOptions[key] = value;\n\t }\n\t });\n\t }\n\n\t self.setDSN(dsn);\n\n\t // \"Script error.\" is hard coded into browsers for errors that it can't read.\n\t // this is the result of a script being pulled in from an external domain and CORS.\n\t globalOptions.ignoreErrors.push(/^Script error\\.?$/);\n\t globalOptions.ignoreErrors.push(/^Javascript error: Script error\\.? on line 0$/);\n\n\t // join regexp rules into one big rule\n\t globalOptions.ignoreErrors = joinRegExp$1(globalOptions.ignoreErrors);\n\t globalOptions.ignoreUrls = globalOptions.ignoreUrls.length\n\t ? joinRegExp$1(globalOptions.ignoreUrls)\n\t : false;\n\t globalOptions.whitelistUrls = globalOptions.whitelistUrls.length\n\t ? joinRegExp$1(globalOptions.whitelistUrls)\n\t : false;\n\t globalOptions.includePaths = joinRegExp$1(globalOptions.includePaths);\n\t globalOptions.maxBreadcrumbs = Math.max(\n\t 0,\n\t Math.min(globalOptions.maxBreadcrumbs || 100, 100)\n\t ); // default and hard limit is 100\n\n\t var autoBreadcrumbDefaults = {\n\t xhr: true,\n\t console: true,\n\t dom: true,\n\t location: true,\n\t sentry: true\n\t };\n\n\t var autoBreadcrumbs = globalOptions.autoBreadcrumbs;\n\t if ({}.toString.call(autoBreadcrumbs) === '[object Object]') {\n\t autoBreadcrumbs = objectMerge$1(autoBreadcrumbDefaults, autoBreadcrumbs);\n\t } else if (autoBreadcrumbs !== false) {\n\t autoBreadcrumbs = autoBreadcrumbDefaults;\n\t }\n\t globalOptions.autoBreadcrumbs = autoBreadcrumbs;\n\n\t var instrumentDefaults = {\n\t tryCatch: true\n\t };\n\n\t var instrument = globalOptions.instrument;\n\t if ({}.toString.call(instrument) === '[object Object]') {\n\t instrument = objectMerge$1(instrumentDefaults, instrument);\n\t } else if (instrument !== false) {\n\t instrument = instrumentDefaults;\n\t }\n\t globalOptions.instrument = instrument;\n\n\t tracekit.collectWindowErrors = !!globalOptions.collectWindowErrors;\n\n\t // return for chaining\n\t return self;\n\t },\n\n\t /*\n\t * Installs a global window.onerror error handler\n\t * to capture and report uncaught exceptions.\n\t * At this point, install() is required to be called due\n\t * to the way TraceKit is set up.\n\t *\n\t * @return {Raven}\n\t */\n\t install: function() {\n\t var self = this;\n\t if (self.isSetup() && !self._isRavenInstalled) {\n\t tracekit.report.subscribe(function() {\n\t self._handleOnErrorStackInfo.apply(self, arguments);\n\t });\n\n\t if (self._globalOptions.captureUnhandledRejections) {\n\t self._attachPromiseRejectionHandler();\n\t }\n\n\t self._patchFunctionToString();\n\n\t if (self._globalOptions.instrument && self._globalOptions.instrument.tryCatch) {\n\t self._instrumentTryCatch();\n\t }\n\n\t if (self._globalOptions.autoBreadcrumbs) self._instrumentBreadcrumbs();\n\n\t // Install all of the plugins\n\t self._drainPlugins();\n\n\t self._isRavenInstalled = true;\n\t }\n\n\t Error.stackTraceLimit = self._globalOptions.stackTraceLimit;\n\t return this;\n\t },\n\n\t /*\n\t * Set the DSN (can be called multiple time unlike config)\n\t *\n\t * @param {string} dsn The public Sentry DSN\n\t */\n\t setDSN: function(dsn) {\n\t var self = this,\n\t uri = self._parseDSN(dsn),\n\t lastSlash = uri.path.lastIndexOf('/'),\n\t path = uri.path.substr(1, lastSlash);\n\n\t self._dsn = dsn;\n\t self._globalKey = uri.user;\n\t self._globalSecret = uri.pass && uri.pass.substr(1);\n\t self._globalProject = uri.path.substr(lastSlash + 1);\n\n\t self._globalServer = self._getGlobalServer(uri);\n\n\t self._globalEndpoint =\n\t self._globalServer + '/' + path + 'api/' + self._globalProject + '/store/';\n\n\t // Reset backoff state since we may be pointing at a\n\t // new project/server\n\t this._resetBackoff();\n\t },\n\n\t /*\n\t * Wrap code within a context so Raven can capture errors\n\t * reliably across domains that is executed immediately.\n\t *\n\t * @param {object} options A specific set of options for this context [optional]\n\t * @param {function} func The callback to be immediately executed within the context\n\t * @param {array} args An array of arguments to be called with the callback [optional]\n\t */\n\t context: function(options, func, args) {\n\t if (isFunction$1(options)) {\n\t args = func || [];\n\t func = options;\n\t options = {};\n\t }\n\n\t return this.wrap(options, func).apply(this, args);\n\t },\n\n\t /*\n\t * Wrap code within a context and returns back a new function to be executed\n\t *\n\t * @param {object} options A specific set of options for this context [optional]\n\t * @param {function} func The function to be wrapped in a new context\n\t * @param {function} _before A function to call before the try/catch wrapper [optional, private]\n\t * @return {function} The newly wrapped functions with a context\n\t */\n\t wrap: function(options, func, _before) {\n\t var self = this;\n\t // 1 argument has been passed, and it's not a function\n\t // so just return it\n\t if (isUndefined$1(func) && !isFunction$1(options)) {\n\t return options;\n\t }\n\n\t // options is optional\n\t if (isFunction$1(options)) {\n\t func = options;\n\t options = undefined;\n\t }\n\n\t // At this point, we've passed along 2 arguments, and the second one\n\t // is not a function either, so we'll just return the second argument.\n\t if (!isFunction$1(func)) {\n\t return func;\n\t }\n\n\t // We don't wanna wrap it twice!\n\t try {\n\t if (func.__raven__) {\n\t return func;\n\t }\n\n\t // If this has already been wrapped in the past, return that\n\t if (func.__raven_wrapper__) {\n\t return func.__raven_wrapper__;\n\t }\n\t } catch (e) {\n\t // Just accessing custom props in some Selenium environments\n\t // can cause a \"Permission denied\" exception (see raven-js#495).\n\t // Bail on wrapping and return the function as-is (defers to window.onerror).\n\t return func;\n\t }\n\n\t function wrapped() {\n\t var args = [],\n\t i = arguments.length,\n\t deep = !options || (options && options.deep !== false);\n\n\t if (_before && isFunction$1(_before)) {\n\t _before.apply(this, arguments);\n\t }\n\n\t // Recursively wrap all of a function's arguments that are\n\t // functions themselves.\n\t while (i--) args[i] = deep ? self.wrap(options, arguments[i]) : arguments[i];\n\n\t try {\n\t // Attempt to invoke user-land function\n\t // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n\t // means Raven caught an error invoking your application code. This is\n\t // expected behavior and NOT indicative of a bug with Raven.js.\n\t return func.apply(this, args);\n\t } catch (e) {\n\t self._ignoreNextOnError();\n\t self.captureException(e, options);\n\t throw e;\n\t }\n\t }\n\n\t // copy over properties of the old function\n\t for (var property in func) {\n\t if (hasKey$1(func, property)) {\n\t wrapped[property] = func[property];\n\t }\n\t }\n\t wrapped.prototype = func.prototype;\n\n\t func.__raven_wrapper__ = wrapped;\n\t // Signal that this function has been wrapped/filled already\n\t // for both debugging and to prevent it to being wrapped/filled twice\n\t wrapped.__raven__ = true;\n\t wrapped.__orig__ = func;\n\n\t return wrapped;\n\t },\n\n\t /**\n\t * Uninstalls the global error handler.\n\t *\n\t * @return {Raven}\n\t */\n\t uninstall: function() {\n\t tracekit.report.uninstall();\n\n\t this._detachPromiseRejectionHandler();\n\t this._unpatchFunctionToString();\n\t this._restoreBuiltIns();\n\t this._restoreConsole();\n\n\t Error.stackTraceLimit = this._originalErrorStackTraceLimit;\n\t this._isRavenInstalled = false;\n\n\t return this;\n\t },\n\n\t /**\n\t * Callback used for `unhandledrejection` event\n\t *\n\t * @param {PromiseRejectionEvent} event An object containing\n\t * promise: the Promise that was rejected\n\t * reason: the value with which the Promise was rejected\n\t * @return void\n\t */\n\t _promiseRejectionHandler: function(event) {\n\t this._logDebug('debug', 'Raven caught unhandled promise rejection:', event);\n\t this.captureException(event.reason, {\n\t mechanism: {\n\t type: 'onunhandledrejection',\n\t handled: false\n\t }\n\t });\n\t },\n\n\t /**\n\t * Installs the global promise rejection handler.\n\t *\n\t * @return {raven}\n\t */\n\t _attachPromiseRejectionHandler: function() {\n\t this._promiseRejectionHandler = this._promiseRejectionHandler.bind(this);\n\t _window$2.addEventListener &&\n\t _window$2.addEventListener('unhandledrejection', this._promiseRejectionHandler);\n\t return this;\n\t },\n\n\t /**\n\t * Uninstalls the global promise rejection handler.\n\t *\n\t * @return {raven}\n\t */\n\t _detachPromiseRejectionHandler: function() {\n\t _window$2.removeEventListener &&\n\t _window$2.removeEventListener('unhandledrejection', this._promiseRejectionHandler);\n\t return this;\n\t },\n\n\t /**\n\t * Manually capture an exception and send it over to Sentry\n\t *\n\t * @param {error} ex An exception to be logged\n\t * @param {object} options A specific set of options for this error [optional]\n\t * @return {Raven}\n\t */\n\t captureException: function(ex, options) {\n\t options = objectMerge$1({trimHeadFrames: 0}, options ? options : {});\n\n\t if (isErrorEvent$1(ex) && ex.error) {\n\t // If it is an ErrorEvent with `error` property, extract it to get actual Error\n\t ex = ex.error;\n\t } else if (isDOMError$1(ex) || isDOMException$1(ex)) {\n\t // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n\t // then we just extract the name and message, as they don't provide anything else\n\t // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n\t // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n\t var name = ex.name || (isDOMError$1(ex) ? 'DOMError' : 'DOMException');\n\t var message = ex.message ? name + ': ' + ex.message : name;\n\n\t return this.captureMessage(\n\t message,\n\t objectMerge$1(options, {\n\t // neither DOMError or DOMException provide stack trace and we most likely wont get it this way as well\n\t // but it's barely any overhead so we may at least try\n\t stacktrace: true,\n\t trimHeadFrames: options.trimHeadFrames + 1\n\t })\n\t );\n\t } else if (isError$1(ex)) {\n\t // we have a real Error object\n\t ex = ex;\n\t } else if (isPlainObject$1(ex)) {\n\t // If it is plain Object, serialize it manually and extract options\n\t // This will allow us to group events based on top-level keys\n\t // which is much better than creating new group when any key/value change\n\t options = this._getCaptureExceptionOptionsFromPlainObject(options, ex);\n\t ex = new Error(options.message);\n\t } else {\n\t // If none of previous checks were valid, then it means that\n\t // it's not a DOMError/DOMException\n\t // it's not a plain Object\n\t // it's not a valid ErrorEvent (one with an error property)\n\t // it's not an Error\n\t // So bail out and capture it as a simple message:\n\t return this.captureMessage(\n\t ex,\n\t objectMerge$1(options, {\n\t stacktrace: true, // if we fall back to captureMessage, default to attempting a new trace\n\t trimHeadFrames: options.trimHeadFrames + 1\n\t })\n\t );\n\t }\n\n\t // Store the raw exception object for potential debugging and introspection\n\t this._lastCapturedException = ex;\n\n\t // TraceKit.report will re-raise any exception passed to it,\n\t // which means you have to wrap it in try/catch. Instead, we\n\t // can wrap it here and only re-raise if TraceKit.report\n\t // raises an exception different from the one we asked to\n\t // report on.\n\t try {\n\t var stack = tracekit.computeStackTrace(ex);\n\t this._handleStackInfo(stack, options);\n\t } catch (ex1) {\n\t if (ex !== ex1) {\n\t throw ex1;\n\t }\n\t }\n\n\t return this;\n\t },\n\n\t _getCaptureExceptionOptionsFromPlainObject: function(currentOptions, ex) {\n\t var exKeys = Object.keys(ex).sort();\n\t var options = objectMerge$1(currentOptions, {\n\t message:\n\t 'Non-Error exception captured with keys: ' + serializeKeysForMessage$1(exKeys),\n\t fingerprint: [md5_1(exKeys)],\n\t extra: currentOptions.extra || {}\n\t });\n\t options.extra.__serialized__ = serializeException$1(ex);\n\n\t return options;\n\t },\n\n\t /*\n\t * Manually send a message to Sentry\n\t *\n\t * @param {string} msg A plain message to be captured in Sentry\n\t * @param {object} options A specific set of options for this message [optional]\n\t * @return {Raven}\n\t */\n\t captureMessage: function(msg, options) {\n\t // config() automagically converts ignoreErrors from a list to a RegExp so we need to test for an\n\t // early call; we'll error on the side of logging anything called before configuration since it's\n\t // probably something you should see:\n\t if (\n\t !!this._globalOptions.ignoreErrors.test &&\n\t this._globalOptions.ignoreErrors.test(msg)\n\t ) {\n\t return;\n\t }\n\n\t options = options || {};\n\t msg = msg + ''; // Make sure it's actually a string\n\n\t var data = objectMerge$1(\n\t {\n\t message: msg\n\t },\n\t options\n\t );\n\n\t var ex;\n\t // Generate a \"synthetic\" stack trace from this point.\n\t // NOTE: If you are a Sentry user, and you are seeing this stack frame, it is NOT indicative\n\t // of a bug with Raven.js. Sentry generates synthetic traces either by configuration,\n\t // or if it catches a thrown object without a \"stack\" property.\n\t try {\n\t throw new Error(msg);\n\t } catch (ex1) {\n\t ex = ex1;\n\t }\n\n\t // null exception name so `Error` isn't prefixed to msg\n\t ex.name = null;\n\t var stack = tracekit.computeStackTrace(ex);\n\n\t // stack[0] is `throw new Error(msg)` call itself, we are interested in the frame that was just before that, stack[1]\n\t var initialCall = isArray$1(stack.stack) && stack.stack[1];\n\n\t // if stack[1] is `Raven.captureException`, it means that someone passed a string to it and we redirected that call\n\t // to be handled by `captureMessage`, thus `initialCall` is the 3rd one, not 2nd\n\t // initialCall => captureException(string) => captureMessage(string)\n\t if (initialCall && initialCall.func === 'Raven.captureException') {\n\t initialCall = stack.stack[2];\n\t }\n\n\t var fileurl = (initialCall && initialCall.url) || '';\n\n\t if (\n\t !!this._globalOptions.ignoreUrls.test &&\n\t this._globalOptions.ignoreUrls.test(fileurl)\n\t ) {\n\t return;\n\t }\n\n\t if (\n\t !!this._globalOptions.whitelistUrls.test &&\n\t !this._globalOptions.whitelistUrls.test(fileurl)\n\t ) {\n\t return;\n\t }\n\n\t // Always attempt to get stacktrace if message is empty.\n\t // It's the only way to provide any helpful information to the user.\n\t if (this._globalOptions.stacktrace || options.stacktrace || data.message === '') {\n\t // fingerprint on msg, not stack trace (legacy behavior, could be revisited)\n\t data.fingerprint = data.fingerprint == null ? msg : data.fingerprint;\n\n\t options = objectMerge$1(\n\t {\n\t trimHeadFrames: 0\n\t },\n\t options\n\t );\n\t // Since we know this is a synthetic trace, the top frame (this function call)\n\t // MUST be from Raven.js, so mark it for trimming\n\t // We add to the trim counter so that callers can choose to trim extra frames, such\n\t // as utility functions.\n\t options.trimHeadFrames += 1;\n\n\t var frames = this._prepareFrames(stack, options);\n\t data.stacktrace = {\n\t // Sentry expects frames oldest to newest\n\t frames: frames.reverse()\n\t };\n\t }\n\n\t // Make sure that fingerprint is always wrapped in an array\n\t if (data.fingerprint) {\n\t data.fingerprint = isArray$1(data.fingerprint)\n\t ? data.fingerprint\n\t : [data.fingerprint];\n\t }\n\n\t // Fire away!\n\t this._send(data);\n\n\t return this;\n\t },\n\n\t captureBreadcrumb: function(obj) {\n\t var crumb = objectMerge$1(\n\t {\n\t timestamp: now() / 1000\n\t },\n\t obj\n\t );\n\n\t if (isFunction$1(this._globalOptions.breadcrumbCallback)) {\n\t var result = this._globalOptions.breadcrumbCallback(crumb);\n\n\t if (isObject$1(result) && !isEmptyObject$1(result)) {\n\t crumb = result;\n\t } else if (result === false) {\n\t return this;\n\t }\n\t }\n\n\t this._breadcrumbs.push(crumb);\n\t if (this._breadcrumbs.length > this._globalOptions.maxBreadcrumbs) {\n\t this._breadcrumbs.shift();\n\t }\n\t return this;\n\t },\n\n\t addPlugin: function(plugin /*arg1, arg2, ... argN*/) {\n\t var pluginArgs = [].slice.call(arguments, 1);\n\n\t this._plugins.push([plugin, pluginArgs]);\n\t if (this._isRavenInstalled) {\n\t this._drainPlugins();\n\t }\n\n\t return this;\n\t },\n\n\t /*\n\t * Set/clear a user to be sent along with the payload.\n\t *\n\t * @param {object} user An object representing user data [optional]\n\t * @return {Raven}\n\t */\n\t setUserContext: function(user) {\n\t // Intentionally do not merge here since that's an unexpected behavior.\n\t this._globalContext.user = user;\n\n\t return this;\n\t },\n\n\t /*\n\t * Merge extra attributes to be sent along with the payload.\n\t *\n\t * @param {object} extra An object representing extra data [optional]\n\t * @return {Raven}\n\t */\n\t setExtraContext: function(extra) {\n\t this._mergeContext('extra', extra);\n\n\t return this;\n\t },\n\n\t /*\n\t * Merge tags to be sent along with the payload.\n\t *\n\t * @param {object} tags An object representing tags [optional]\n\t * @return {Raven}\n\t */\n\t setTagsContext: function(tags) {\n\t this._mergeContext('tags', tags);\n\n\t return this;\n\t },\n\n\t /*\n\t * Clear all of the context.\n\t *\n\t * @return {Raven}\n\t */\n\t clearContext: function() {\n\t this._globalContext = {};\n\n\t return this;\n\t },\n\n\t /*\n\t * Get a copy of the current context. This cannot be mutated.\n\t *\n\t * @return {object} copy of context\n\t */\n\t getContext: function() {\n\t // lol javascript\n\t return JSON.parse(stringify_1(this._globalContext));\n\t },\n\n\t /*\n\t * Set environment of application\n\t *\n\t * @param {string} environment Typically something like 'production'.\n\t * @return {Raven}\n\t */\n\t setEnvironment: function(environment) {\n\t this._globalOptions.environment = environment;\n\n\t return this;\n\t },\n\n\t /*\n\t * Set release version of application\n\t *\n\t * @param {string} release Typically something like a git SHA to identify version\n\t * @return {Raven}\n\t */\n\t setRelease: function(release) {\n\t this._globalOptions.release = release;\n\n\t return this;\n\t },\n\n\t /*\n\t * Set the dataCallback option\n\t *\n\t * @param {function} callback The callback to run which allows the\n\t * data blob to be mutated before sending\n\t * @return {Raven}\n\t */\n\t setDataCallback: function(callback) {\n\t var original = this._globalOptions.dataCallback;\n\t this._globalOptions.dataCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /*\n\t * Set the breadcrumbCallback option\n\t *\n\t * @param {function} callback The callback to run which allows filtering\n\t * or mutating breadcrumbs\n\t * @return {Raven}\n\t */\n\t setBreadcrumbCallback: function(callback) {\n\t var original = this._globalOptions.breadcrumbCallback;\n\t this._globalOptions.breadcrumbCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /*\n\t * Set the shouldSendCallback option\n\t *\n\t * @param {function} callback The callback to run which allows\n\t * introspecting the blob before sending\n\t * @return {Raven}\n\t */\n\t setShouldSendCallback: function(callback) {\n\t var original = this._globalOptions.shouldSendCallback;\n\t this._globalOptions.shouldSendCallback = keepOriginalCallback(original, callback);\n\t return this;\n\t },\n\n\t /**\n\t * Override the default HTTP transport mechanism that transmits data\n\t * to the Sentry server.\n\t *\n\t * @param {function} transport Function invoked instead of the default\n\t * `makeRequest` handler.\n\t *\n\t * @return {Raven}\n\t */\n\t setTransport: function(transport) {\n\t this._globalOptions.transport = transport;\n\n\t return this;\n\t },\n\n\t /*\n\t * Get the latest raw exception that was captured by Raven.\n\t *\n\t * @return {error}\n\t */\n\t lastException: function() {\n\t return this._lastCapturedException;\n\t },\n\n\t /*\n\t * Get the last event id\n\t *\n\t * @return {string}\n\t */\n\t lastEventId: function() {\n\t return this._lastEventId;\n\t },\n\n\t /*\n\t * Determine if Raven is setup and ready to go.\n\t *\n\t * @return {boolean}\n\t */\n\t isSetup: function() {\n\t if (!this._hasJSON) return false; // needs JSON support\n\t if (!this._globalServer) {\n\t if (!this.ravenNotConfiguredError) {\n\t this.ravenNotConfiguredError = true;\n\t this._logDebug('error', 'Error: Raven has not been configured.');\n\t }\n\t return false;\n\t }\n\t return true;\n\t },\n\n\t afterLoad: function() {\n\t // TODO: remove window dependence?\n\n\t // Attempt to initialize Raven on load\n\t var RavenConfig = _window$2.RavenConfig;\n\t if (RavenConfig) {\n\t this.config(RavenConfig.dsn, RavenConfig.config).install();\n\t }\n\t },\n\n\t showReportDialog: function(options) {\n\t if (\n\t !_document // doesn't work without a document (React native)\n\t )\n\t return;\n\n\t options = objectMerge$1(\n\t {\n\t eventId: this.lastEventId(),\n\t dsn: this._dsn,\n\t user: this._globalContext.user || {}\n\t },\n\t options\n\t );\n\n\t if (!options.eventId) {\n\t throw new configError('Missing eventId');\n\t }\n\n\t if (!options.dsn) {\n\t throw new configError('Missing DSN');\n\t }\n\n\t var encode = encodeURIComponent;\n\t var encodedOptions = [];\n\n\t for (var key in options) {\n\t if (key === 'user') {\n\t var user = options.user;\n\t if (user.name) encodedOptions.push('name=' + encode(user.name));\n\t if (user.email) encodedOptions.push('email=' + encode(user.email));\n\t } else {\n\t encodedOptions.push(encode(key) + '=' + encode(options[key]));\n\t }\n\t }\n\t var globalServer = this._getGlobalServer(this._parseDSN(options.dsn));\n\n\t var script = _document.createElement('script');\n\t script.async = true;\n\t script.src = globalServer + '/api/embed/error-page/?' + encodedOptions.join('&');\n\t (_document.head || _document.body).appendChild(script);\n\t },\n\n\t /**** Private functions ****/\n\t _ignoreNextOnError: function() {\n\t var self = this;\n\t this._ignoreOnError += 1;\n\t setTimeout(function() {\n\t // onerror should trigger before setTimeout\n\t self._ignoreOnError -= 1;\n\t });\n\t },\n\n\t _triggerEvent: function(eventType, options) {\n\t // NOTE: `event` is a native browser thing, so let's avoid conflicting wiht it\n\t var evt, key;\n\n\t if (!this._hasDocument) return;\n\n\t options = options || {};\n\n\t eventType = 'raven' + eventType.substr(0, 1).toUpperCase() + eventType.substr(1);\n\n\t if (_document.createEvent) {\n\t evt = _document.createEvent('HTMLEvents');\n\t evt.initEvent(eventType, true, true);\n\t } else {\n\t evt = _document.createEventObject();\n\t evt.eventType = eventType;\n\t }\n\n\t for (key in options)\n\t if (hasKey$1(options, key)) {\n\t evt[key] = options[key];\n\t }\n\n\t if (_document.createEvent) {\n\t // IE9 if standards\n\t _document.dispatchEvent(evt);\n\t } else {\n\t // IE8 regardless of Quirks or Standards\n\t // IE9 if quirks\n\t try {\n\t _document.fireEvent('on' + evt.eventType.toLowerCase(), evt);\n\t } catch (e) {\n\t // Do nothing\n\t }\n\t }\n\t },\n\n\t /**\n\t * Wraps addEventListener to capture UI breadcrumbs\n\t * @param evtName the event name (e.g. \"click\")\n\t * @returns {Function}\n\t * @private\n\t */\n\t _breadcrumbEventHandler: function(evtName) {\n\t var self = this;\n\t return function(evt) {\n\t // reset keypress timeout; e.g. triggering a 'click' after\n\t // a 'keypress' will reset the keypress debounce so that a new\n\t // set of keypresses can be recorded\n\t self._keypressTimeout = null;\n\n\t // It's possible this handler might trigger multiple times for the same\n\t // event (e.g. event propagation through node ancestors). Ignore if we've\n\t // already captured the event.\n\t if (self._lastCapturedEvent === evt) return;\n\n\t self._lastCapturedEvent = evt;\n\n\t // try/catch both:\n\t // - accessing evt.target (see getsentry/raven-js#838, #768)\n\t // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n\t // can throw an exception in some circumstances.\n\t var target;\n\t try {\n\t target = htmlTreeAsString$1(evt.target);\n\t } catch (e) {\n\t target = '';\n\t }\n\n\t self.captureBreadcrumb({\n\t category: 'ui.' + evtName, // e.g. ui.click, ui.input\n\t message: target\n\t });\n\t };\n\t },\n\n\t /**\n\t * Wraps addEventListener to capture keypress UI events\n\t * @returns {Function}\n\t * @private\n\t */\n\t _keypressEventHandler: function() {\n\t var self = this,\n\t debounceDuration = 1000; // milliseconds\n\n\t // TODO: if somehow user switches keypress target before\n\t // debounce timeout is triggered, we will only capture\n\t // a single breadcrumb from the FIRST target (acceptable?)\n\t return function(evt) {\n\t var target;\n\t try {\n\t target = evt.target;\n\t } catch (e) {\n\t // just accessing event properties can throw an exception in some rare circumstances\n\t // see: https://github.com/getsentry/raven-js/issues/838\n\t return;\n\t }\n\t var tagName = target && target.tagName;\n\n\t // only consider keypress events on actual input elements\n\t // this will disregard keypresses targeting body (e.g. tabbing\n\t // through elements, hotkeys, etc)\n\t if (\n\t !tagName ||\n\t (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !target.isContentEditable)\n\t )\n\t return;\n\n\t // record first keypress in a series, but ignore subsequent\n\t // keypresses until debounce clears\n\t var timeout = self._keypressTimeout;\n\t if (!timeout) {\n\t self._breadcrumbEventHandler('input')(evt);\n\t }\n\t clearTimeout(timeout);\n\t self._keypressTimeout = setTimeout(function() {\n\t self._keypressTimeout = null;\n\t }, debounceDuration);\n\t };\n\t },\n\n\t /**\n\t * Captures a breadcrumb of type \"navigation\", normalizing input URLs\n\t * @param to the originating URL\n\t * @param from the target URL\n\t * @private\n\t */\n\t _captureUrlChange: function(from, to) {\n\t var parsedLoc = parseUrl$1(this._location.href);\n\t var parsedTo = parseUrl$1(to);\n\t var parsedFrom = parseUrl$1(from);\n\n\t // because onpopstate only tells you the \"new\" (to) value of location.href, and\n\t // not the previous (from) value, we need to track the value of the current URL\n\t // state ourselves\n\t this._lastHref = to;\n\n\t // Use only the path component of the URL if the URL matches the current\n\t // document (almost all the time when using pushState)\n\t if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host)\n\t to = parsedTo.relative;\n\t if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host)\n\t from = parsedFrom.relative;\n\n\t this.captureBreadcrumb({\n\t category: 'navigation',\n\t data: {\n\t to: to,\n\t from: from\n\t }\n\t });\n\t },\n\n\t _patchFunctionToString: function() {\n\t var self = this;\n\t self._originalFunctionToString = Function.prototype.toString;\n\t // eslint-disable-next-line no-extend-native\n\t Function.prototype.toString = function() {\n\t if (typeof this === 'function' && this.__raven__) {\n\t return self._originalFunctionToString.apply(this.__orig__, arguments);\n\t }\n\t return self._originalFunctionToString.apply(this, arguments);\n\t };\n\t },\n\n\t _unpatchFunctionToString: function() {\n\t if (this._originalFunctionToString) {\n\t // eslint-disable-next-line no-extend-native\n\t Function.prototype.toString = this._originalFunctionToString;\n\t }\n\t },\n\n\t /**\n\t * Wrap timer functions and event targets to catch errors and provide\n\t * better metadata.\n\t */\n\t _instrumentTryCatch: function() {\n\t var self = this;\n\n\t var wrappedBuiltIns = self._wrappedBuiltIns;\n\n\t function wrapTimeFn(orig) {\n\t return function(fn, t) {\n\t // preserve arity\n\t // Make a copy of the arguments to prevent deoptimization\n\t // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t var args = new Array(arguments.length);\n\t for (var i = 0; i < args.length; ++i) {\n\t args[i] = arguments[i];\n\t }\n\t var originalCallback = args[0];\n\t if (isFunction$1(originalCallback)) {\n\t args[0] = self.wrap(\n\t {\n\t mechanism: {\n\t type: 'instrument',\n\t data: {function: orig.name || ''}\n\t }\n\t },\n\t originalCallback\n\t );\n\t }\n\n\t // IE < 9 doesn't support .call/.apply on setInterval/setTimeout, but it\n\t // also supports only two arguments and doesn't care what this is, so we\n\t // can just call the original function directly.\n\t if (orig.apply) {\n\t return orig.apply(this, args);\n\t } else {\n\t return orig(args[0], args[1]);\n\t }\n\t };\n\t }\n\n\t var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n\t function wrapEventTarget(global) {\n\t var proto = _window$2[global] && _window$2[global].prototype;\n\t if (proto && proto.hasOwnProperty && proto.hasOwnProperty('addEventListener')) {\n\t fill$1(\n\t proto,\n\t 'addEventListener',\n\t function(orig) {\n\t return function(evtName, fn, capture, secure) {\n\t // preserve arity\n\t try {\n\t if (fn && fn.handleEvent) {\n\t fn.handleEvent = self.wrap(\n\t {\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t target: global,\n\t function: 'handleEvent',\n\t handler: (fn && fn.name) || ''\n\t }\n\t }\n\t },\n\t fn.handleEvent\n\t );\n\t }\n\t } catch (err) {\n\t // can sometimes get 'Permission denied to access property \"handle Event'\n\t }\n\n\t // More breadcrumb DOM capture ... done here and not in `_instrumentBreadcrumbs`\n\t // so that we don't have more than one wrapper function\n\t var before, clickHandler, keypressHandler;\n\n\t if (\n\t autoBreadcrumbs &&\n\t autoBreadcrumbs.dom &&\n\t (global === 'EventTarget' || global === 'Node')\n\t ) {\n\t // NOTE: generating multiple handlers per addEventListener invocation, should\n\t // revisit and verify we can just use one (almost certainly)\n\t clickHandler = self._breadcrumbEventHandler('click');\n\t keypressHandler = self._keypressEventHandler();\n\t before = function(evt) {\n\t // need to intercept every DOM event in `before` argument, in case that\n\t // same wrapped method is re-used for different events (e.g. mousemove THEN click)\n\t // see #724\n\t if (!evt) return;\n\n\t var eventType;\n\t try {\n\t eventType = evt.type;\n\t } catch (e) {\n\t // just accessing event properties can throw an exception in some rare circumstances\n\t // see: https://github.com/getsentry/raven-js/issues/838\n\t return;\n\t }\n\t if (eventType === 'click') return clickHandler(evt);\n\t else if (eventType === 'keypress') return keypressHandler(evt);\n\t };\n\t }\n\t return orig.call(\n\t this,\n\t evtName,\n\t self.wrap(\n\t {\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t target: global,\n\t function: 'addEventListener',\n\t handler: (fn && fn.name) || ''\n\t }\n\t }\n\t },\n\t fn,\n\t before\n\t ),\n\t capture,\n\t secure\n\t );\n\t };\n\t },\n\t wrappedBuiltIns\n\t );\n\t fill$1(\n\t proto,\n\t 'removeEventListener',\n\t function(orig) {\n\t return function(evt, fn, capture, secure) {\n\t try {\n\t fn = fn && (fn.__raven_wrapper__ ? fn.__raven_wrapper__ : fn);\n\t } catch (e) {\n\t // ignore, accessing __raven_wrapper__ will throw in some Selenium environments\n\t }\n\t return orig.call(this, evt, fn, capture, secure);\n\t };\n\t },\n\t wrappedBuiltIns\n\t );\n\t }\n\t }\n\n\t fill$1(_window$2, 'setTimeout', wrapTimeFn, wrappedBuiltIns);\n\t fill$1(_window$2, 'setInterval', wrapTimeFn, wrappedBuiltIns);\n\t if (_window$2.requestAnimationFrame) {\n\t fill$1(\n\t _window$2,\n\t 'requestAnimationFrame',\n\t function(orig) {\n\t return function(cb) {\n\t return orig(\n\t self.wrap(\n\t {\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: 'requestAnimationFrame',\n\t handler: (orig && orig.name) || ''\n\t }\n\t }\n\t },\n\t cb\n\t )\n\t );\n\t };\n\t },\n\t wrappedBuiltIns\n\t );\n\t }\n\n\t // event targets borrowed from bugsnag-js:\n\t // https://github.com/bugsnag/bugsnag-js/blob/master/src/bugsnag.js#L666\n\t var eventTargets = [\n\t 'EventTarget',\n\t 'Window',\n\t 'Node',\n\t 'ApplicationCache',\n\t 'AudioTrackList',\n\t 'ChannelMergerNode',\n\t 'CryptoOperation',\n\t 'EventSource',\n\t 'FileReader',\n\t 'HTMLUnknownElement',\n\t 'IDBDatabase',\n\t 'IDBRequest',\n\t 'IDBTransaction',\n\t 'KeyOperation',\n\t 'MediaController',\n\t 'MessagePort',\n\t 'ModalWindow',\n\t 'Notification',\n\t 'SVGElementInstance',\n\t 'Screen',\n\t 'TextTrack',\n\t 'TextTrackCue',\n\t 'TextTrackList',\n\t 'WebSocket',\n\t 'WebSocketWorker',\n\t 'Worker',\n\t 'XMLHttpRequest',\n\t 'XMLHttpRequestEventTarget',\n\t 'XMLHttpRequestUpload'\n\t ];\n\t for (var i = 0; i < eventTargets.length; i++) {\n\t wrapEventTarget(eventTargets[i]);\n\t }\n\t },\n\n\t /**\n\t * Instrument browser built-ins w/ breadcrumb capturing\n\t * - XMLHttpRequests\n\t * - DOM interactions (click/typing)\n\t * - window.location changes\n\t * - console\n\t *\n\t * Can be disabled or individually configured via the `autoBreadcrumbs` config option\n\t */\n\t _instrumentBreadcrumbs: function() {\n\t var self = this;\n\t var autoBreadcrumbs = this._globalOptions.autoBreadcrumbs;\n\n\t var wrappedBuiltIns = self._wrappedBuiltIns;\n\n\t function wrapProp(prop, xhr) {\n\t if (prop in xhr && isFunction$1(xhr[prop])) {\n\t fill$1(xhr, prop, function(orig) {\n\t return self.wrap(\n\t {\n\t mechanism: {\n\t type: 'instrument',\n\t data: {function: prop, handler: (orig && orig.name) || ''}\n\t }\n\t },\n\t orig\n\t );\n\t }); // intentionally don't track filled methods on XHR instances\n\t }\n\t }\n\n\t if (autoBreadcrumbs.xhr && 'XMLHttpRequest' in _window$2) {\n\t var xhrproto = _window$2.XMLHttpRequest && _window$2.XMLHttpRequest.prototype;\n\t fill$1(\n\t xhrproto,\n\t 'open',\n\t function(origOpen) {\n\t return function(method, url) {\n\t // preserve arity\n\n\t // if Sentry key appears in URL, don't capture\n\t if (isString$1(url) && url.indexOf(self._globalKey) === -1) {\n\t this.__raven_xhr = {\n\t method: method,\n\t url: url,\n\t status_code: null\n\t };\n\t }\n\n\t return origOpen.apply(this, arguments);\n\t };\n\t },\n\t wrappedBuiltIns\n\t );\n\n\t fill$1(\n\t xhrproto,\n\t 'send',\n\t function(origSend) {\n\t return function() {\n\t // preserve arity\n\t var xhr = this;\n\n\t function onreadystatechangeHandler() {\n\t if (xhr.__raven_xhr && xhr.readyState === 4) {\n\t try {\n\t // touching statusCode in some platforms throws\n\t // an exception\n\t xhr.__raven_xhr.status_code = xhr.status;\n\t } catch (e) {\n\t /* do nothing */\n\t }\n\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'xhr',\n\t data: xhr.__raven_xhr\n\t });\n\t }\n\t }\n\n\t var props = ['onload', 'onerror', 'onprogress'];\n\t for (var j = 0; j < props.length; j++) {\n\t wrapProp(props[j], xhr);\n\t }\n\n\t if ('onreadystatechange' in xhr && isFunction$1(xhr.onreadystatechange)) {\n\t fill$1(\n\t xhr,\n\t 'onreadystatechange',\n\t function(orig) {\n\t return self.wrap(\n\t {\n\t mechanism: {\n\t type: 'instrument',\n\t data: {\n\t function: 'onreadystatechange',\n\t handler: (orig && orig.name) || ''\n\t }\n\t }\n\t },\n\t orig,\n\t onreadystatechangeHandler\n\t );\n\t } /* intentionally don't track this instrumentation */\n\t );\n\t } else {\n\t // if onreadystatechange wasn't actually set by the page on this xhr, we\n\t // are free to set our own and capture the breadcrumb\n\t xhr.onreadystatechange = onreadystatechangeHandler;\n\t }\n\n\t return origSend.apply(this, arguments);\n\t };\n\t },\n\t wrappedBuiltIns\n\t );\n\t }\n\n\t if (autoBreadcrumbs.xhr && supportsFetch$1()) {\n\t fill$1(\n\t _window$2,\n\t 'fetch',\n\t function(origFetch) {\n\t return function() {\n\t // preserve arity\n\t // Make a copy of the arguments to prevent deoptimization\n\t // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t var args = new Array(arguments.length);\n\t for (var i = 0; i < args.length; ++i) {\n\t args[i] = arguments[i];\n\t }\n\n\t var fetchInput = args[0];\n\t var method = 'GET';\n\t var url;\n\n\t if (typeof fetchInput === 'string') {\n\t url = fetchInput;\n\t } else if ('Request' in _window$2 && fetchInput instanceof _window$2.Request) {\n\t url = fetchInput.url;\n\t if (fetchInput.method) {\n\t method = fetchInput.method;\n\t }\n\t } else {\n\t url = '' + fetchInput;\n\t }\n\n\t // if Sentry key appears in URL, don't capture, as it's our own request\n\t if (url.indexOf(self._globalKey) !== -1) {\n\t return origFetch.apply(this, args);\n\t }\n\n\t if (args[1] && args[1].method) {\n\t method = args[1].method;\n\t }\n\n\t var fetchData = {\n\t method: method,\n\t url: url,\n\t status_code: null\n\t };\n\n\t return origFetch\n\t .apply(this, args)\n\t .then(function(response) {\n\t fetchData.status_code = response.status;\n\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'fetch',\n\t data: fetchData\n\t });\n\n\t return response;\n\t })\n\t ['catch'](function(err) {\n\t // if there is an error performing the request\n\t self.captureBreadcrumb({\n\t type: 'http',\n\t category: 'fetch',\n\t data: fetchData,\n\t level: 'error'\n\t });\n\n\t throw err;\n\t });\n\t };\n\t },\n\t wrappedBuiltIns\n\t );\n\t }\n\n\t // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n\t // to the document. Do this before we instrument addEventListener.\n\t if (autoBreadcrumbs.dom && this._hasDocument) {\n\t if (_document.addEventListener) {\n\t _document.addEventListener('click', self._breadcrumbEventHandler('click'), false);\n\t _document.addEventListener('keypress', self._keypressEventHandler(), false);\n\t } else if (_document.attachEvent) {\n\t // IE8 Compatibility\n\t _document.attachEvent('onclick', self._breadcrumbEventHandler('click'));\n\t _document.attachEvent('onkeypress', self._keypressEventHandler());\n\t }\n\t }\n\n\t // record navigation (URL) changes\n\t // NOTE: in Chrome App environment, touching history.pushState, *even inside\n\t // a try/catch block*, will cause Chrome to output an error to console.error\n\t // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n\t var chrome = _window$2.chrome;\n\t var isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n\t var hasPushAndReplaceState =\n\t !isChromePackagedApp &&\n\t _window$2.history &&\n\t _window$2.history.pushState &&\n\t _window$2.history.replaceState;\n\t if (autoBreadcrumbs.location && hasPushAndReplaceState) {\n\t // TODO: remove onpopstate handler on uninstall()\n\t var oldOnPopState = _window$2.onpopstate;\n\t _window$2.onpopstate = function() {\n\t var currentHref = self._location.href;\n\t self._captureUrlChange(self._lastHref, currentHref);\n\n\t if (oldOnPopState) {\n\t return oldOnPopState.apply(this, arguments);\n\t }\n\t };\n\n\t var historyReplacementFunction = function(origHistFunction) {\n\t // note history.pushState.length is 0; intentionally not declaring\n\t // params to preserve 0 arity\n\t return function(/* state, title, url */) {\n\t var url = arguments.length > 2 ? arguments[2] : undefined;\n\n\t // url argument is optional\n\t if (url) {\n\t // coerce to string (this is what pushState does)\n\t self._captureUrlChange(self._lastHref, url + '');\n\t }\n\n\t return origHistFunction.apply(this, arguments);\n\t };\n\t };\n\n\t fill$1(_window$2.history, 'pushState', historyReplacementFunction, wrappedBuiltIns);\n\t fill$1(_window$2.history, 'replaceState', historyReplacementFunction, wrappedBuiltIns);\n\t }\n\n\t if (autoBreadcrumbs.console && 'console' in _window$2 && console.log) {\n\t // console\n\t var consoleMethodCallback = function(msg, data) {\n\t self.captureBreadcrumb({\n\t message: msg,\n\t level: data.level,\n\t category: 'console'\n\t });\n\t };\n\n\t each$1(['debug', 'info', 'warn', 'error', 'log'], function(_, level) {\n\t wrapConsoleMethod(console, level, consoleMethodCallback);\n\t });\n\t }\n\t },\n\n\t _restoreBuiltIns: function() {\n\t // restore any wrapped builtins\n\t var builtin;\n\t while (this._wrappedBuiltIns.length) {\n\t builtin = this._wrappedBuiltIns.shift();\n\n\t var obj = builtin[0],\n\t name = builtin[1],\n\t orig = builtin[2];\n\n\t obj[name] = orig;\n\t }\n\t },\n\n\t _restoreConsole: function() {\n\t // eslint-disable-next-line guard-for-in\n\t for (var method in this._originalConsoleMethods) {\n\t this._originalConsole[method] = this._originalConsoleMethods[method];\n\t }\n\t },\n\n\t _drainPlugins: function() {\n\t var self = this;\n\n\t // FIX ME TODO\n\t each$1(this._plugins, function(_, plugin) {\n\t var installer = plugin[0];\n\t var args = plugin[1];\n\t installer.apply(self, [self].concat(args));\n\t });\n\t },\n\n\t _parseDSN: function(str) {\n\t var m = dsnPattern.exec(str),\n\t dsn = {},\n\t i = 7;\n\n\t try {\n\t while (i--) dsn[dsnKeys[i]] = m[i] || '';\n\t } catch (e) {\n\t throw new configError('Invalid DSN: ' + str);\n\t }\n\n\t if (dsn.pass && !this._globalOptions.allowSecretKey) {\n\t throw new configError(\n\t 'Do not specify your secret key in the DSN. See: http://bit.ly/raven-secret-key'\n\t );\n\t }\n\n\t return dsn;\n\t },\n\n\t _getGlobalServer: function(uri) {\n\t // assemble the endpoint from the uri pieces\n\t var globalServer = '//' + uri.host + (uri.port ? ':' + uri.port : '');\n\n\t if (uri.protocol) {\n\t globalServer = uri.protocol + ':' + globalServer;\n\t }\n\t return globalServer;\n\t },\n\n\t _handleOnErrorStackInfo: function(stackInfo, options) {\n\t options = options || {};\n\t options.mechanism = options.mechanism || {\n\t type: 'onerror',\n\t handled: false\n\t };\n\n\t // if we are intentionally ignoring errors via onerror, bail out\n\t if (!this._ignoreOnError) {\n\t this._handleStackInfo(stackInfo, options);\n\t }\n\t },\n\n\t _handleStackInfo: function(stackInfo, options) {\n\t var frames = this._prepareFrames(stackInfo, options);\n\n\t this._triggerEvent('handle', {\n\t stackInfo: stackInfo,\n\t options: options\n\t });\n\n\t this._processException(\n\t stackInfo.name,\n\t stackInfo.message,\n\t stackInfo.url,\n\t stackInfo.lineno,\n\t frames,\n\t options\n\t );\n\t },\n\n\t _prepareFrames: function(stackInfo, options) {\n\t var self = this;\n\t var frames = [];\n\t if (stackInfo.stack && stackInfo.stack.length) {\n\t each$1(stackInfo.stack, function(i, stack) {\n\t var frame = self._normalizeFrame(stack, stackInfo.url);\n\t if (frame) {\n\t frames.push(frame);\n\t }\n\t });\n\n\t // e.g. frames captured via captureMessage throw\n\t if (options && options.trimHeadFrames) {\n\t for (var j = 0; j < options.trimHeadFrames && j < frames.length; j++) {\n\t frames[j].in_app = false;\n\t }\n\t }\n\t }\n\t frames = frames.slice(0, this._globalOptions.stackTraceLimit);\n\t return frames;\n\t },\n\n\t _normalizeFrame: function(frame, stackInfoUrl) {\n\t // normalize the frames data\n\t var normalized = {\n\t filename: frame.url,\n\t lineno: frame.line,\n\t colno: frame.column,\n\t function: frame.func || '?'\n\t };\n\n\t // Case when we don't have any information about the error\n\t // E.g. throwing a string or raw object, instead of an `Error` in Firefox\n\t // Generating synthetic error doesn't add any value here\n\t //\n\t // We should probably somehow let a user know that they should fix their code\n\t if (!frame.url) {\n\t normalized.filename = stackInfoUrl; // fallback to whole stacks url from onerror handler\n\t }\n\n\t normalized.in_app = !// determine if an exception came from outside of our app\n\t // first we check the global includePaths list.\n\t (\n\t (!!this._globalOptions.includePaths.test &&\n\t !this._globalOptions.includePaths.test(normalized.filename)) ||\n\t // Now we check for fun, if the function name is Raven or TraceKit\n\t /(Raven|TraceKit)\\./.test(normalized['function']) ||\n\t // finally, we do a last ditch effort and check for raven.min.js\n\t /raven\\.(min\\.)?js$/.test(normalized.filename)\n\t );\n\n\t return normalized;\n\t },\n\n\t _processException: function(type, message, fileurl, lineno, frames, options) {\n\t var prefixedMessage = (type ? type + ': ' : '') + (message || '');\n\t if (\n\t !!this._globalOptions.ignoreErrors.test &&\n\t (this._globalOptions.ignoreErrors.test(message) ||\n\t this._globalOptions.ignoreErrors.test(prefixedMessage))\n\t ) {\n\t return;\n\t }\n\n\t var stacktrace;\n\n\t if (frames && frames.length) {\n\t fileurl = frames[0].filename || fileurl;\n\t // Sentry expects frames oldest to newest\n\t // and JS sends them as newest to oldest\n\t frames.reverse();\n\t stacktrace = {frames: frames};\n\t } else if (fileurl) {\n\t stacktrace = {\n\t frames: [\n\t {\n\t filename: fileurl,\n\t lineno: lineno,\n\t in_app: true\n\t }\n\t ]\n\t };\n\t }\n\n\t if (\n\t !!this._globalOptions.ignoreUrls.test &&\n\t this._globalOptions.ignoreUrls.test(fileurl)\n\t ) {\n\t return;\n\t }\n\n\t if (\n\t !!this._globalOptions.whitelistUrls.test &&\n\t !this._globalOptions.whitelistUrls.test(fileurl)\n\t ) {\n\t return;\n\t }\n\n\t var data = objectMerge$1(\n\t {\n\t // sentry.interfaces.Exception\n\t exception: {\n\t values: [\n\t {\n\t type: type,\n\t value: message,\n\t stacktrace: stacktrace\n\t }\n\t ]\n\t },\n\t transaction: fileurl\n\t },\n\t options\n\t );\n\n\t var ex = data.exception.values[0];\n\t if (ex.type == null && ex.value === '') {\n\t ex.value = 'Unrecoverable error caught';\n\t }\n\n\t // Move mechanism from options to exception interface\n\t // We do this, as requiring user to pass `{exception:{mechanism:{ ... }}}` would be\n\t // too much\n\t if (!data.exception.mechanism && data.mechanism) {\n\t data.exception.mechanism = data.mechanism;\n\t delete data.mechanism;\n\t }\n\n\t data.exception.mechanism = objectMerge$1(\n\t {\n\t type: 'generic',\n\t handled: true\n\t },\n\t data.exception.mechanism || {}\n\t );\n\n\t // Fire away!\n\t this._send(data);\n\t },\n\n\t _trimPacket: function(data) {\n\t // For now, we only want to truncate the two different messages\n\t // but this could/should be expanded to just trim everything\n\t var max = this._globalOptions.maxMessageLength;\n\t if (data.message) {\n\t data.message = truncate$1(data.message, max);\n\t }\n\t if (data.exception) {\n\t var exception = data.exception.values[0];\n\t exception.value = truncate$1(exception.value, max);\n\t }\n\n\t var request = data.request;\n\t if (request) {\n\t if (request.url) {\n\t request.url = truncate$1(request.url, this._globalOptions.maxUrlLength);\n\t }\n\t if (request.Referer) {\n\t request.Referer = truncate$1(request.Referer, this._globalOptions.maxUrlLength);\n\t }\n\t }\n\n\t if (data.breadcrumbs && data.breadcrumbs.values)\n\t this._trimBreadcrumbs(data.breadcrumbs);\n\n\t return data;\n\t },\n\n\t /**\n\t * Truncate breadcrumb values (right now just URLs)\n\t */\n\t _trimBreadcrumbs: function(breadcrumbs) {\n\t // known breadcrumb properties with urls\n\t // TODO: also consider arbitrary prop values that start with (https?)?://\n\t var urlProps = ['to', 'from', 'url'],\n\t urlProp,\n\t crumb,\n\t data;\n\n\t for (var i = 0; i < breadcrumbs.values.length; ++i) {\n\t crumb = breadcrumbs.values[i];\n\t if (\n\t !crumb.hasOwnProperty('data') ||\n\t !isObject$1(crumb.data) ||\n\t objectFrozen$1(crumb.data)\n\t )\n\t continue;\n\n\t data = objectMerge$1({}, crumb.data);\n\t for (var j = 0; j < urlProps.length; ++j) {\n\t urlProp = urlProps[j];\n\t if (data.hasOwnProperty(urlProp) && data[urlProp]) {\n\t data[urlProp] = truncate$1(data[urlProp], this._globalOptions.maxUrlLength);\n\t }\n\t }\n\t breadcrumbs.values[i].data = data;\n\t }\n\t },\n\n\t _getHttpData: function() {\n\t if (!this._hasNavigator && !this._hasDocument) return;\n\t var httpData = {};\n\n\t if (this._hasNavigator && _navigator.userAgent) {\n\t httpData.headers = {\n\t 'User-Agent': _navigator.userAgent\n\t };\n\t }\n\n\t // Check in `window` instead of `document`, as we may be in ServiceWorker environment\n\t if (_window$2.location && _window$2.location.href) {\n\t httpData.url = _window$2.location.href;\n\t }\n\n\t if (this._hasDocument && _document.referrer) {\n\t if (!httpData.headers) httpData.headers = {};\n\t httpData.headers.Referer = _document.referrer;\n\t }\n\n\t return httpData;\n\t },\n\n\t _resetBackoff: function() {\n\t this._backoffDuration = 0;\n\t this._backoffStart = null;\n\t },\n\n\t _shouldBackoff: function() {\n\t return this._backoffDuration && now() - this._backoffStart < this._backoffDuration;\n\t },\n\n\t /**\n\t * Returns true if the in-process data payload matches the signature\n\t * of the previously-sent data\n\t *\n\t * NOTE: This has to be done at this level because TraceKit can generate\n\t * data from window.onerror WITHOUT an exception object (IE8, IE9,\n\t * other old browsers). This can take the form of an \"exception\"\n\t * data object with a single frame (derived from the onerror args).\n\t */\n\t _isRepeatData: function(current) {\n\t var last = this._lastData;\n\n\t if (\n\t !last ||\n\t current.message !== last.message || // defined for captureMessage\n\t current.transaction !== last.transaction // defined for captureException/onerror\n\t )\n\t return false;\n\n\t // Stacktrace interface (i.e. from captureMessage)\n\t if (current.stacktrace || last.stacktrace) {\n\t return isSameStacktrace$1(current.stacktrace, last.stacktrace);\n\t } else if (current.exception || last.exception) {\n\t // Exception interface (i.e. from captureException/onerror)\n\t return isSameException$1(current.exception, last.exception);\n\t }\n\n\t return true;\n\t },\n\n\t _setBackoffState: function(request) {\n\t // If we are already in a backoff state, don't change anything\n\t if (this._shouldBackoff()) {\n\t return;\n\t }\n\n\t var status = request.status;\n\n\t // 400 - project_id doesn't exist or some other fatal\n\t // 401 - invalid/revoked dsn\n\t // 429 - too many requests\n\t if (!(status === 400 || status === 401 || status === 429)) return;\n\n\t var retry;\n\t try {\n\t // If Retry-After is not in Access-Control-Expose-Headers, most\n\t // browsers will throw an exception trying to access it\n\t if (supportsFetch$1()) {\n\t retry = request.headers.get('Retry-After');\n\t } else {\n\t retry = request.getResponseHeader('Retry-After');\n\t }\n\n\t // Retry-After is returned in seconds\n\t retry = parseInt(retry, 10) * 1000;\n\t } catch (e) {\n\t /* eslint no-empty:0 */\n\t }\n\n\t this._backoffDuration = retry\n\t ? // If Sentry server returned a Retry-After value, use it\n\t retry\n\t : // Otherwise, double the last backoff duration (starts at 1 sec)\n\t this._backoffDuration * 2 || 1000;\n\n\t this._backoffStart = now();\n\t },\n\n\t _send: function(data) {\n\t var globalOptions = this._globalOptions;\n\n\t var baseData = {\n\t project: this._globalProject,\n\t logger: globalOptions.logger,\n\t platform: 'javascript'\n\t },\n\t httpData = this._getHttpData();\n\n\t if (httpData) {\n\t baseData.request = httpData;\n\t }\n\n\t // HACK: delete `trimHeadFrames` to prevent from appearing in outbound payload\n\t if (data.trimHeadFrames) delete data.trimHeadFrames;\n\n\t data = objectMerge$1(baseData, data);\n\n\t // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge\n\t data.tags = objectMerge$1(objectMerge$1({}, this._globalContext.tags), data.tags);\n\t data.extra = objectMerge$1(objectMerge$1({}, this._globalContext.extra), data.extra);\n\n\t // Send along our own collected metadata with extra\n\t data.extra['session:duration'] = now() - this._startTime;\n\n\t if (this._breadcrumbs && this._breadcrumbs.length > 0) {\n\t // intentionally make shallow copy so that additions\n\t // to breadcrumbs aren't accidentally sent in this request\n\t data.breadcrumbs = {\n\t values: [].slice.call(this._breadcrumbs, 0)\n\t };\n\t }\n\n\t if (this._globalContext.user) {\n\t // sentry.interfaces.User\n\t data.user = this._globalContext.user;\n\t }\n\n\t // Include the environment if it's defined in globalOptions\n\t if (globalOptions.environment) data.environment = globalOptions.environment;\n\n\t // Include the release if it's defined in globalOptions\n\t if (globalOptions.release) data.release = globalOptions.release;\n\n\t // Include server_name if it's defined in globalOptions\n\t if (globalOptions.serverName) data.server_name = globalOptions.serverName;\n\n\t data = this._sanitizeData(data);\n\n\t // Cleanup empty properties before sending them to the server\n\t Object.keys(data).forEach(function(key) {\n\t if (data[key] == null || data[key] === '' || isEmptyObject$1(data[key])) {\n\t delete data[key];\n\t }\n\t });\n\n\t if (isFunction$1(globalOptions.dataCallback)) {\n\t data = globalOptions.dataCallback(data) || data;\n\t }\n\n\t // Why??????????\n\t if (!data || isEmptyObject$1(data)) {\n\t return;\n\t }\n\n\t // Check if the request should be filtered or not\n\t if (\n\t isFunction$1(globalOptions.shouldSendCallback) &&\n\t !globalOptions.shouldSendCallback(data)\n\t ) {\n\t return;\n\t }\n\n\t // Backoff state: Sentry server previously responded w/ an error (e.g. 429 - too many requests),\n\t // so drop requests until \"cool-off\" period has elapsed.\n\t if (this._shouldBackoff()) {\n\t this._logDebug('warn', 'Raven dropped error due to backoff: ', data);\n\t return;\n\t }\n\n\t if (typeof globalOptions.sampleRate === 'number') {\n\t if (Math.random() < globalOptions.sampleRate) {\n\t this._sendProcessedPayload(data);\n\t }\n\t } else {\n\t this._sendProcessedPayload(data);\n\t }\n\t },\n\n\t _sanitizeData: function(data) {\n\t return sanitize$1(data, this._globalOptions.sanitizeKeys);\n\t },\n\n\t _getUuid: function() {\n\t return uuid4$1();\n\t },\n\n\t _sendProcessedPayload: function(data, callback) {\n\t var self = this;\n\t var globalOptions = this._globalOptions;\n\n\t if (!this.isSetup()) return;\n\n\t // Try and clean up the packet before sending by truncating long values\n\t data = this._trimPacket(data);\n\n\t // ideally duplicate error testing should occur *before* dataCallback/shouldSendCallback,\n\t // but this would require copying an un-truncated copy of the data packet, which can be\n\t // arbitrarily deep (extra_data) -- could be worthwhile? will revisit\n\t if (!this._globalOptions.allowDuplicates && this._isRepeatData(data)) {\n\t this._logDebug('warn', 'Raven dropped repeat event: ', data);\n\t return;\n\t }\n\n\t // Send along an event_id if not explicitly passed.\n\t // This event_id can be used to reference the error within Sentry itself.\n\t // Set lastEventId after we know the error should actually be sent\n\t this._lastEventId = data.event_id || (data.event_id = this._getUuid());\n\n\t // Store outbound payload after trim\n\t this._lastData = data;\n\n\t this._logDebug('debug', 'Raven about to send:', data);\n\n\t var auth = {\n\t sentry_version: '7',\n\t sentry_client: 'raven-js/' + this.VERSION,\n\t sentry_key: this._globalKey\n\t };\n\n\t if (this._globalSecret) {\n\t auth.sentry_secret = this._globalSecret;\n\t }\n\n\t var exception = data.exception && data.exception.values[0];\n\n\t // only capture 'sentry' breadcrumb is autoBreadcrumbs is truthy\n\t if (\n\t this._globalOptions.autoBreadcrumbs &&\n\t this._globalOptions.autoBreadcrumbs.sentry\n\t ) {\n\t this.captureBreadcrumb({\n\t category: 'sentry',\n\t message: exception\n\t ? (exception.type ? exception.type + ': ' : '') + exception.value\n\t : data.message,\n\t event_id: data.event_id,\n\t level: data.level || 'error' // presume error unless specified\n\t });\n\t }\n\n\t var url = this._globalEndpoint;\n\t (globalOptions.transport || this._makeRequest).call(this, {\n\t url: url,\n\t auth: auth,\n\t data: data,\n\t options: globalOptions,\n\t onSuccess: function success() {\n\t self._resetBackoff();\n\n\t self._triggerEvent('success', {\n\t data: data,\n\t src: url\n\t });\n\t callback && callback();\n\t },\n\t onError: function failure(error) {\n\t self._logDebug('error', 'Raven transport failed to send: ', error);\n\n\t if (error.request) {\n\t self._setBackoffState(error.request);\n\t }\n\n\t self._triggerEvent('failure', {\n\t data: data,\n\t src: url\n\t });\n\t error = error || new Error('Raven send failed (no additional details provided)');\n\t callback && callback(error);\n\t }\n\t });\n\t },\n\n\t _makeRequest: function(opts) {\n\t // Auth is intentionally sent as part of query string (NOT as custom HTTP header) to avoid preflight CORS requests\n\t var url = opts.url + '?' + urlencode$1(opts.auth);\n\n\t var evaluatedHeaders = null;\n\t var evaluatedFetchParameters = {};\n\n\t if (opts.options.headers) {\n\t evaluatedHeaders = this._evaluateHash(opts.options.headers);\n\t }\n\n\t if (opts.options.fetchParameters) {\n\t evaluatedFetchParameters = this._evaluateHash(opts.options.fetchParameters);\n\t }\n\n\t if (supportsFetch$1()) {\n\t evaluatedFetchParameters.body = stringify_1(opts.data);\n\n\t var defaultFetchOptions = objectMerge$1({}, this._fetchDefaults);\n\t var fetchOptions = objectMerge$1(defaultFetchOptions, evaluatedFetchParameters);\n\n\t if (evaluatedHeaders) {\n\t fetchOptions.headers = evaluatedHeaders;\n\t }\n\n\t return _window$2\n\t .fetch(url, fetchOptions)\n\t .then(function(response) {\n\t if (response.ok) {\n\t opts.onSuccess && opts.onSuccess();\n\t } else {\n\t var error = new Error('Sentry error code: ' + response.status);\n\t // It's called request only to keep compatibility with XHR interface\n\t // and not add more redundant checks in setBackoffState method\n\t error.request = response;\n\t opts.onError && opts.onError(error);\n\t }\n\t })\n\t ['catch'](function() {\n\t opts.onError &&\n\t opts.onError(new Error('Sentry error code: network unavailable'));\n\t });\n\t }\n\n\t var request = _window$2.XMLHttpRequest && new _window$2.XMLHttpRequest();\n\t if (!request) return;\n\n\t // if browser doesn't support CORS (e.g. IE7), we are out of luck\n\t var hasCORS = 'withCredentials' in request || typeof XDomainRequest !== 'undefined';\n\n\t if (!hasCORS) return;\n\n\t if ('withCredentials' in request) {\n\t request.onreadystatechange = function() {\n\t if (request.readyState !== 4) {\n\t return;\n\t } else if (request.status === 200) {\n\t opts.onSuccess && opts.onSuccess();\n\t } else if (opts.onError) {\n\t var err = new Error('Sentry error code: ' + request.status);\n\t err.request = request;\n\t opts.onError(err);\n\t }\n\t };\n\t } else {\n\t request = new XDomainRequest();\n\t // xdomainrequest cannot go http -> https (or vice versa),\n\t // so always use protocol relative\n\t url = url.replace(/^https?:/, '');\n\n\t // onreadystatechange not supported by XDomainRequest\n\t if (opts.onSuccess) {\n\t request.onload = opts.onSuccess;\n\t }\n\t if (opts.onError) {\n\t request.onerror = function() {\n\t var err = new Error('Sentry error code: XDomainRequest');\n\t err.request = request;\n\t opts.onError(err);\n\t };\n\t }\n\t }\n\n\t request.open('POST', url);\n\n\t if (evaluatedHeaders) {\n\t each$1(evaluatedHeaders, function(key, value) {\n\t request.setRequestHeader(key, value);\n\t });\n\t }\n\n\t request.send(stringify_1(opts.data));\n\t },\n\n\t _evaluateHash: function(hash) {\n\t var evaluated = {};\n\n\t for (var key in hash) {\n\t if (hash.hasOwnProperty(key)) {\n\t var value = hash[key];\n\t evaluated[key] = typeof value === 'function' ? value() : value;\n\t }\n\t }\n\n\t return evaluated;\n\t },\n\n\t _logDebug: function(level) {\n\t // We allow `Raven.debug` and `Raven.config(DSN, { debug: true })` to not make backward incompatible API change\n\t if (\n\t this._originalConsoleMethods[level] &&\n\t (this.debug || this._globalOptions.debug)\n\t ) {\n\t // In IE<10 console methods do not have their own 'apply' method\n\t Function.prototype.apply.call(\n\t this._originalConsoleMethods[level],\n\t this._originalConsole,\n\t [].slice.call(arguments, 1)\n\t );\n\t }\n\t },\n\n\t _mergeContext: function(key, context) {\n\t if (isUndefined$1(context)) {\n\t delete this._globalContext[key];\n\t } else {\n\t this._globalContext[key] = objectMerge$1(this._globalContext[key] || {}, context);\n\t }\n\t }\n\t};\n\n\t// Deprecations\n\tRaven.prototype.setUser = Raven.prototype.setUserContext;\n\tRaven.prototype.setReleaseContext = Raven.prototype.setRelease;\n\n\tvar raven = Raven;\n\n\t/**\n\t * Enforces a single instance of the Raven client, and the\n\t * main entry point for Raven. If you are a consumer of the\n\t * Raven library, you SHOULD load this file (vs raven.js).\n\t **/\n\n\n\n\t// This is to be defensive in environments where window does not exist (see https://github.com/getsentry/raven-js/pull/785)\n\tvar _window$3 =\n\t typeof window !== 'undefined'\n\t ? window\n\t : typeof commonjsGlobal !== 'undefined' ? commonjsGlobal : typeof self !== 'undefined' ? self : {};\n\tvar _Raven = _window$3.Raven;\n\n\tvar Raven$1 = new raven();\n\n\t/*\n\t * Allow multiple versions of Raven to be installed.\n\t * Strip Raven from the global context and returns the instance.\n\t *\n\t * @return {Raven}\n\t */\n\tRaven$1.noConflict = function() {\n\t _window$3.Raven = _Raven;\n\t return Raven$1;\n\t};\n\n\tRaven$1.afterLoad();\n\n\tvar singleton = Raven$1;\n\n\t/**\n\t * DISCLAIMER:\n\t *\n\t * Expose `Client` constructor for cases where user want to track multiple \"sub-applications\" in one larger app.\n\t * It's not meant to be used by a wide audience, so pleaaase make sure that you know what you're doing before using it.\n\t * Accidentally calling `install` multiple times, may result in an unexpected behavior that's very hard to debug.\n\t *\n\t * It's called `Client' to be in-line with Raven Node implementation.\n\t *\n\t * HOWTO:\n\t *\n\t * import Raven from 'raven-js';\n\t *\n\t * const someAppReporter = new Raven.Client();\n\t * const someOtherAppReporter = new Raven.Client();\n\t *\n\t * someAppReporter.config('__DSN__', {\n\t * ...config goes here\n\t * });\n\t *\n\t * someOtherAppReporter.config('__OTHER_DSN__', {\n\t * ...config goes here\n\t * });\n\t *\n\t * someAppReporter.captureMessage(...);\n\t * someAppReporter.captureException(...);\n\t * someAppReporter.captureBreadcrumb(...);\n\t *\n\t * someOtherAppReporter.captureMessage(...);\n\t * someOtherAppReporter.captureException(...);\n\t * someOtherAppReporter.captureBreadcrumb(...);\n\t *\n\t * It should \"just work\".\n\t */\n\tvar Client = raven;\n\tsingleton.Client = Client;\n\n\tfunction _classCallCheck(instance, Constructor) {\n\t if (!(instance instanceof Constructor)) {\n\t throw new TypeError(\"Cannot call a class as a function\");\n\t }\n\t}\n\n\tfunction _defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t Object.defineProperty(target, descriptor.key, descriptor);\n\t }\n\t}\n\n\tfunction _createClass(Constructor, protoProps, staticProps) {\n\t if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) _defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t}\n\n\tfunction _defineProperty(obj, key, value) {\n\t if (key in obj) {\n\t Object.defineProperty(obj, key, {\n\t value: value,\n\t enumerable: true,\n\t configurable: true,\n\t writable: true\n\t });\n\t } else {\n\t obj[key] = value;\n\t }\n\n\t return obj;\n\t}\n\n\tfunction _slicedToArray(arr, i) {\n\t return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n\t}\n\n\tfunction _toConsumableArray(arr) {\n\t return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n\t}\n\n\tfunction _arrayWithoutHoles(arr) {\n\t if (Array.isArray(arr)) {\n\t for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n\t return arr2;\n\t }\n\t}\n\n\tfunction _arrayWithHoles(arr) {\n\t if (Array.isArray(arr)) return arr;\n\t}\n\n\tfunction _iterableToArray(iter) {\n\t if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n\t}\n\n\tfunction _iterableToArrayLimit(arr, i) {\n\t var _arr = [];\n\t var _n = true;\n\t var _d = false;\n\t var _e = undefined;\n\n\t try {\n\t for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n\t _arr.push(_s.value);\n\n\t if (i && _arr.length === i) break;\n\t }\n\t } catch (err) {\n\t _d = true;\n\t _e = err;\n\t } finally {\n\t try {\n\t if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n\t } finally {\n\t if (_d) throw _e;\n\t }\n\t }\n\n\t return _arr;\n\t}\n\n\tfunction _nonIterableSpread() {\n\t throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n\t}\n\n\tfunction _nonIterableRest() {\n\t throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n\t}\n\n\tconst defaults = {\n\t addCSS: true, // Add CSS to the element to improve usability (required here or in your CSS!)\n\t thumbWidth: 15, // The width of the thumb handle\n\t watch: true, // Watch for new elements that match a string target\n\t};\n\n\t// Element matches a selector\n\tfunction matches(element, selector) {\n\n\t function match() {\n\t return Array.from(document.querySelectorAll(selector)).includes(this);\n\t }\n\n\t const matches =\n\t match;\n\n\t return matches.call(element, selector);\n\t}\n\n\t// Trigger event\n\tfunction trigger(element, type) {\n\t if (!element || !type) {\n\t return;\n\t }\n\n\t // Create and dispatch the event\n\t const event = new Event(type);\n\n\t // Dispatch the event\n\t element.dispatchEvent(event);\n\t}\n\n\t// ==========================================================================\n\t// Type checking utils\n\t// ==========================================================================\n\n\tconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\n\tconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\n\n\tconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\n\tconst isObject$2 = input => getConstructor(input) === Object;\n\tconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\n\tconst isString$2 = input => getConstructor(input) === String;\n\tconst isBoolean = input => getConstructor(input) === Boolean;\n\tconst isFunction$2 = input => getConstructor(input) === Function;\n\tconst isArray$2 = input => Array.isArray(input);\n\tconst isNodeList = input => instanceOf(input, NodeList);\n\tconst isElement = input => instanceOf(input, Element);\n\tconst isEvent = input => instanceOf(input, Event);\n\tconst isEmpty = input =>\n\t isNullOrUndefined(input) ||\n\t ((isString$2(input) || isArray$2(input) || isNodeList(input)) && !input.length) ||\n\t (isObject$2(input) && !Object.keys(input).length);\n\n\tvar is = {\n\t nullOrUndefined: isNullOrUndefined,\n\t object: isObject$2,\n\t number: isNumber,\n\t string: isString$2,\n\t boolean: isBoolean,\n\t function: isFunction$2,\n\t array: isArray$2,\n\t nodeList: isNodeList,\n\t element: isElement,\n\t event: isEvent,\n\t empty: isEmpty,\n\t};\n\n\t// Get the number of decimal places\n\tfunction getDecimalPlaces(value) {\n\t const match = `${value}`.match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\n\t if (!match) {\n\t return 0;\n\t }\n\n\t return Math.max(\n\t 0,\n\t // Number of digits right of decimal point.\n\t (match[1] ? match[1].length : 0) -\n\t // Adjust for scientific notation.\n\t (match[2] ? +match[2] : 0),\n\t );\n\t}\n\n\t// Round to the nearest step\n\tfunction round(number, step) {\n\t if (step < 1) {\n\t const places = getDecimalPlaces(step);\n\t return parseFloat(number.toFixed(places));\n\t }\n\t return Math.round(number / step) * step;\n\t}\n\n\t// ==========================================================================\n\n\tclass RangeTouch {\n\t /**\n\t * Setup a new instance\n\t * @param {String|Element} target\n\t * @param {Object} options\n\t */\n\t constructor(target, options) {\n\t if (is.element(target)) {\n\t // An Element is passed, use it directly\n\t this.element = target;\n\t } else if (is.string(target)) {\n\t // A CSS Selector is passed, fetch it from the DOM\n\t this.element = document.querySelector(target);\n\t }\n\n\t if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) {\n\t return;\n\t }\n\n\t this.config = Object.assign({}, defaults, options);\n\n\t this.init();\n\t }\n\n\t static get enabled() {\n\t return 'ontouchstart' in document.documentElement;\n\t }\n\n\t /**\n\t * Setup multiple instances\n\t * @param {String|Element|NodeList|Array} target\n\t * @param {Object} options\n\t */\n\t static setup(target, options = {}) {\n\t let targets = null;\n\n\t if (is.empty(target) || is.string(target)) {\n\t targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type=\"range\"]'));\n\t } else if (is.element(target)) {\n\t targets = [target];\n\t } else if (is.nodeList(target)) {\n\t targets = Array.from(target);\n\t } else if (is.array(target)) {\n\t targets = target.filter(is.element);\n\t }\n\n\t if (is.empty(targets)) {\n\t return null;\n\t }\n\n\t const config = Object.assign({}, defaults, options);\n\n\t if (is.string(target) && config.watch) {\n\t // Create an observer instance\n\t const observer = new MutationObserver(mutations => {\n\t Array.from(mutations).forEach(mutation => {\n\t Array.from(mutation.addedNodes).forEach(node => {\n\t if (!is.element(node) || !matches(node, target)) {\n\t return;\n\t }\n\n\t // eslint-disable-next-line no-unused-vars\n\t const range = new RangeTouch(node, config);\n\t });\n\t });\n\t });\n\n\t // Pass in the target node, as well as the observer options\n\t observer.observe(document.body, {\n\t childList: true,\n\t subtree: true,\n\t });\n\t }\n\n\t return targets.map(t => new RangeTouch(t, options));\n\t }\n\n\t init() {\n\t // Bail if not a touch enabled device\n\t if (!RangeTouch.enabled) {\n\t return;\n\t }\n\n\t // Add useful CSS\n\t if (this.config.addCSS) {\n\t // TODO: Restore original values on destroy\n\t this.element.style.userSelect = 'none';\n\t this.element.style.webKitUserSelect = 'none';\n\t this.element.style.touchAction = 'manipulation';\n\t }\n\n\t this.listeners(true);\n\n\t this.element.rangeTouch = this;\n\t }\n\n\t destroy() {\n\t // Bail if not a touch enabled device\n\t if (!RangeTouch.enabled) {\n\t return;\n\t }\n\n\t this.listeners(false);\n\n\t this.element.rangeTouch = null;\n\t }\n\n\t listeners(toggle) {\n\t const method = toggle ? 'addEventListener' : 'removeEventListener';\n\n\t // Listen for events\n\t ['touchstart', 'touchmove', 'touchend'].forEach(type => {\n\t this.element[method](type, event => this.set(event), false);\n\t });\n\t }\n\n\t /**\n\t * Get the value based on touch position\n\t * @param {Event} event\n\t */\n\t get(event) {\n\t if (!RangeTouch.enabled || !is.event(event)) {\n\t return null;\n\t }\n\n\t const input = event.target;\n\t const touch = event.changedTouches[0];\n\t const min = parseFloat(input.getAttribute('min')) || 0;\n\t const max = parseFloat(input.getAttribute('max')) || 100;\n\t const step = parseFloat(input.getAttribute('step')) || 1;\n\t const delta = max - min;\n\n\t // Calculate percentage\n\t let percent;\n\t const clientRect = input.getBoundingClientRect();\n\t const thumbWidth = ((100 / clientRect.width) * (this.config.thumbWidth / 2)) / 100;\n\n\t // Determine left percentage\n\t percent = (100 / clientRect.width) * (touch.clientX - clientRect.left);\n\n\t // Don't allow outside bounds\n\t if (percent < 0) {\n\t percent = 0;\n\t } else if (percent > 100) {\n\t percent = 100;\n\t }\n\n\t // Factor in the thumb offset\n\t if (percent < 50) {\n\t percent -= (100 - percent * 2) * thumbWidth;\n\t } else if (percent > 50) {\n\t percent += (percent - 50) * 2 * thumbWidth;\n\t }\n\n\t // Find the closest step to the mouse position\n\t return min + round(delta * (percent / 100), step);\n\t }\n\n\t /**\n\t * Update range value based on position\n\t * @param {Event} event\n\t */\n\t set(event) {\n\t if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) {\n\t return;\n\t }\n\n\t // Prevent text highlight on iOS\n\t event.preventDefault();\n\n\t // Set value\n\t event.target.value = this.get(event);\n\n\t // Trigger event\n\t trigger(event.target, event.type === 'touchend' ? 'change' : 'input');\n\t }\n\t}\n\n\t// ==========================================================================\n\t// Type checking utils\n\t// ==========================================================================\n\tvar getConstructor$1 = function getConstructor(input) {\n\t return input !== null && typeof input !== 'undefined' ? input.constructor : null;\n\t};\n\n\tvar instanceOf$1 = function instanceOf(input, constructor) {\n\t return Boolean(input && constructor && input instanceof constructor);\n\t};\n\n\tvar isNullOrUndefined$1 = function isNullOrUndefined(input) {\n\t return input === null || typeof input === 'undefined';\n\t};\n\n\tvar isObject$3 = function isObject(input) {\n\t return getConstructor$1(input) === Object;\n\t};\n\n\tvar isNumber$1 = function isNumber(input) {\n\t return getConstructor$1(input) === Number && !Number.isNaN(input);\n\t};\n\n\tvar isString$3 = function isString(input) {\n\t return getConstructor$1(input) === String;\n\t};\n\n\tvar isBoolean$1 = function isBoolean(input) {\n\t return getConstructor$1(input) === Boolean;\n\t};\n\n\tvar isFunction$3 = function isFunction(input) {\n\t return getConstructor$1(input) === Function;\n\t};\n\n\tvar isArray$3 = function isArray(input) {\n\t return Array.isArray(input);\n\t};\n\n\tvar isWeakMap = function isWeakMap(input) {\n\t return instanceOf$1(input, WeakMap);\n\t};\n\n\tvar isNodeList$1 = function isNodeList(input) {\n\t return instanceOf$1(input, NodeList);\n\t};\n\n\tvar isElement$1 = function isElement(input) {\n\t return instanceOf$1(input, Element);\n\t};\n\n\tvar isTextNode = function isTextNode(input) {\n\t return getConstructor$1(input) === Text;\n\t};\n\n\tvar isEvent$1 = function isEvent(input) {\n\t return instanceOf$1(input, Event);\n\t};\n\n\tvar isKeyboardEvent = function isKeyboardEvent(input) {\n\t return instanceOf$1(input, KeyboardEvent);\n\t};\n\n\tvar isCue = function isCue(input) {\n\t return instanceOf$1(input, window.TextTrackCue) || instanceOf$1(input, window.VTTCue);\n\t};\n\n\tvar isTrack = function isTrack(input) {\n\t return instanceOf$1(input, TextTrack) || !isNullOrUndefined$1(input) && isString$3(input.kind);\n\t};\n\n\tvar isPromise = function isPromise(input) {\n\t return instanceOf$1(input, Promise);\n\t};\n\n\tvar isEmpty$1 = function isEmpty(input) {\n\t return isNullOrUndefined$1(input) || (isString$3(input) || isArray$3(input) || isNodeList$1(input)) && !input.length || isObject$3(input) && !Object.keys(input).length;\n\t};\n\n\tvar isUrl = function isUrl(input) {\n\t // Accept a URL object\n\t if (instanceOf$1(input, window.URL)) {\n\t return true;\n\t } // Must be string from here\n\n\n\t if (!isString$3(input)) {\n\t return false;\n\t } // Add the protocol if required\n\n\n\t var string = input;\n\n\t if (!input.startsWith('http://') || !input.startsWith('https://')) {\n\t string = \"http://\".concat(input);\n\t }\n\n\t try {\n\t return !isEmpty$1(new URL(string).hostname);\n\t } catch (e) {\n\t return false;\n\t }\n\t};\n\n\tvar is$1 = {\n\t nullOrUndefined: isNullOrUndefined$1,\n\t object: isObject$3,\n\t number: isNumber$1,\n\t string: isString$3,\n\t boolean: isBoolean$1,\n\t function: isFunction$3,\n\t array: isArray$3,\n\t weakMap: isWeakMap,\n\t nodeList: isNodeList$1,\n\t element: isElement$1,\n\t textNode: isTextNode,\n\t event: isEvent$1,\n\t keyboardEvent: isKeyboardEvent,\n\t cue: isCue,\n\t track: isTrack,\n\t promise: isPromise,\n\t url: isUrl,\n\t empty: isEmpty$1\n\t};\n\n\t// ==========================================================================\n\t// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n\t// https://www.youtube.com/watch?v=NPM6172J22g\n\n\tvar supportsPassiveListeners = function () {\n\t // Test via a getter in the options object to see if the passive property is accessed\n\t var supported = false;\n\n\t try {\n\t var options = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supported = true;\n\t return null;\n\t }\n\t });\n\t window.addEventListener('test', null, options);\n\t window.removeEventListener('test', null, options);\n\t } catch (e) {// Do nothing\n\t }\n\n\t return supported;\n\t}(); // Toggle event listener\n\n\n\tfunction toggleListener(element, event, callback) {\n\t var _this = this;\n\n\t var toggle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\t var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\t var capture = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n\n\t // Bail if no element, event, or callback\n\t if (!element || !('addEventListener' in element) || is$1.empty(event) || !is$1.function(callback)) {\n\t return;\n\t } // Allow multiple events\n\n\n\t var events = event.split(' '); // Build options\n\t // Default to just the capture boolean for browsers with no passive listener support\n\n\t var options = capture; // If passive events listeners are supported\n\n\t if (supportsPassiveListeners) {\n\t options = {\n\t // Whether the listener can be passive (i.e. default never prevented)\n\t passive: passive,\n\t // Whether the listener is a capturing listener or not\n\t capture: capture\n\t };\n\t } // If a single node is passed, bind the event listener\n\n\n\t events.forEach(function (type) {\n\t if (_this && _this.eventListeners && toggle) {\n\t // Cache event listener\n\t _this.eventListeners.push({\n\t element: element,\n\t type: type,\n\t callback: callback,\n\t options: options\n\t });\n\t }\n\n\t element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n\t });\n\t} // Bind event handler\n\n\tfunction on(element) {\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t toggleListener.call(this, element, events, callback, true, passive, capture);\n\t} // Unbind event handler\n\n\tfunction off(element) {\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t toggleListener.call(this, element, events, callback, false, passive, capture);\n\t} // Bind once-only event handler\n\n\tfunction once(element) {\n\t var _this2 = this;\n\n\t var events = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var callback = arguments.length > 2 ? arguments[2] : undefined;\n\t var passive = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\t var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n\t var onceCallback = function onceCallback() {\n\t off(element, events, onceCallback, passive, capture);\n\n\t for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\n\t callback.apply(_this2, args);\n\t };\n\n\t toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n\t} // Trigger event\n\n\tfunction triggerEvent(element) {\n\t var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var bubbles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t var detail = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\t // Bail if no element\n\t if (!is$1.element(element) || is$1.empty(type)) {\n\t return;\n\t } // Create and dispatch the event\n\n\n\t var event = new CustomEvent(type, {\n\t bubbles: bubbles,\n\t detail: Object.assign({}, detail, {\n\t plyr: this\n\t })\n\t }); // Dispatch the event\n\n\t element.dispatchEvent(event);\n\t} // Unbind all cached event listeners\n\n\tfunction unbindListeners() {\n\t if (this && this.eventListeners) {\n\t this.eventListeners.forEach(function (item) {\n\t var element = item.element,\n\t type = item.type,\n\t callback = item.callback,\n\t options = item.options;\n\t element.removeEventListener(type, callback, options);\n\t });\n\t this.eventListeners = [];\n\t }\n\t} // Run method when / if player is ready\n\n\tfunction ready() {\n\t var _this3 = this;\n\n\t return new Promise(function (resolve) {\n\t return _this3.ready ? setTimeout(resolve, 0) : on.call(_this3, _this3.elements.container, 'ready', resolve);\n\t }).then(function () {});\n\t}\n\n\tfunction wrap(elements, wrapper) {\n\t // Convert `elements` to an array, if necessary.\n\t var targets = elements.length ? elements : [elements]; // Loops backwards to prevent having to clone the wrapper on the\n\t // first element (see `child` below).\n\n\t Array.from(targets).reverse().forEach(function (element, index) {\n\t var child = index > 0 ? wrapper.cloneNode(true) : wrapper; // Cache the current parent and sibling.\n\n\t var parent = element.parentNode;\n\t var sibling = element.nextSibling; // Wrap the element (is automatically removed from its current\n\t // parent).\n\n\t child.appendChild(element); // If the element had a sibling, insert the wrapper before\n\t // the sibling to maintain the HTML structure; otherwise, just\n\t // append it to the parent.\n\n\t if (sibling) {\n\t parent.insertBefore(child, sibling);\n\t } else {\n\t parent.appendChild(child);\n\t }\n\t });\n\t} // Set attributes\n\n\tfunction setAttributes(element, attributes) {\n\t if (!is$1.element(element) || is$1.empty(attributes)) {\n\t return;\n\t } // Assume null and undefined attributes should be left out,\n\t // Setting them would otherwise convert them to \"null\" and \"undefined\"\n\n\n\t Object.entries(attributes).filter(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t value = _ref2[1];\n\n\t return !is$1.nullOrUndefined(value);\n\t }).forEach(function (_ref3) {\n\t var _ref4 = _slicedToArray(_ref3, 2),\n\t key = _ref4[0],\n\t value = _ref4[1];\n\n\t return element.setAttribute(key, value);\n\t });\n\t} // Create a DocumentFragment\n\n\tfunction createElement(type, attributes, text) {\n\t // Create a new \n\t var element = document.createElement(type); // Set all passed attributes\n\n\t if (is$1.object(attributes)) {\n\t setAttributes(element, attributes);\n\t } // Add text node\n\n\n\t if (is$1.string(text)) {\n\t element.innerText = text;\n\t } // Return built element\n\n\n\t return element;\n\t} // Inaert an element after another\n\n\tfunction insertAfter(element, target) {\n\t if (!is$1.element(element) || !is$1.element(target)) {\n\t return;\n\t }\n\n\t target.parentNode.insertBefore(element, target.nextSibling);\n\t} // Insert a DocumentFragment\n\n\tfunction insertElement(type, parent, attributes, text) {\n\t if (!is$1.element(parent)) {\n\t return;\n\t }\n\n\t parent.appendChild(createElement(type, attributes, text));\n\t} // Remove element(s)\n\n\tfunction removeElement(element) {\n\t if (is$1.nodeList(element) || is$1.array(element)) {\n\t Array.from(element).forEach(removeElement);\n\t return;\n\t }\n\n\t if (!is$1.element(element) || !is$1.element(element.parentNode)) {\n\t return;\n\t }\n\n\t element.parentNode.removeChild(element);\n\t} // Remove all child elements\n\n\tfunction emptyElement(element) {\n\t if (!is$1.element(element)) {\n\t return;\n\t }\n\n\t var length = element.childNodes.length;\n\n\t while (length > 0) {\n\t element.removeChild(element.lastChild);\n\t length -= 1;\n\t }\n\t} // Replace element\n\n\tfunction replaceElement(newChild, oldChild) {\n\t if (!is$1.element(oldChild) || !is$1.element(oldChild.parentNode) || !is$1.element(newChild)) {\n\t return null;\n\t }\n\n\t oldChild.parentNode.replaceChild(newChild, oldChild);\n\t return newChild;\n\t} // Get an attribute object from a string selector\n\n\tfunction getAttributesFromSelector(sel, existingAttributes) {\n\t // For example:\n\t // '.test' to { class: 'test' }\n\t // '#test' to { id: 'test' }\n\t // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\t if (!is$1.string(sel) || is$1.empty(sel)) {\n\t return {};\n\t }\n\n\t var attributes = {};\n\t var existing = existingAttributes;\n\t sel.split(',').forEach(function (s) {\n\t // Remove whitespace\n\t var selector = s.trim();\n\t var className = selector.replace('.', '');\n\t var stripped = selector.replace(/[[\\]]/g, ''); // Get the parts and value\n\n\t var parts = stripped.split('=');\n\t var key = parts[0];\n\t var value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : ''; // Get the first character\n\n\t var start = selector.charAt(0);\n\n\t switch (start) {\n\t case '.':\n\t // Add to existing classname\n\t if (is$1.object(existing) && is$1.string(existing.class)) {\n\t existing.class += \" \".concat(className);\n\t }\n\n\t attributes.class = className;\n\t break;\n\n\t case '#':\n\t // ID selector\n\t attributes.id = selector.replace('#', '');\n\t break;\n\n\t case '[':\n\t // Attribute selector\n\t attributes[key] = value;\n\t break;\n\n\t default:\n\t break;\n\t }\n\t });\n\t return attributes;\n\t} // Toggle hidden\n\n\tfunction toggleHidden(element, hidden) {\n\t if (!is$1.element(element)) {\n\t return;\n\t }\n\n\t var hide = hidden;\n\n\t if (!is$1.boolean(hide)) {\n\t hide = !element.hidden;\n\t }\n\n\t if (hide) {\n\t element.setAttribute('hidden', '');\n\t } else {\n\t element.removeAttribute('hidden');\n\t }\n\t} // Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\n\n\tfunction toggleClass(element, className, force) {\n\t if (is$1.nodeList(element)) {\n\t return Array.from(element).map(function (e) {\n\t return toggleClass(e, className, force);\n\t });\n\t }\n\n\t if (is$1.element(element)) {\n\t var method = 'toggle';\n\n\t if (typeof force !== 'undefined') {\n\t method = force ? 'add' : 'remove';\n\t }\n\n\t element.classList[method](className);\n\t return element.classList.contains(className);\n\t }\n\n\t return false;\n\t} // Has class name\n\n\tfunction hasClass(element, className) {\n\t return is$1.element(element) && element.classList.contains(className);\n\t} // Element matches selector\n\n\tfunction matches$1(element, selector) {\n\n\t function match() {\n\t return Array.from(document.querySelectorAll(selector)).includes(this);\n\t }\n\n\t var matches = match;\n\t return matches.call(element, selector);\n\t} // Find all elements\n\n\tfunction getElements(selector) {\n\t return this.elements.container.querySelectorAll(selector);\n\t} // Find a single element\n\n\tfunction getElement(selector) {\n\t return this.elements.container.querySelector(selector);\n\t} // Trap focus inside container\n\n\tfunction trapFocus() {\n\t var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t var toggle = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!is$1.element(element)) {\n\t return;\n\t }\n\n\t var focusable = getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]');\n\t var first = focusable[0];\n\t var last = focusable[focusable.length - 1];\n\n\t var trap = function trap(event) {\n\t // Bail if not tab key or not fullscreen\n\t if (event.key !== 'Tab' || event.keyCode !== 9) {\n\t return;\n\t } // Get the current focused element\n\n\n\t var focused = document.activeElement;\n\n\t if (focused === last && !event.shiftKey) {\n\t // Move focus to first element that can be tabbed if Shift isn't used\n\t first.focus();\n\t event.preventDefault();\n\t } else if (focused === first && event.shiftKey) {\n\t // Move focus to last element that can be tabbed if Shift is used\n\t last.focus();\n\t event.preventDefault();\n\t }\n\t };\n\n\t toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false);\n\t} // Set focus and tab focus class\n\n\tfunction setFocus() {\n\t var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t var tabFocus = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n\t if (!is$1.element(element)) {\n\t return;\n\t } // Set regular focus\n\n\n\t element.focus({\n\t preventScroll: true\n\t }); // If we want to mimic keyboard focus via tab\n\n\t if (tabFocus) {\n\t toggleClass(element, this.config.classNames.tabFocus);\n\t }\n\t}\n\n\t// ==========================================================================\n\tvar transitionEndEvent = function () {\n\t var element = document.createElement('span');\n\t var events = {\n\t WebkitTransition: 'webkitTransitionEnd',\n\t MozTransition: 'transitionend',\n\t OTransition: 'oTransitionEnd otransitionend',\n\t transition: 'transitionend'\n\t };\n\t var type = Object.keys(events).find(function (event) {\n\t return element.style[event] !== undefined;\n\t });\n\t return is$1.string(type) ? events[type] : false;\n\t}(); // Force repaint of element\n\n\tfunction repaint(element) {\n\t setTimeout(function () {\n\t try {\n\t toggleHidden(element, true);\n\t element.offsetHeight; // eslint-disable-line\n\n\t toggleHidden(element, false);\n\t } catch (e) {// Do nothing\n\t }\n\t }, 0);\n\t}\n\n\t// ==========================================================================\n\t// Browser sniffing\n\t// Unfortunately, due to mixed support, UA sniffing is required\n\t// ==========================================================================\n\tvar browser = {\n\t isIE:\n\t /* @cc_on!@ */\n\t !!document.documentMode,\n\t isEdge: window.navigator.userAgent.includes('Edge'),\n\t isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n\t isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n\t isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform)\n\t};\n\n\tvar defaultCodecs = {\n\t 'audio/ogg': 'vorbis',\n\t 'audio/wav': '1',\n\t 'video/webm': 'vp8, vorbis',\n\t 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n\t 'video/ogg': 'theora'\n\t}; // Check for feature support\n\n\tvar support = {\n\t // Basic support\n\t audio: 'canPlayType' in document.createElement('audio'),\n\t video: 'canPlayType' in document.createElement('video'),\n\t // Check for support\n\t // Basic functionality vs full UI\n\t check: function check(type, provider, playsinline) {\n\t var canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n\t var api = support[type] || provider !== 'html5';\n\t var ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\t return {\n\t api: api,\n\t ui: ui\n\t };\n\t },\n\t // Picture-in-picture support\n\t // Safari & Chrome only currently\n\t pip: function () {\n\t if (browser.isIPhone) {\n\t return false;\n\t } // Safari\n\t // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n\n\n\t if (is$1.function(createElement('video').webkitSetPresentationMode)) {\n\t return true;\n\t } // Chrome\n\t // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n\n\n\t if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) {\n\t return true;\n\t }\n\n\t return false;\n\t }(),\n\t // Airplay support\n\t // Safari only currently\n\t airplay: is$1.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\t // Inline playback support\n\t // https://webkit.org/blog/6784/new-video-policies-for-ios/\n\t playsinline: 'playsInline' in document.createElement('video'),\n\t // Check for mime type support against a player instance\n\t // Credits: http://diveintohtml5.info/everything.html\n\t // Related: http://www.leanbackplayer.com/test/h5mt.html\n\t mime: function mime(input) {\n\t if (is$1.empty(input)) {\n\t return false;\n\t }\n\n\t var _input$split = input.split('/'),\n\t _input$split2 = _slicedToArray(_input$split, 1),\n\t mediaType = _input$split2[0];\n\n\t var type = input; // Verify we're using HTML5 and there's no media type mismatch\n\n\t if (!this.isHTML5 || mediaType !== this.type) {\n\t return false;\n\t } // Add codec if required\n\n\n\t if (Object.keys(defaultCodecs).includes(type)) {\n\t type += \"; codecs=\\\"\".concat(defaultCodecs[input], \"\\\"\");\n\t }\n\n\t try {\n\t return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n\t } catch (e) {\n\t return false;\n\t }\n\t },\n\t // Check for textTracks support\n\t textTracks: 'textTracks' in document.createElement('video'),\n\t // Sliders\n\t rangeInput: function () {\n\t var range = document.createElement('input');\n\t range.type = 'range';\n\t return range.type === 'range';\n\t }(),\n\t // Touch\n\t // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n\t touch: 'ontouchstart' in document.documentElement,\n\t // Detect transitions support\n\t transitions: transitionEndEvent !== false,\n\t // Reduced motion iOS & MacOS setting\n\t // https://webkit.org/blog/7551/responsive-design-for-motion/\n\t reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches\n\t};\n\n\t// ==========================================================================\n\tvar html5 = {\n\t getSources: function getSources() {\n\t var _this = this;\n\n\t if (!this.isHTML5) {\n\t return [];\n\t }\n\n\t var sources = Array.from(this.media.querySelectorAll('source')); // Filter out unsupported sources (if type is specified)\n\n\t return sources.filter(function (source) {\n\t var type = source.getAttribute('type');\n\n\t if (is$1.empty(type)) {\n\t return true;\n\t }\n\n\t return support.mime.call(_this, type);\n\t });\n\t },\n\t // Get quality levels\n\t getQualityOptions: function getQualityOptions() {\n\t // Get sizes from elements\n\t return html5.getSources.call(this).map(function (source) {\n\t return Number(source.getAttribute('size'));\n\t }).filter(Boolean);\n\t },\n\t extend: function extend() {\n\t if (!this.isHTML5) {\n\t return;\n\t }\n\n\t var player = this; // Quality\n\n\t Object.defineProperty(player.media, 'quality', {\n\t get: function get() {\n\t // Get sources\n\t var sources = html5.getSources.call(player);\n\t var source = sources.find(function (source) {\n\t return source.getAttribute('src') === player.source;\n\t }); // Return size, if match is found\n\n\t return source && Number(source.getAttribute('size'));\n\t },\n\t set: function set(input) {\n\t // Get sources\n\t var sources = html5.getSources.call(player); // Get first match for requested size\n\n\t var source = sources.find(function (source) {\n\t return Number(source.getAttribute('size')) === input;\n\t }); // No matching source found\n\n\t if (!source) {\n\t return;\n\t } // Get current state\n\n\n\t var _player$media = player.media,\n\t currentTime = _player$media.currentTime,\n\t paused = _player$media.paused,\n\t preload = _player$media.preload,\n\t readyState = _player$media.readyState; // Set new source\n\n\t player.media.src = source.getAttribute('src'); // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n\n\t if (preload !== 'none' || readyState) {\n\t // Restore time\n\t player.once('loadedmetadata', function () {\n\t player.currentTime = currentTime; // Resume playing\n\n\t if (!paused) {\n\t player.play();\n\t }\n\t }); // Load new source\n\n\t player.media.load();\n\t } // Trigger change event\n\n\n\t triggerEvent.call(player, player.media, 'qualitychange', false, {\n\t quality: input\n\t });\n\t }\n\t });\n\t },\n\t // Cancel current network requests\n\t // See https://github.com/sampotts/plyr/issues/174\n\t cancelRequests: function cancelRequests() {\n\t if (!this.isHTML5) {\n\t return;\n\t } // Remove child sources\n\n\n\t removeElement(html5.getSources.call(this)); // Set blank video src attribute\n\t // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n\t // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n\n\t this.media.setAttribute('src', this.config.blankVideo); // Load the new empty source\n\t // This will cancel existing requests\n\t // See https://github.com/sampotts/plyr/issues/174\n\n\t this.media.load(); // Debugging\n\n\t this.debug.log('Cancelled network requests');\n\t }\n\t};\n\n\t// ==========================================================================\n\n\tfunction dedupe(array) {\n\t if (!is$1.array(array)) {\n\t return array;\n\t }\n\n\t return array.filter(function (item, index) {\n\t return array.indexOf(item) === index;\n\t });\n\t} // Get the closest value in an array\n\n\tfunction closest(array, value) {\n\t if (!is$1.array(array) || !array.length) {\n\t return null;\n\t }\n\n\t return array.reduce(function (prev, curr) {\n\t return Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev;\n\t });\n\t}\n\n\tfunction cloneDeep(object) {\n\t return JSON.parse(JSON.stringify(object));\n\t} // Get a nested value in an object\n\n\tfunction getDeep(object, path) {\n\t return path.split('.').reduce(function (obj, key) {\n\t return obj && obj[key];\n\t }, object);\n\t} // Deep extend destination object with N more objects\n\n\tfunction extend() {\n\t var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t sources[_key - 1] = arguments[_key];\n\t }\n\n\t if (!sources.length) {\n\t return target;\n\t }\n\n\t var source = sources.shift();\n\n\t if (!is$1.object(source)) {\n\t return target;\n\t }\n\n\t Object.keys(source).forEach(function (key) {\n\t if (is$1.object(source[key])) {\n\t if (!Object.keys(target).includes(key)) {\n\t Object.assign(target, _defineProperty({}, key, {}));\n\t }\n\n\t extend(target[key], source[key]);\n\t } else {\n\t Object.assign(target, _defineProperty({}, key, source[key]));\n\t }\n\t });\n\t return extend.apply(void 0, [target].concat(sources));\n\t}\n\n\t// ==========================================================================\n\n\tfunction generateId(prefix) {\n\t return \"\".concat(prefix, \"-\").concat(Math.floor(Math.random() * 10000));\n\t} // Format string\n\n\tfunction format(input) {\n\t for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\n\t if (is$1.empty(input)) {\n\t return input;\n\t }\n\n\t return input.toString().replace(/{(\\d+)}/g, function (match, i) {\n\t return args[i].toString();\n\t });\n\t} // Get percentage\n\n\tfunction getPercentage(current, max) {\n\t if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n\t return 0;\n\t }\n\n\t return (current / max * 100).toFixed(2);\n\t} // Replace all occurances of a string in a string\n\n\tfunction replaceAll() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var find = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\t var replace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\t return input.replace(new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'), replace.toString());\n\t} // Convert to title case\n\n\tfunction toTitleCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t return input.toString().replace(/\\w\\S*/g, function (text) {\n\t return text.charAt(0).toUpperCase() + text.substr(1).toLowerCase();\n\t });\n\t} // Convert string to pascalCase\n\n\tfunction toPascalCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var string = input.toString(); // Convert kebab case\n\n\t string = replaceAll(string, '-', ' '); // Convert snake case\n\n\t string = replaceAll(string, '_', ' '); // Convert to title case\n\n\t string = toTitleCase(string); // Convert to pascal case\n\n\t return replaceAll(string, ' ', '');\n\t} // Convert string to pascalCase\n\n\tfunction toCamelCase() {\n\t var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var string = input.toString(); // Convert to pascal case\n\n\t string = toPascalCase(string); // Convert first character to lowercase\n\n\t return string.charAt(0).toLowerCase() + string.slice(1);\n\t} // Remove HTML from a string\n\n\tfunction stripHTML(source) {\n\t var fragment = document.createDocumentFragment();\n\t var element = document.createElement('div');\n\t fragment.appendChild(element);\n\t element.innerHTML = source;\n\t return fragment.firstChild.innerText;\n\t} // Like outerHTML, but also works for DocumentFragment\n\n\tfunction getHTML(element) {\n\t var wrapper = document.createElement('div');\n\t wrapper.appendChild(element);\n\t return wrapper.innerHTML;\n\t}\n\n\tvar resources = {\n\t pip: 'PIP',\n\t airplay: 'AirPlay',\n\t html5: 'HTML5',\n\t vimeo: 'Vimeo',\n\t youtube: 'YouTube'\n\t};\n\tvar i18n = {\n\t get: function get() {\n\t var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\t var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t if (is$1.empty(key) || is$1.empty(config)) {\n\t return '';\n\t }\n\n\t var string = getDeep(config.i18n, key);\n\n\t if (is$1.empty(string)) {\n\t if (Object.keys(resources).includes(key)) {\n\t return resources[key];\n\t }\n\n\t return '';\n\t }\n\n\t var replace = {\n\t '{seektime}': config.seekTime,\n\t '{title}': config.title\n\t };\n\t Object.entries(replace).forEach(function (_ref) {\n\t var _ref2 = _slicedToArray(_ref, 2),\n\t key = _ref2[0],\n\t value = _ref2[1];\n\n\t string = replaceAll(string, key, value);\n\t });\n\t return string;\n\t }\n\t};\n\n\tvar Storage =\n\t/*#__PURE__*/\n\tfunction () {\n\t function Storage(player) {\n\t _classCallCheck(this, Storage);\n\n\t this.enabled = player.config.storage.enabled;\n\t this.key = player.config.storage.key;\n\t } // Check for actual support (see if we can use it)\n\n\n\t _createClass(Storage, [{\n\t key: \"get\",\n\t value: function get(key) {\n\t if (!Storage.supported || !this.enabled) {\n\t return null;\n\t }\n\n\t var store = window.localStorage.getItem(this.key);\n\n\t if (is$1.empty(store)) {\n\t return null;\n\t }\n\n\t var json = JSON.parse(store);\n\t return is$1.string(key) && key.length ? json[key] : json;\n\t }\n\t }, {\n\t key: \"set\",\n\t value: function set(object) {\n\t // Bail if we don't have localStorage support or it's disabled\n\t if (!Storage.supported || !this.enabled) {\n\t return;\n\t } // Can only store objectst\n\n\n\t if (!is$1.object(object)) {\n\t return;\n\t } // Get current storage\n\n\n\t var storage = this.get(); // Default to empty object\n\n\t if (is$1.empty(storage)) {\n\t storage = {};\n\t } // Update the working copy of the values\n\n\n\t extend(storage, object); // Update storage\n\n\t window.localStorage.setItem(this.key, JSON.stringify(storage));\n\t }\n\t }], [{\n\t key: \"supported\",\n\t get: function get() {\n\t try {\n\t if (!('localStorage' in window)) {\n\t return false;\n\t }\n\n\t var test = '___test'; // Try to use it (it might be disabled, e.g. user is in private mode)\n\t // see: https://github.com/sampotts/plyr/issues/131\n\n\t window.localStorage.setItem(test, test);\n\t window.localStorage.removeItem(test);\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t }\n\t }]);\n\n\t return Storage;\n\t}();\n\n\t// ==========================================================================\n\t// Fetch wrapper\n\t// Using XHR to avoid issues with older browsers\n\t// ==========================================================================\n\tfunction fetch(url) {\n\t var responseType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text';\n\t return new Promise(function (resolve, reject) {\n\t try {\n\t var request = new XMLHttpRequest(); // Check for CORS support\n\n\t if (!('withCredentials' in request)) {\n\t return;\n\t }\n\n\t request.addEventListener('load', function () {\n\t if (responseType === 'text') {\n\t try {\n\t resolve(JSON.parse(request.responseText));\n\t } catch (e) {\n\t resolve(request.responseText);\n\t }\n\t } else {\n\t resolve(request.response);\n\t }\n\t });\n\t request.addEventListener('error', function () {\n\t throw new Error(request.status);\n\t });\n\t request.open('GET', url, true); // Set the required response type\n\n\t request.responseType = responseType;\n\t request.send();\n\t } catch (e) {\n\t reject(e);\n\t }\n\t });\n\t}\n\n\t// ==========================================================================\n\n\tfunction loadSprite(url, id) {\n\t if (!is$1.string(url)) {\n\t return;\n\t }\n\n\t var prefix = 'cache';\n\t var hasId = is$1.string(id);\n\t var isCached = false;\n\n\t var exists = function exists() {\n\t return document.getElementById(id) !== null;\n\t };\n\n\t var update = function update(container, data) {\n\t container.innerHTML = data; // Check again incase of race condition\n\n\t if (hasId && exists()) {\n\t return;\n\t } // Inject the SVG to the body\n\n\n\t document.body.insertAdjacentElement('afterbegin', container);\n\t }; // Only load once if ID set\n\n\n\t if (!hasId || !exists()) {\n\t var useStorage = Storage.supported; // Create container\n\n\t var container = document.createElement('div');\n\t container.setAttribute('hidden', '');\n\n\t if (hasId) {\n\t container.setAttribute('id', id);\n\t } // Check in cache\n\n\n\t if (useStorage) {\n\t var cached = window.localStorage.getItem(\"\".concat(prefix, \"-\").concat(id));\n\t isCached = cached !== null;\n\n\t if (isCached) {\n\t var data = JSON.parse(cached);\n\t update(container, data.content);\n\t }\n\t } // Get the sprite\n\n\n\t fetch(url).then(function (result) {\n\t if (is$1.empty(result)) {\n\t return;\n\t }\n\n\t if (useStorage) {\n\t window.localStorage.setItem(\"\".concat(prefix, \"-\").concat(id), JSON.stringify({\n\t content: result\n\t }));\n\t }\n\n\t update(container, result);\n\t }).catch(function () {});\n\t }\n\t}\n\n\t// ==========================================================================\n\n\tvar getHours = function getHours(value) {\n\t return Math.trunc(value / 60 / 60 % 60, 10);\n\t};\n\tvar getMinutes = function getMinutes(value) {\n\t return Math.trunc(value / 60 % 60, 10);\n\t};\n\tvar getSeconds = function getSeconds(value) {\n\t return Math.trunc(value % 60, 10);\n\t}; // Format time to UI friendly string\n\n\tfunction formatTime() {\n\t var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var displayHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var inverted = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n\t // Bail if the value isn't a number\n\t if (!is$1.number(time)) {\n\t return formatTime(null, displayHours, inverted);\n\t } // Format time component to add leading zero\n\n\n\t var format = function format(value) {\n\t return \"0\".concat(value).slice(-2);\n\t }; // Breakdown to hours, mins, secs\n\n\n\t var hours = getHours(time);\n\t var mins = getMinutes(time);\n\t var secs = getSeconds(time); // Do we need to display hours?\n\n\t if (displayHours || hours > 0) {\n\t hours = \"\".concat(hours, \":\");\n\t } else {\n\t hours = '';\n\t } // Render\n\n\n\t return \"\".concat(inverted && time > 0 ? '-' : '').concat(hours).concat(format(mins), \":\").concat(format(secs));\n\t}\n\n\tvar controls = {\n\t // Get icon URL\n\t getIconUrl: function getIconUrl() {\n\t var url = new URL(this.config.iconUrl, window.location);\n\t var cors = url.host !== window.location.host || browser.isIE && !window.svg4everybody;\n\t return {\n\t url: this.config.iconUrl,\n\t cors: cors\n\t };\n\t },\n\t // Find the UI controls\n\t findElements: function findElements() {\n\t try {\n\t this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper); // Buttons\n\n\t this.elements.buttons = {\n\t play: getElements.call(this, this.config.selectors.buttons.play),\n\t pause: getElement.call(this, this.config.selectors.buttons.pause),\n\t restart: getElement.call(this, this.config.selectors.buttons.restart),\n\t rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n\t fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n\t mute: getElement.call(this, this.config.selectors.buttons.mute),\n\t pip: getElement.call(this, this.config.selectors.buttons.pip),\n\t airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n\t settings: getElement.call(this, this.config.selectors.buttons.settings),\n\t captions: getElement.call(this, this.config.selectors.buttons.captions),\n\t fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen)\n\t }; // Progress\n\n\t this.elements.progress = getElement.call(this, this.config.selectors.progress); // Inputs\n\n\t this.elements.inputs = {\n\t seek: getElement.call(this, this.config.selectors.inputs.seek),\n\t volume: getElement.call(this, this.config.selectors.inputs.volume)\n\t }; // Display\n\n\t this.elements.display = {\n\t buffer: getElement.call(this, this.config.selectors.display.buffer),\n\t currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n\t duration: getElement.call(this, this.config.selectors.display.duration)\n\t }; // Seek tooltip\n\n\t if (is$1.element(this.elements.progress)) {\n\t this.elements.display.seekTooltip = this.elements.progress.querySelector(\".\".concat(this.config.classNames.tooltip));\n\t }\n\n\t return true;\n\t } catch (error) {\n\t // Log it\n\t this.debug.warn('It looks like there is a problem with your custom controls HTML', error); // Restore native video controls\n\n\t this.toggleNativeControls(true);\n\t return false;\n\t }\n\t },\n\t // Create icon\n\t createIcon: function createIcon(type, attributes) {\n\t var namespace = 'http://www.w3.org/2000/svg';\n\t var iconUrl = controls.getIconUrl.call(this);\n\t var iconPath = \"\".concat(!iconUrl.cors ? iconUrl.url : '', \"#\").concat(this.config.iconPrefix); // Create \n\n\t var icon = document.createElementNS(namespace, 'svg');\n\t setAttributes(icon, extend(attributes, {\n\t role: 'presentation',\n\t focusable: 'false'\n\t })); // Create the to reference sprite\n\n\t var use = document.createElementNS(namespace, 'use');\n\t var path = \"\".concat(iconPath, \"-\").concat(type); // Set `href` attributes\n\t // https://github.com/sampotts/plyr/issues/460\n\t // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n\n\t if ('href' in use) {\n\t use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\t } // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n\n\n\t use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path); // Add to \n\n\t icon.appendChild(use);\n\t return icon;\n\t },\n\t // Create hidden text label\n\t createLabel: function createLabel(key) {\n\t var attr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var text = i18n.get(key, this.config);\n\t var attributes = Object.assign({}, attr, {\n\t class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' ')\n\t });\n\t return createElement('span', attributes, text);\n\t },\n\t // Create a badge\n\t createBadge: function createBadge(text) {\n\t if (is$1.empty(text)) {\n\t return null;\n\t }\n\n\t var badge = createElement('span', {\n\t class: this.config.classNames.menu.value\n\t });\n\t badge.appendChild(createElement('span', {\n\t class: this.config.classNames.menu.badge\n\t }, text));\n\t return badge;\n\t },\n\t // Create a
to hide the standard controls and UI\n\n\t if (this.isVimeo && this.supported.ui) {\n\t var height = 240;\n\t var offset = (height - padding) / (height / 50);\n\t this.media.style.transform = \"translateY(-\".concat(offset, \"%)\");\n\t }\n\n\t return {\n\t padding: padding,\n\t ratio: ratio\n\t };\n\t}\n\n\tvar Listeners =\n\t/*#__PURE__*/\n\tfunction () {\n\t function Listeners(player) {\n\t _classCallCheck(this, Listeners);\n\n\t this.player = player;\n\t this.lastKey = null;\n\t this.focusTimer = null;\n\t this.lastKeyDown = null;\n\t this.handleKey = this.handleKey.bind(this);\n\t this.toggleMenu = this.toggleMenu.bind(this);\n\t this.setTabFocus = this.setTabFocus.bind(this);\n\t this.firstTouch = this.firstTouch.bind(this);\n\t } // Handle key presses\n\n\n\t _createClass(Listeners, [{\n\t key: \"handleKey\",\n\t value: function handleKey(event) {\n\t var player = this.player;\n\t var elements = player.elements;\n\t var code = event.keyCode ? event.keyCode : event.which;\n\t var pressed = event.type === 'keydown';\n\t var repeat = pressed && code === this.lastKey; // Bail if a modifier key is set\n\n\t if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n\t return;\n\t } // If the event is bubbled from the media element\n\t // Firefox doesn't get the keycode for whatever reason\n\n\n\t if (!is$1.number(code)) {\n\t return;\n\t } // Seek by the number keys\n\n\n\t var seekByKey = function seekByKey() {\n\t // Divide the max duration into 10th's and times by the number value\n\t player.currentTime = player.duration / 10 * (code - 48);\n\t }; // Handle the key on keydown\n\t // Reset on keyup\n\n\n\t if (pressed) {\n\t // Check focused element\n\t // and if the focused element is not editable (e.g. text input)\n\t // and any that accept key input http://webaim.org/techniques/keyboard/\n\t var focused = document.activeElement;\n\n\t if (is$1.element(focused)) {\n\t var editable = player.config.selectors.editable;\n\t var seek = elements.inputs.seek;\n\n\t if (focused !== seek && matches$1(focused, editable)) {\n\t return;\n\t }\n\n\t if (event.which === 32 && matches$1(focused, 'button, [role^=\"menuitem\"]')) {\n\t return;\n\t }\n\t } // Which keycodes should we prevent default\n\n\n\t var preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79]; // If the code is found prevent default (e.g. prevent scrolling for arrows)\n\n\t if (preventDefault.includes(code)) {\n\t event.preventDefault();\n\t event.stopPropagation();\n\t }\n\n\t switch (code) {\n\t case 48:\n\t case 49:\n\t case 50:\n\t case 51:\n\t case 52:\n\t case 53:\n\t case 54:\n\t case 55:\n\t case 56:\n\t case 57:\n\t // 0-9\n\t if (!repeat) {\n\t seekByKey();\n\t }\n\n\t break;\n\n\t case 32:\n\t case 75:\n\t // Space and K key\n\t if (!repeat) {\n\t player.togglePlay();\n\t }\n\n\t break;\n\n\t case 38:\n\t // Arrow up\n\t player.increaseVolume(0.1);\n\t break;\n\n\t case 40:\n\t // Arrow down\n\t player.decreaseVolume(0.1);\n\t break;\n\n\t case 77:\n\t // M key\n\t if (!repeat) {\n\t player.muted = !player.muted;\n\t }\n\n\t break;\n\n\t case 39:\n\t // Arrow forward\n\t player.forward();\n\t break;\n\n\t case 37:\n\t // Arrow back\n\t player.rewind();\n\t break;\n\n\t case 70:\n\t // F key\n\t player.fullscreen.toggle();\n\t break;\n\n\t case 67:\n\t // C key\n\t if (!repeat) {\n\t player.toggleCaptions();\n\t }\n\n\t break;\n\n\t case 76:\n\t // L key\n\t player.loop = !player.loop;\n\t break;\n\n\t /* case 73:\n\t this.setLoop('start');\n\t break;\n\t case 76:\n\t this.setLoop();\n\t break;\n\t case 79:\n\t this.setLoop('end');\n\t break; */\n\n\t default:\n\t break;\n\t } // Escape is handle natively when in full screen\n\t // So we only need to worry about non native\n\n\n\t if (code === 27 && !player.fullscreen.usingNative && player.fullscreen.active) {\n\t player.fullscreen.toggle();\n\t } // Store last code for next cycle\n\n\n\t this.lastKey = code;\n\t } else {\n\t this.lastKey = null;\n\t }\n\t } // Toggle menu\n\n\t }, {\n\t key: \"toggleMenu\",\n\t value: function toggleMenu(event) {\n\t controls.toggleMenu.call(this.player, event);\n\t } // Device is touch enabled\n\n\t }, {\n\t key: \"firstTouch\",\n\t value: function firstTouch() {\n\t var player = this.player;\n\t var elements = player.elements;\n\t player.touch = true; // Add touch class\n\n\t toggleClass(elements.container, player.config.classNames.isTouch, true);\n\t }\n\t }, {\n\t key: \"setTabFocus\",\n\t value: function setTabFocus(event) {\n\t var player = this.player;\n\t var elements = player.elements;\n\t clearTimeout(this.focusTimer); // Ignore any key other than tab\n\n\t if (event.type === 'keydown' && event.which !== 9) {\n\t return;\n\t } // Store reference to event timeStamp\n\n\n\t if (event.type === 'keydown') {\n\t this.lastKeyDown = event.timeStamp;\n\t } // Remove current classes\n\n\n\t var removeCurrent = function removeCurrent() {\n\t var className = player.config.classNames.tabFocus;\n\t var current = getElements.call(player, \".\".concat(className));\n\t toggleClass(current, className, false);\n\t }; // Determine if a key was pressed to trigger this event\n\n\n\t var wasKeyDown = event.timeStamp - this.lastKeyDown <= 20; // Ignore focus events if a key was pressed prior\n\n\t if (event.type === 'focus' && !wasKeyDown) {\n\t return;\n\t } // Remove all current\n\n\n\t removeCurrent(); // Delay the adding of classname until the focus has changed\n\t // This event fires before the focusin event\n\n\t this.focusTimer = setTimeout(function () {\n\t var focused = document.activeElement; // Ignore if current focus element isn't inside the player\n\n\t if (!elements.container.contains(focused)) {\n\t return;\n\t }\n\n\t toggleClass(document.activeElement, player.config.classNames.tabFocus, true);\n\t }, 10);\n\t } // Global window & document listeners\n\n\t }, {\n\t key: \"global\",\n\t value: function global() {\n\t var toggle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t var player = this.player; // Keyboard shortcuts\n\n\t if (player.config.keyboard.global) {\n\t toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n\t } // Click anywhere closes menu\n\n\n\t toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle); // Detect touch by events\n\n\t once.call(player, document.body, 'touchstart', this.firstTouch); // Tab focus detection\n\n\t toggleListener.call(player, document.body, 'keydown focus blur', this.setTabFocus, toggle, false, true);\n\t } // Container listeners\n\n\t }, {\n\t key: \"container\",\n\t value: function container() {\n\t var player = this.player;\n\t var config = player.config,\n\t elements = player.elements,\n\t timers = player.timers; // Keyboard shortcuts\n\n\t if (!config.keyboard.global && config.keyboard.focused) {\n\t on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n\t } // Toggle controls on mouse events and entering fullscreen\n\n\n\t on.call(player, elements.container, 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen', function (event) {\n\t var controls$$1 = elements.controls; // Remove button states for fullscreen\n\n\t if (controls$$1 && event.type === 'enterfullscreen') {\n\t controls$$1.pressed = false;\n\t controls$$1.hover = false;\n\t } // Show, then hide after a timeout unless another control event occurs\n\n\n\t var show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n\t var delay = 0;\n\n\t if (show) {\n\t ui.toggleControls.call(player, true); // Use longer timeout for touch devices\n\n\t delay = player.touch ? 3000 : 2000;\n\t } // Clear timer\n\n\n\t clearTimeout(timers.controls); // Set new timer to prevent flicker when seeking\n\n\t timers.controls = setTimeout(function () {\n\t return ui.toggleControls.call(player, false);\n\t }, delay);\n\t }); // Force edge to repaint on exit fullscreen\n\t // TODO: Fix weird bug where Edge doesn't re-draw when exiting fullscreen\n\n\t /* if (browser.isEdge) {\n\t on.call(player, elements.container, 'exitfullscreen', () => {\n\t setTimeout(() => repaint(elements.container), 100);\n\t });\n\t } */\n\t // Set a gutter for Vimeo\n\n\t var setGutter = function setGutter(ratio, padding, toggle) {\n\t if (!player.isVimeo) {\n\t return;\n\t }\n\n\t var target = player.elements.wrapper.firstChild;\n\n\t var _ratio$split$map = ratio.split(':').map(Number),\n\t _ratio$split$map2 = _slicedToArray(_ratio$split$map, 2),\n\t height = _ratio$split$map2[1];\n\n\t var _player$embed$ratio$s = player.embed.ratio.split(':').map(Number),\n\t _player$embed$ratio$s2 = _slicedToArray(_player$embed$ratio$s, 2),\n\t videoWidth = _player$embed$ratio$s2[0],\n\t videoHeight = _player$embed$ratio$s2[1];\n\n\t target.style.maxWidth = toggle ? \"\".concat(height / videoHeight * videoWidth, \"px\") : null;\n\t target.style.margin = toggle ? '0 auto' : null;\n\t }; // Resize on fullscreen change\n\n\n\t var setPlayerSize = function setPlayerSize(measure) {\n\t // If we don't need to measure the viewport\n\t if (!measure) {\n\t return setAspectRatio.call(player);\n\t }\n\n\t var rect = elements.container.getBoundingClientRect();\n\t var width = rect.width,\n\t height = rect.height;\n\t return setAspectRatio.call(player, \"\".concat(width, \":\").concat(height));\n\t };\n\n\t var resized = function resized() {\n\t window.clearTimeout(timers.resized);\n\t timers.resized = window.setTimeout(setPlayerSize, 50);\n\t };\n\n\t on.call(player, elements.container, 'enterfullscreen exitfullscreen', function (event) {\n\t var _player$fullscreen = player.fullscreen,\n\t target = _player$fullscreen.target,\n\t usingNative = _player$fullscreen.usingNative; // Ignore for iOS native\n\n\t if (!player.isEmbed || target !== elements.container) {\n\t return;\n\t }\n\n\t var isEnter = event.type === 'enterfullscreen'; // Set the player size when entering fullscreen to viewport size\n\n\t var _setPlayerSize = setPlayerSize(isEnter),\n\t padding = _setPlayerSize.padding,\n\t ratio = _setPlayerSize.ratio; // Set Vimeo gutter\n\n\n\t setGutter(ratio, padding, isEnter); // If not using native fullscreen, we need to check for resizes of viewport\n\n\t if (!usingNative) {\n\t if (isEnter) {\n\t on.call(player, window, 'resize', resized);\n\t } else {\n\t off.call(player, window, 'resize', resized);\n\t }\n\t }\n\t });\n\t } // Listen for media events\n\n\t }, {\n\t key: \"media\",\n\t value: function media() {\n\t var _this = this;\n\n\t var player = this.player;\n\t var elements = player.elements; // Time change on media\n\n\t on.call(player, player.media, 'timeupdate seeking seeked', function (event) {\n\t return controls.timeUpdate.call(player, event);\n\t }); // Display duration\n\n\t on.call(player, player.media, 'durationchange loadeddata loadedmetadata', function (event) {\n\t return controls.durationUpdate.call(player, event);\n\t }); // Check for audio tracks on load\n\t // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point\n\n\t on.call(player, player.media, 'canplay loadeddata', function () {\n\t toggleHidden(elements.volume, !player.hasAudio);\n\t toggleHidden(elements.buttons.mute, !player.hasAudio);\n\t }); // Handle the media finishing\n\n\t on.call(player, player.media, 'ended', function () {\n\t // Show poster on end\n\t if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n\t // Restart\n\t player.restart();\n\t }\n\t }); // Check for buffer progress\n\n\t on.call(player, player.media, 'progress playing seeking seeked', function (event) {\n\t return controls.updateProgress.call(player, event);\n\t }); // Handle volume changes\n\n\t on.call(player, player.media, 'volumechange', function (event) {\n\t return controls.updateVolume.call(player, event);\n\t }); // Handle play/pause\n\n\t on.call(player, player.media, 'playing play pause ended emptied timeupdate', function (event) {\n\t return ui.checkPlaying.call(player, event);\n\t }); // Loading state\n\n\t on.call(player, player.media, 'waiting canplay seeked playing', function (event) {\n\t return ui.checkLoading.call(player, event);\n\t }); // Click video\n\n\t if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n\t // Re-fetch the wrapper\n\t var wrapper = getElement.call(player, \".\".concat(player.config.classNames.video)); // Bail if there's no wrapper (this should never happen)\n\n\t if (!is$1.element(wrapper)) {\n\t return;\n\t } // On click play, pause or restart\n\n\n\t on.call(player, elements.container, 'click', function (event) {\n\t var targets = [elements.container, wrapper]; // Ignore if click if not container or in video wrapper\n\n\t if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n\t return;\n\t } // Touch devices will just show controls (if hidden)\n\n\n\t if (player.touch && player.config.hideControls) {\n\t return;\n\t }\n\n\t if (player.ended) {\n\t _this.proxy(event, player.restart, 'restart');\n\n\t _this.proxy(event, player.play, 'play');\n\t } else {\n\t _this.proxy(event, player.togglePlay, 'play');\n\t }\n\t });\n\t } // Disable right click\n\n\n\t if (player.supported.ui && player.config.disableContextMenu) {\n\t on.call(player, elements.wrapper, 'contextmenu', function (event) {\n\t event.preventDefault();\n\t }, false);\n\t } // Volume change\n\n\n\t on.call(player, player.media, 'volumechange', function () {\n\t // Save to storage\n\t player.storage.set({\n\t volume: player.volume,\n\t muted: player.muted\n\t });\n\t }); // Speed change\n\n\t on.call(player, player.media, 'ratechange', function () {\n\t // Update UI\n\t controls.updateSetting.call(player, 'speed'); // Save to storage\n\n\n\t player.storage.set({\n\t speed: player.speed\n\t });\n\t }); // Quality change\n\n\t on.call(player, player.media, 'qualitychange', function (event) {\n\t // Update UI\n\t controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n\t }); // Update download link when ready and if quality changes\n\n\t on.call(player, player.media, 'ready qualitychange', function () {\n\t controls.setDownloadLink.call(player);\n\t }); // Proxy events to container\n\t // Bubble up key events for Edge\n\n\t var proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\t on.call(player, player.media, proxyEvents, function (event) {\n\t var _event$detail = event.detail,\n\t detail = _event$detail === void 0 ? {} : _event$detail; // Get error details from media\n\n\t if (event.type === 'error') {\n\t detail = player.media.error;\n\t }\n\n\t triggerEvent.call(player, elements.container, event.type, true, detail);\n\t });\n\t } // Run default and custom handlers\n\n\t }, {\n\t key: \"proxy\",\n\t value: function proxy(event, defaultHandler, customHandlerKey) {\n\t var player = this.player;\n\t var customHandler = player.config.listeners[customHandlerKey];\n\t var hasCustomHandler = is$1.function(customHandler);\n\t var returned = true; // Execute custom handler\n\n\t if (hasCustomHandler) {\n\t returned = customHandler.call(player, event);\n\t } // Only call default handler if not prevented in custom handler\n\n\n\t if (returned && is$1.function(defaultHandler)) {\n\t defaultHandler.call(player, event);\n\t }\n\t } // Trigger custom and default handlers\n\n\t }, {\n\t key: \"bind\",\n\t value: function bind(element, type, defaultHandler, customHandlerKey) {\n\t var _this2 = this;\n\n\t var passive = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n\t var player = this.player;\n\t var customHandler = player.config.listeners[customHandlerKey];\n\t var hasCustomHandler = is$1.function(customHandler);\n\t on.call(player, element, type, function (event) {\n\t return _this2.proxy(event, defaultHandler, customHandlerKey);\n\t }, passive && !hasCustomHandler);\n\t } // Listen for control events\n\n\t }, {\n\t key: \"controls\",\n\t value: function controls$$1() {\n\t var _this3 = this;\n\n\t var player = this.player;\n\t var elements = player.elements; // IE doesn't support input event, so we fallback to change\n\n\t var inputEvent = browser.isIE ? 'change' : 'input'; // Play/pause toggle\n\n\t if (elements.buttons.play) {\n\t Array.from(elements.buttons.play).forEach(function (button) {\n\t _this3.bind(button, 'click', player.togglePlay, 'play');\n\t });\n\t } // Pause\n\n\n\t this.bind(elements.buttons.restart, 'click', player.restart, 'restart'); // Rewind\n\n\t this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind'); // Rewind\n\n\t this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward'); // Mute toggle\n\n\t this.bind(elements.buttons.mute, 'click', function () {\n\t player.muted = !player.muted;\n\t }, 'mute'); // Captions toggle\n\n\t this.bind(elements.buttons.captions, 'click', function () {\n\t return player.toggleCaptions();\n\t }); // Download\n\n\t this.bind(elements.buttons.download, 'click', function () {\n\t triggerEvent.call(player, player.media, 'download');\n\t }, 'download'); // Fullscreen toggle\n\n\t this.bind(elements.buttons.fullscreen, 'click', function () {\n\t player.fullscreen.toggle();\n\t }, 'fullscreen'); // Picture-in-Picture\n\n\t this.bind(elements.buttons.pip, 'click', function () {\n\t player.pip = 'toggle';\n\t }, 'pip'); // Airplay\n\n\t this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay'); // Settings menu - click toggle\n\n\t this.bind(elements.buttons.settings, 'click', function (event) {\n\t // Prevent the document click listener closing the menu\n\t event.stopPropagation();\n\n\t controls.toggleMenu.call(player, event);\n\t }); // Settings menu - keyboard toggle\n\t // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n\n\t this.bind(elements.buttons.settings, 'keyup', function (event) {\n\t var code = event.which; // We only care about space and return\n\n\t if (![13, 32].includes(code)) {\n\t return;\n\t } // Because return triggers a click anyway, all we need to do is set focus\n\n\n\t if (code === 13) {\n\t controls.focusFirstMenuItem.call(player, null, true);\n\n\t return;\n\t } // Prevent scroll\n\n\n\t event.preventDefault(); // Prevent playing video (Firefox)\n\n\t event.stopPropagation(); // Toggle menu\n\n\t controls.toggleMenu.call(player, event);\n\t }, null, false // Can't be passive as we're preventing default\n\t ); // Escape closes menu\n\n\t this.bind(elements.settings.menu, 'keydown', function (event) {\n\t if (event.which === 27) {\n\t controls.toggleMenu.call(player, event);\n\t }\n\t }); // Set range input alternative \"value\", which matches the tooltip time (#954)\n\n\t this.bind(elements.inputs.seek, 'mousedown mousemove', function (event) {\n\t var rect = elements.progress.getBoundingClientRect();\n\t var percent = 100 / rect.width * (event.pageX - rect.left);\n\t event.currentTarget.setAttribute('seek-value', percent);\n\t }); // Pause while seeking\n\n\t this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', function (event) {\n\t var seek = event.currentTarget;\n\t var code = event.keyCode ? event.keyCode : event.which;\n\t var attribute = 'play-on-seeked';\n\n\t if (is$1.keyboardEvent(event) && code !== 39 && code !== 37) {\n\t return;\n\t } // Record seek time so we can prevent hiding controls for a few seconds after seek\n\n\n\t player.lastSeekTime = Date.now(); // Was playing before?\n\n\t var play = seek.hasAttribute(attribute); // Done seeking\n\n\t var done = ['mouseup', 'touchend', 'keyup'].includes(event.type); // If we're done seeking and it was playing, resume playback\n\n\t if (play && done) {\n\t seek.removeAttribute(attribute);\n\t player.play();\n\t } else if (!done && player.playing) {\n\t seek.setAttribute(attribute, '');\n\t player.pause();\n\t }\n\t }); // Fix range inputs on iOS\n\t // Super weird iOS bug where after you interact with an ,\n\t // it takes over further interactions on the page. This is a hack\n\n\t if (browser.isIos) {\n\t var inputs = getElements.call(player, 'input[type=\"range\"]');\n\t Array.from(inputs).forEach(function (input) {\n\t return _this3.bind(input, inputEvent, function (event) {\n\t return repaint(event.target);\n\t });\n\t });\n\t } // Seek\n\n\n\t this.bind(elements.inputs.seek, inputEvent, function (event) {\n\t var seek = event.currentTarget; // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n\n\t var seekTo = seek.getAttribute('seek-value');\n\n\t if (is$1.empty(seekTo)) {\n\t seekTo = seek.value;\n\t }\n\n\t seek.removeAttribute('seek-value');\n\t player.currentTime = seekTo / seek.max * player.duration;\n\t }, 'seek'); // Seek tooltip\n\n\t this.bind(elements.progress, 'mouseenter mouseleave mousemove', function (event) {\n\t return controls.updateSeekTooltip.call(player, event);\n\t }); // Preview thumbnails plugin\n\t // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n\n\t this.bind(elements.progress, 'mousemove touchmove', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.startMove(event);\n\t }\n\t }); // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n\n\t this.bind(elements.progress, 'mouseleave click', function () {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.endMove(false, true);\n\t }\n\t }); // Show scrubbing preview\n\n\t this.bind(elements.progress, 'mousedown touchstart', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.startScrubbing(event);\n\t }\n\t });\n\t this.bind(elements.progress, 'mouseup touchend', function (event) {\n\t var previewThumbnails = player.previewThumbnails;\n\n\t if (previewThumbnails && previewThumbnails.loaded) {\n\t previewThumbnails.endScrubbing(event);\n\t }\n\t }); // Polyfill for lower fill in for webkit\n\n\t if (browser.isWebkit) {\n\t Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach(function (element) {\n\t _this3.bind(element, 'input', function (event) {\n\t return controls.updateRangeFill.call(player, event.target);\n\t });\n\t });\n\t } // Current time invert\n\t // Only if one time element is used for both currentTime and duration\n\n\n\t if (player.config.toggleInvert && !is$1.element(elements.display.duration)) {\n\t this.bind(elements.display.currentTime, 'click', function () {\n\t // Do nothing if we're at the start\n\t if (player.currentTime === 0) {\n\t return;\n\t }\n\n\t player.config.invertTime = !player.config.invertTime;\n\n\t controls.timeUpdate.call(player);\n\t });\n\t } // Volume\n\n\n\t this.bind(elements.inputs.volume, inputEvent, function (event) {\n\t player.volume = event.target.value;\n\t }, 'volume'); // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n\n\t this.bind(elements.controls, 'mouseenter mouseleave', function (event) {\n\t elements.controls.hover = !player.touch && event.type === 'mouseenter';\n\t }); // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n\n\t this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', function (event) {\n\t elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n\t }); // Show controls when they receive focus (e.g., when using keyboard tab key)\n\n\t this.bind(elements.controls, 'focusin', function () {\n\t var config = player.config,\n\t elements = player.elements,\n\t timers = player.timers; // Skip transition to prevent focus from scrolling the parent element\n\n\t toggleClass(elements.controls, config.classNames.noTransition, true); // Toggle\n\n\t ui.toggleControls.call(player, true); // Restore transition\n\n\t setTimeout(function () {\n\t toggleClass(elements.controls, config.classNames.noTransition, false);\n\t }, 0); // Delay a little more for mouse users\n\n\t var delay = _this3.touch ? 3000 : 4000; // Clear timer\n\n\t clearTimeout(timers.controls); // Hide again after delay\n\n\t timers.controls = setTimeout(function () {\n\t return ui.toggleControls.call(player, false);\n\t }, delay);\n\t }); // Mouse wheel for volume\n\n\t this.bind(elements.inputs.volume, 'wheel', function (event) {\n\t // Detect \"natural\" scroll - suppored on OS X Safari only\n\t // Other browsers on OS X will be inverted until support improves\n\t var inverted = event.webkitDirectionInvertedFromDevice; // Get delta from event. Invert if `inverted` is true\n\n\t var _map = [event.deltaX, -event.deltaY].map(function (value) {\n\t return inverted ? -value : value;\n\t }),\n\t _map2 = _slicedToArray(_map, 2),\n\t x = _map2[0],\n\t y = _map2[1]; // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n\n\n\t var direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y); // Change the volume by 2%\n\n\t player.increaseVolume(direction / 50); // Don't break page scrolling at max and min\n\n\t var volume = player.media.volume;\n\n\t if (direction === 1 && volume < 1 || direction === -1 && volume > 0) {\n\t event.preventDefault();\n\t }\n\t }, 'volume', false);\n\t }\n\t }]);\n\n\t return Listeners;\n\t}();\n\n\tvar loadjs_umd = createCommonjsModule(function (module, exports) {\n\t(function(root, factory) {\n\t {\n\t module.exports = factory();\n\t }\n\t}(commonjsGlobal, function() {\n\t/**\n\t * Global dependencies.\n\t * @global {Object} document - DOM\n\t */\n\n\tvar devnull = function() {},\n\t bundleIdCache = {},\n\t bundleResultCache = {},\n\t bundleCallbackQueue = {};\n\n\n\t/**\n\t * Subscribe to bundle load event.\n\t * @param {string[]} bundleIds - Bundle ids\n\t * @param {Function} callbackFn - The callback function\n\t */\n\tfunction subscribe(bundleIds, callbackFn) {\n\t // listify\n\t bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n\t var depsNotFound = [],\n\t i = bundleIds.length,\n\t numWaiting = i,\n\t fn,\n\t bundleId,\n\t r,\n\t q;\n\n\t // define callback function\n\t fn = function (bundleId, pathsNotFound) {\n\t if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n\t numWaiting--;\n\t if (!numWaiting) callbackFn(depsNotFound);\n\t };\n\n\t // register callback\n\t while (i--) {\n\t bundleId = bundleIds[i];\n\n\t // execute callback if in result cache\n\t r = bundleResultCache[bundleId];\n\t if (r) {\n\t fn(bundleId, r);\n\t continue;\n\t }\n\n\t // add to callback queue\n\t q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n\t q.push(fn);\n\t }\n\t}\n\n\n\t/**\n\t * Publish bundle load event.\n\t * @param {string} bundleId - Bundle id\n\t * @param {string[]} pathsNotFound - List of files not found\n\t */\n\tfunction publish(bundleId, pathsNotFound) {\n\t // exit if id isn't defined\n\t if (!bundleId) return;\n\n\t var q = bundleCallbackQueue[bundleId];\n\n\t // cache result\n\t bundleResultCache[bundleId] = pathsNotFound;\n\n\t // exit if queue is empty\n\t if (!q) return;\n\n\t // empty callback queue\n\t while (q.length) {\n\t q[0](bundleId, pathsNotFound);\n\t q.splice(0, 1);\n\t }\n\t}\n\n\n\t/**\n\t * Execute callbacks.\n\t * @param {Object or Function} args - The callback args\n\t * @param {string[]} depsNotFound - List of dependencies not found\n\t */\n\tfunction executeCallbacks(args, depsNotFound) {\n\t // accept function as argument\n\t if (args.call) args = {success: args};\n\n\t // success and error callbacks\n\t if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n\t else (args.success || devnull)(args);\n\t}\n\n\n\t/**\n\t * Load individual file.\n\t * @param {string} path - The file path\n\t * @param {Function} callbackFn - The callback function\n\t */\n\tfunction loadFile(path, callbackFn, args, numTries) {\n\t var doc = document,\n\t async = args.async,\n\t maxTries = (args.numRetries || 0) + 1,\n\t beforeCallbackFn = args.before || devnull,\n\t pathStripped = path.replace(/^(css|img)!/, ''),\n\t isCss,\n\t e;\n\n\t numTries = numTries || 0;\n\n\t if (/(^css!|\\.css$)/.test(path)) {\n\t isCss = true;\n\n\t // css\n\t e = doc.createElement('link');\n\t e.rel = 'stylesheet';\n\t e.href = pathStripped; //.replace(/^css!/, ''); // remove \"css!\" prefix\n\t } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n\t // image\n\t e = doc.createElement('img');\n\t e.src = pathStripped; \n\t } else {\n\t // javascript\n\t e = doc.createElement('script');\n\t e.src = path;\n\t e.async = async === undefined ? true : async;\n\t }\n\n\t e.onload = e.onerror = e.onbeforeload = function (ev) {\n\t var result = ev.type[0];\n\n\t // Note: The following code isolates IE using `hideFocus` and treats empty\n\t // stylesheets as failures to get around lack of onerror support\n\t if (isCss && 'hideFocus' in e) {\n\t try {\n\t if (!e.sheet.cssText.length) result = 'e';\n\t } catch (x) {\n\t // sheets objects created from load errors don't allow access to\n\t // `cssText` (unless error is Code:18 SecurityError)\n\t if (x.code != 18) result = 'e';\n\t }\n\t }\n\n\t // handle retries in case of load failure\n\t if (result == 'e') {\n\t // increment counter\n\t numTries += 1;\n\n\t // exit function and try again\n\t if (numTries < maxTries) {\n\t return loadFile(path, callbackFn, args, numTries);\n\t }\n\t }\n\n\t // execute callback\n\t callbackFn(path, result, ev.defaultPrevented);\n\t };\n\n\t // add to document (unless callback returns `false`)\n\t if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n\t}\n\n\n\t/**\n\t * Load multiple files.\n\t * @param {string[]} paths - The file paths\n\t * @param {Function} callbackFn - The callback function\n\t */\n\tfunction loadFiles(paths, callbackFn, args) {\n\t // listify paths\n\t paths = paths.push ? paths : [paths];\n\n\t var numWaiting = paths.length,\n\t x = numWaiting,\n\t pathsNotFound = [],\n\t fn,\n\t i;\n\n\t // define callback function\n\t fn = function(path, result, defaultPrevented) {\n\t // handle error\n\t if (result == 'e') pathsNotFound.push(path);\n\n\t // handle beforeload event. If defaultPrevented then that means the load\n\t // will be blocked (ex. Ghostery/ABP on Safari)\n\t if (result == 'b') {\n\t if (defaultPrevented) pathsNotFound.push(path);\n\t else return;\n\t }\n\n\t numWaiting--;\n\t if (!numWaiting) callbackFn(pathsNotFound);\n\t };\n\n\t // load scripts\n\t for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n\t}\n\n\n\t/**\n\t * Initiate script load and register bundle.\n\t * @param {(string|string[])} paths - The file paths\n\t * @param {(string|Function)} [arg1] - The bundleId or success callback\n\t * @param {Function} [arg2] - The success or error callback\n\t * @param {Function} [arg3] - The error callback\n\t */\n\tfunction loadjs(paths, arg1, arg2) {\n\t var bundleId,\n\t args;\n\n\t // bundleId (if string)\n\t if (arg1 && arg1.trim) bundleId = arg1;\n\n\t // args (default is {})\n\t args = (bundleId ? arg2 : arg1) || {};\n\n\t // throw error if bundle is already defined\n\t if (bundleId) {\n\t if (bundleId in bundleIdCache) {\n\t throw \"LoadJS\";\n\t } else {\n\t bundleIdCache[bundleId] = true;\n\t }\n\t }\n\n\t // load scripts\n\t loadFiles(paths, function (pathsNotFound) {\n\t // execute callbacks\n\t executeCallbacks(args, pathsNotFound);\n\n\t // publish bundle load event\n\t publish(bundleId, pathsNotFound);\n\t }, args);\n\t}\n\n\n\t/**\n\t * Execute callbacks when dependencies have been satisfied.\n\t * @param {(string|string[])} deps - List of bundle ids\n\t * @param {Object} args - success/error arguments\n\t */\n\tloadjs.ready = function ready(deps, args) {\n\t // subscribe to bundle load event\n\t subscribe(deps, function (depsNotFound) {\n\t // execute callbacks\n\t executeCallbacks(args, depsNotFound);\n\t });\n\n\t return loadjs;\n\t};\n\n\n\t/**\n\t * Manually satisfy bundle dependencies.\n\t * @param {string} bundleId - The bundle id\n\t */\n\tloadjs.done = function done(bundleId) {\n\t publish(bundleId, []);\n\t};\n\n\n\t/**\n\t * Reset loadjs dependencies statuses\n\t */\n\tloadjs.reset = function reset() {\n\t bundleIdCache = {};\n\t bundleResultCache = {};\n\t bundleCallbackQueue = {};\n\t};\n\n\n\t/**\n\t * Determine if bundle has already been defined\n\t * @param String} bundleId - The bundle id\n\t */\n\tloadjs.isDefined = function isDefined(bundleId) {\n\t return bundleId in bundleIdCache;\n\t};\n\n\n\t// export\n\treturn loadjs;\n\n\t}));\n\t});\n\n\t// ==========================================================================\n\tfunction loadScript(url) {\n\t return new Promise(function (resolve, reject) {\n\t loadjs_umd(url, {\n\t success: resolve,\n\t error: reject\n\t });\n\t });\n\t}\n\n\tfunction parseId(url) {\n\t if (is$1.empty(url)) {\n\t return null;\n\t }\n\n\t if (is$1.number(Number(url))) {\n\t return url;\n\t }\n\n\t var regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n\t return url.match(regex) ? RegExp.$2 : url;\n\t} // Set playback state and trigger change (only on actual change)\n\n\n\tfunction assurePlaybackState(play) {\n\t if (play && !this.embed.hasPlayed) {\n\t this.embed.hasPlayed = true;\n\t }\n\n\t if (this.media.paused === play) {\n\t this.media.paused = !play;\n\t triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n\t }\n\t}\n\n\tvar vimeo = {\n\t setup: function setup() {\n\t var _this = this;\n\n\t // Add embed class for responsive\n\t toggleClass(this.elements.wrapper, this.config.classNames.embed, true); // Set intial ratio\n\n\t setAspectRatio.call(this); // Load the API if not already\n\n\t if (!is$1.object(window.Vimeo)) {\n\t loadScript(this.config.urls.vimeo.sdk).then(function () {\n\t vimeo.ready.call(_this);\n\t }).catch(function (error) {\n\t _this.debug.warn('Vimeo API failed to load', error);\n\t });\n\t } else {\n\t vimeo.ready.call(this);\n\t }\n\t },\n\t // API Ready\n\t ready: function ready$$1() {\n\t var _this2 = this;\n\n\t var player = this;\n\t var config = player.config.vimeo; // Get Vimeo params for the iframe\n\n\t var params = buildUrlParams(extend({}, {\n\t loop: player.config.loop.active,\n\t autoplay: player.autoplay,\n\t muted: player.muted,\n\t gesture: 'media',\n\t playsinline: !this.config.fullscreen.iosNative\n\t }, config)); // Get the source URL or ID\n\n\t var source = player.media.getAttribute('src'); // Get from
if needed\n\n\t if (is$1.empty(source)) {\n\t source = player.media.getAttribute(player.config.attributes.embed.id);\n\t }\n\n\t var id = parseId(source); // Build an iframe\n\n\t var iframe = createElement('iframe');\n\t var src = format(player.config.urls.vimeo.iframe, id, params);\n\t iframe.setAttribute('src', src);\n\t iframe.setAttribute('allowfullscreen', '');\n\t iframe.setAttribute('allowtransparency', '');\n\t iframe.setAttribute('allow', 'autoplay'); // Get poster, if already set\n\n\t var poster = player.poster; // Inject the package\n\n\t var wrapper = createElement('div', {\n\t poster: poster,\n\t class: player.config.classNames.embedContainer\n\t });\n\t wrapper.appendChild(iframe);\n\t player.media = replaceElement(wrapper, player.media); // Get poster image\n\n\t fetch(format(player.config.urls.vimeo.api, id), 'json').then(function (response) {\n\t if (is$1.empty(response)) {\n\t return;\n\t } // Get the URL for thumbnail\n\n\n\t var url = new URL(response[0].thumbnail_large); // Get original image\n\n\t url.pathname = \"\".concat(url.pathname.split('_')[0], \".jpg\"); // Set and show poster\n\n\t ui.setPoster.call(player, url.href).catch(function () {});\n\t }); // Setup instance\n\t // https://github.com/vimeo/player.js\n\n\t player.embed = new window.Vimeo.Player(iframe, {\n\t autopause: player.config.autopause,\n\t muted: player.muted\n\t });\n\t player.media.paused = true;\n\t player.media.currentTime = 0; // Disable native text track rendering\n\n\t if (player.supported.ui) {\n\t player.embed.disableTextTrack();\n\t } // Create a faux HTML5 API using the Vimeo API\n\n\n\t player.media.play = function () {\n\t assurePlaybackState.call(player, true);\n\t return player.embed.play();\n\t };\n\n\t player.media.pause = function () {\n\t assurePlaybackState.call(player, false);\n\t return player.embed.pause();\n\t };\n\n\t player.media.stop = function () {\n\t player.pause();\n\t player.currentTime = 0;\n\t }; // Seeking\n\n\n\t var currentTime = player.media.currentTime;\n\t Object.defineProperty(player.media, 'currentTime', {\n\t get: function get() {\n\t return currentTime;\n\t },\n\t set: function set(time) {\n\t // Vimeo will automatically play on seek if the video hasn't been played before\n\t // Get current paused state and volume etc\n\t var embed = player.embed,\n\t media = player.media,\n\t paused = player.paused,\n\t volume = player.volume;\n\t var restorePause = paused && !embed.hasPlayed; // Set seeking state and trigger event\n\n\t media.seeking = true;\n\t triggerEvent.call(player, media, 'seeking'); // If paused, mute until seek is complete\n\n\t Promise.resolve(restorePause && embed.setVolume(0)) // Seek\n\t .then(function () {\n\t return embed.setCurrentTime(time);\n\t }) // Restore paused\n\t .then(function () {\n\t return restorePause && embed.pause();\n\t }) // Restore volume\n\t .then(function () {\n\t return restorePause && embed.setVolume(volume);\n\t }).catch(function () {// Do nothing\n\t });\n\t }\n\t }); // Playback speed\n\n\t var speed = player.config.speed.selected;\n\t Object.defineProperty(player.media, 'playbackRate', {\n\t get: function get() {\n\t return speed;\n\t },\n\t set: function set(input) {\n\t player.embed.setPlaybackRate(input).then(function () {\n\t speed = input;\n\t triggerEvent.call(player, player.media, 'ratechange');\n\t }).catch(function (error) {\n\t // Hide menu item (and menu if empty)\n\t if (error.name === 'Error') {\n\t controls.setSpeedMenu.call(player, []);\n\t }\n\t });\n\t }\n\t }); // Volume\n\n\t var volume = player.config.volume;\n\t Object.defineProperty(player.media, 'volume', {\n\t get: function get() {\n\t return volume;\n\t },\n\t set: function set(input) {\n\t player.embed.setVolume(input).then(function () {\n\t volume = input;\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t });\n\t }\n\t }); // Muted\n\n\t var muted = player.config.muted;\n\t Object.defineProperty(player.media, 'muted', {\n\t get: function get() {\n\t return muted;\n\t },\n\t set: function set(input) {\n\t var toggle = is$1.boolean(input) ? input : false;\n\t player.embed.setVolume(toggle ? 0 : player.config.volume).then(function () {\n\t muted = toggle;\n\t triggerEvent.call(player, player.media, 'volumechange');\n\t });\n\t }\n\t }); // Loop\n\n\t var loop = player.config.loop;\n\t Object.defineProperty(player.media, 'loop', {\n\t get: function get() {\n\t return loop;\n\t },\n\t set: function set(input) {\n\t var toggle = is$1.boolean(input) ? input : player.config.loop.active;\n\t player.embed.setLoop(toggle).then(function () {\n\t loop = toggle;\n\t });\n\t }\n\t }); // Source\n\n\t var currentSrc;\n\t player.embed.getVideoUrl().then(function (value) {\n\t currentSrc = value;\n\t controls.setDownloadLink.call(player);\n\t }).catch(function (error) {\n\t _this2.debug.warn(error);\n\t });\n\t Object.defineProperty(player.media, 'currentSrc', {\n\t get: function get() {\n\t return currentSrc;\n\t }\n\t }); // Ended\n\n\t Object.defineProperty(player.media, 'ended', {\n\t get: function get() {\n\t return player.currentTime === player.duration;\n\t }\n\t }); // Set aspect ratio based on video size\n\n\t Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(function (dimensions) {\n\t var _dimensions = _slicedToArray(dimensions, 2),\n\t width = _dimensions[0],\n\t height = _dimensions[1];\n\n\t player.embed.ratio = \"\".concat(width, \":\").concat(height);\n\t setAspectRatio.call(_this2, player.embed.ratio);\n\t }); // Set autopause\n\n\t player.embed.setAutopause(player.config.autopause).then(function (state) {\n\t player.config.autopause = state;\n\t }); // Get title\n\n\t player.embed.getVideoTitle().then(function (title) {\n\t player.config.title = title;\n\t ui.setTitle.call(_this2);\n\t }); // Get current time\n\n\t player.embed.getCurrentTime().then(function (value) {\n\t currentTime = value;\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t }); // Get duration\n\n\t player.embed.getDuration().then(function (value) {\n\t player.media.duration = value;\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }); // Get captions\n\n\t player.embed.getTextTracks().then(function (tracks) {\n\t player.media.textTracks = tracks;\n\t captions.setup.call(player);\n\t });\n\t player.embed.on('cuechange', function (_ref) {\n\t var _ref$cues = _ref.cues,\n\t cues = _ref$cues === void 0 ? [] : _ref$cues;\n\t var strippedCues = cues.map(function (cue) {\n\t return stripHTML(cue.text);\n\t });\n\t captions.updateCues.call(player, strippedCues);\n\t });\n\t player.embed.on('loaded', function () {\n\t // Assure state and events are updated on autoplay\n\t player.embed.getPaused().then(function (paused) {\n\t assurePlaybackState.call(player, !paused);\n\n\t if (!paused) {\n\t triggerEvent.call(player, player.media, 'playing');\n\t }\n\t });\n\n\t if (is$1.element(player.embed.element) && player.supported.ui) {\n\t var frame = player.embed.element; // Fix keyboard focus issues\n\t // https://github.com/sampotts/plyr/issues/317\n\n\t frame.setAttribute('tabindex', -1);\n\t }\n\t });\n\t player.embed.on('play', function () {\n\t assurePlaybackState.call(player, true);\n\t triggerEvent.call(player, player.media, 'playing');\n\t });\n\t player.embed.on('pause', function () {\n\t assurePlaybackState.call(player, false);\n\t });\n\t player.embed.on('timeupdate', function (data) {\n\t player.media.seeking = false;\n\t currentTime = data.seconds;\n\t triggerEvent.call(player, player.media, 'timeupdate');\n\t });\n\t player.embed.on('progress', function (data) {\n\t player.media.buffered = data.percent;\n\t triggerEvent.call(player, player.media, 'progress'); // Check all loaded\n\n\t if (parseInt(data.percent, 10) === 1) {\n\t triggerEvent.call(player, player.media, 'canplaythrough');\n\t } // Get duration as if we do it before load, it gives an incorrect value\n\t // https://github.com/sampotts/plyr/issues/891\n\n\n\t player.embed.getDuration().then(function (value) {\n\t if (value !== player.media.duration) {\n\t player.media.duration = value;\n\t triggerEvent.call(player, player.media, 'durationchange');\n\t }\n\t });\n\t });\n\t player.embed.on('seeked', function () {\n\t player.media.seeking = false;\n\t triggerEvent.call(player, player.media, 'seeked');\n\t });\n\t player.embed.on('ended', function () {\n\t player.media.paused = true;\n\t triggerEvent.call(player, player.media, 'ended');\n\t });\n\t player.embed.on('error', function (detail) {\n\t player.media.error = detail;\n\t triggerEvent.call(player, player.media, 'error');\n\t }); // Rebuild UI\n\n\t setTimeout(function () {\n\t return ui.build.call(player);\n\t }, 0);\n\t }\n\t};\n\n\t// ==========================================================================\n\n\tfunction parseId$1(url) {\n\t if (is$1.empty(url)) {\n\t return null;\n\t }\n\n\t var regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n\t return url.match(regex) ? RegExp.$2 : url;\n\t} // Set playback state and trigger change (only on actual change)\n\n\n\tfunction assurePlaybackState$1(play) {\n\t if (play && !this.embed.hasPlayed) {\n\t this.embed.hasPlayed = true;\n\t }\n\n\t if (this.media.paused === play) {\n\t this.media.paused = !play;\n\t triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n\t }\n\t}\n\n\tvar youtube = {\n\t setup: function setup() {\n\t var _this = this;\n\n\t // Add embed class for responsive\n\t toggleClass(this.elements.wrapper, this.config.classNames.embed, true); // Set aspect ratio\n\n\t setAspectRatio.call(this); // Setup API\n\n\t if (is$1.object(window.YT) && is$1.function(window.YT.Player)) {\n\t youtube.ready.call(this);\n\t } else {\n\t // Load the API\n\t loadScript(this.config.urls.youtube.sdk).catch(function (error) {\n\t _this.debug.warn('YouTube API failed to load', error);\n\t }); // Setup callback for the API\n\t // YouTube has it's own system of course...\n\n\t window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || []; // Add to queue\n\n\t window.onYouTubeReadyCallbacks.push(function () {\n\t youtube.ready.call(_this);\n\t }); // Set callback to process queue\n\n\t window.onYouTubeIframeAPIReady = function () {\n\t window.onYouTubeReadyCallbacks.forEach(function (callback) {\n\t callback();\n\t });\n\t };\n\t }\n\t },\n\t // Get the media title\n\t getTitle: function getTitle(videoId) {\n\t var _this2 = this;\n\n\t // Try via undocumented API method first\n\t // This method disappears now and then though...\n\t // https://github.com/sampotts/plyr/issues/709\n\t if (is$1.function(this.embed.getVideoData)) {\n\t var _this$embed$getVideoD = this.embed.getVideoData(),\n\t title = _this$embed$getVideoD.title;\n\n\t if (is$1.empty(title)) {\n\t this.config.title = title;\n\t ui.setTitle.call(this);\n\t return;\n\t }\n\t } // Or via Google API\n\n\n\t var key = this.config.keys.google;\n\n\t if (is$1.string(key) && !is$1.empty(key)) {\n\t var url = format(this.config.urls.youtube.api, videoId, key);\n\t fetch(url).then(function (result) {\n\t if (is$1.object(result)) {\n\t _this2.config.title = result.items[0].snippet.title;\n\t ui.setTitle.call(_this2);\n\t }\n\t }).catch(function () {});\n\t }\n\t },\n\t // API ready\n\t ready: function ready$$1() {\n\t var player = this; // Ignore already setup (race condition)\n\n\t var currentId = player.media.getAttribute('id');\n\n\t if (!is$1.empty(currentId) && currentId.startsWith('youtube-')) {\n\t return;\n\t } // Get the source URL or ID\n\n\n\t var source = player.media.getAttribute('src'); // Get from
if needed\n\n\t if (is$1.empty(source)) {\n\t source = player.media.getAttribute(this.config.attributes.embed.id);\n\t } // Replace the