diff --git a/docs/bundle.359c0.js b/docs/bundle.359c0.js new file mode 100644 index 0000000..3ddc168 --- /dev/null +++ b/docs/bundle.359c0.js @@ -0,0 +1,3 @@ +/*! For license information please see bundle.359c0.js.LICENSE.txt */ +!function(t){function e(e){for(var n,r,o=e[0],a=e[1],c=0,u=[];c"}return t.event_id||""}function s(t){var e=i();if(!("console"in e))return t();var n=e.console,r={};["debug","info","warn","error","log","assert"].forEach((function(t){t in e.console&&n[t].__sentry_original__&&(r[t]=n[t],n[t]=n[t].__sentry_original__)}));var o=t();return Object.keys(r).forEach((function(t){n[t]=r[t]})),o}function l(t,e,n){t.exception=t.exception||{},t.exception.values=t.exception.values||[],t.exception.values[0]=t.exception.values[0]||{},t.exception.values[0].value=t.exception.values[0].value||e||"",t.exception.values[0].type=t.exception.values[0].type||n||"Error"}function f(t,e){void 0===e&&(e={});try{t.exception.values[0].mechanism=t.exception.values[0].mechanism||{},Object.keys(e).forEach((function(n){t.exception.values[0].mechanism[n]=e[n]}))}catch(t){}}function p(){try{return document.location.href}catch(t){return""}}function h(t){try{for(var e=t,n=[],r=0,o=0,i=" > ".length,a=void 0;e&&r++<5&&!("html"===(a=d(e))||r>1&&o+n.length*i+a.length>=80);)n.push(a),o+=a.length,e=e.parentNode;return n.reverse().join(" > ")}catch(t){return""}}function d(t){var e,n,r,o,i,a=t,c=[];if(!a||!a.tagName)return"";if(c.push(a.tagName.toLowerCase()),a.id&&c.push("#"+a.id),(e=a.className)&&Object(g.k)(e))for(n=e.split(/\s+/),i=0;i"}catch(t){return""}}n.d(e,"i",(function(){return o})),n.d(e,"f",(function(){return i})),n.d(e,"m",(function(){return a})),n.d(e,"k",(function(){return c})),n.d(e,"d",(function(){return u})),n.d(e,"c",(function(){return s})),n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return f})),n.d(e,"g",(function(){return p})),n.d(e,"h",(function(){return h})),n.d(e,"l",(function(){return _})),n.d(e,"j",(function(){return v})),n.d(e,"e",(function(){return y}));var g=n("E6vx"),m=(n("dbjm"),{}),b=Date.now(),E=0,O={now:function(){var t=Date.now()-b;return te.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:(e=t.props.path,c(e).map(u).join(""));var e}(t),t.props}function c(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function u(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function s(){var t;return""+((t=g&&g.location?g.location:g&&g.getCurrentLocation?g.getCurrentLocation():"undefined"!=typeof location?location:E).pathname||"")+(t.search||"")}function l(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=m.length;e--;)if(m[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),g&&g[e]?g[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),f(t)}function f(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){m.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;g&&(this.unlisten=g.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),m.splice(m.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=o(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return r(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,r=t.onChange,o=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),o,!0),a=i[0]||null,c=this.previousUrl;return o!==c&&(this.previousUrl=o,"function"==typeof r&&r({router:this,url:o,previous:c,active:i,current:a})),a},e}(v.Component);w.subscribers=b,w.getCurrentUrl=s,w.route=l,w.Router=w,w.Route=function(t){return Object(v.createElement)(t.component,t)},w.Link=function(t){return Object(v.createElement)("a",r({onClick:h},t))},w.exec=o,e.a=w},afj4:function(){},bb6g:function(t,e,n){"use strict";function r(t,e){function n(){this.constructor=t}c(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function o(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function i(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function a(){for(var t=[],e=0;er&&(e=r);var o=Math.max(e-60,0);o<5&&(o=0);var i=Math.min(o+140,r);return i>r-5&&(i=r),i===r&&(o=Math.max(i-140,0)),n=n.slice(o,i),o>0&&(n="'{snip} "+n),i3)for(n=[n],r=3;r2&&(e.children=B.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function T(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var r,o=this;return this.getChildContext||(r=[],this.getChildContext=function(){return e[n.__c]=o,e},this.shouldComponentUpdate=function(t){o.props.value!==t.value&&r.some((function(e){e.context=t.value,p(e)}))},this.sub=function(t){r.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){r.splice(r.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return j})),n.d(e,"hydrate",(function(){return k})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return u})),n.d(e,"createRef",(function(){return c})),n.d(e,"isValidElement",(function(){return R})),n.d(e,"Component",(function(){return s})),n.d(e,"cloneElement",(function(){return S})),n.d(e,"createContext",(function(){return T})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return w})),n.d(e,"options",(function(){return C}));var C,R,I,P,L,N,U,D,A={},B=[],M=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;C={__e:function(t,e){for(var n,r;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(r=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(r=!0,n.componentDidCatch(t)),r)return p(n.__E=n)}catch(e){t=e}throw t}},R=function(t){return null!=t&&void 0===t.constructor},s.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=r({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&r(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),p(this))},s.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),p(this))},s.prototype.render=u,I=[],P=0,L="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,U=A,D=0},mdyV:function(t,e,n){"use strict";n.r(e);var r=n("hosL"),o=r.h,i=r.render,a=function(t){return t&&t.default?t.default:t};if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw.js"),"function"==typeof a(n("QfWi"))){var c=document.getElementById("preact_root")||document.body.firstElementChild;0,function(){var t=a(n("QfWi")),e={},r=document.querySelector('[type="__PREACT_CLI_DATA__"]');r&&(e=JSON.parse(r.innerHTML).preRenderData||e);var u;e.url&&(u=e.url);c=i(o(t,{CLI_DATA:{preRenderData:e}}),document.body,c)}()}},pCvA:function(t){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},tZ4O:function(t,e,n){"use strict";(function(t){function r(t,e,n){if(e in t){var r=t[e],o=n(r);if("function"==typeof o)try{o.prototype=o.prototype||{},Object.defineProperties(o,{__sentry_original__:{enumerable:!1,value:r}})}catch(t){}t[e]=o}}function o(t){return Object.keys(t).map((function(e){return encodeURIComponent(e)+"="+encodeURIComponent(t[e])})).join("&")}function i(t){if(Object(p.d)(t)){var e=t,n={message:e.message,name:e.name,stack:e.stack};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}if(Object(p.f)(t)){var o=t,i={};i.type=o.type;try{i.target=Object(p.c)(o.target)?Object(d.h)(o.target):Object.prototype.toString.call(o.target)}catch(t){i.target=""}try{i.currentTarget=Object(p.c)(o.currentTarget)?Object(d.h)(o.currentTarget):Object.prototype.toString.call(o.currentTarget)}catch(t){i.currentTarget=""}for(var r in"undefined"!=typeof CustomEvent&&Object(p.g)(t,CustomEvent)&&(i.detail=o.detail),o)Object.prototype.hasOwnProperty.call(o,r)&&(i[r]=o);return i}return t}function a(t){return function(t){return~-encodeURI(t).split(/%..|./).length}(JSON.stringify(t))}function c(t,e,n){void 0===e&&(e=3),void 0===n&&(n=102400);var r=l(t,e);return a(r)>n?c(t,e-1,n):r}function u(e,n){return"domain"===n&&e&&"object"==typeof e&&e._events?"[Domain]":"domainEmitter"===n?"[DomainEmitter]":void 0!==t&&e===t?"[Global]":"undefined"!=typeof window&&e===window?"[Window]":"undefined"!=typeof document&&e===document?"[Document]":Object(p.l)(e)?"[SyntheticEvent]":"number"==typeof e&&e!=e?"[NaN]":void 0===e?"[undefined]":"function"==typeof e?"[Function: "+Object(d.e)(e)+"]":e}function s(t,e,n,r){if(void 0===n&&(n=1/0),void 0===r&&(r=new h.a),0===n)return function(t){var e=Object.prototype.toString.call(t);if("string"==typeof t)return t;if("[object Object]"===e)return"[Object]";if("[object Array]"===e)return"[Array]";var n=u(t);return Object(p.i)(n)?n:e}(e);if(null!=e&&"function"==typeof e.toJSON)return e.toJSON();var o=u(e,t);if(Object(p.i)(o))return o;var a=i(e),c=Array.isArray(e)?[]:{};if(r.memoize(e))return"[Circular ~]";for(var l in a)Object.prototype.hasOwnProperty.call(a,l)&&(c[l]=s(l,a[l],n-1,r));return r.unmemoize(e),c}function l(t,e){try{return JSON.parse(JSON.stringify(t,(function(t,n){return s(t,n,e)})))}catch(t){return"**non-serializable**"}}function f(t,e){void 0===e&&(e=40);var n=Object.keys(i(t));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=e)return Object(_.d)(n[0],e);for(var r=n.length;r>0;r--){var o=n.slice(0,r).join(", ");if(!(o.length>e))return r===n.length?o:Object(_.d)(o,e)}return""}n.d(e,"b",(function(){return r})),n.d(e,"e",(function(){return o})),n.d(e,"d",(function(){return c})),n.d(e,"c",(function(){return l})),n.d(e,"a",(function(){return f}));n("bb6g");var p=n("E6vx"),h=n("7UEW"),d=n("3ZRO"),_=n("dbjm")}).call(this,n("pCvA"))},ve3R:function(t,e,n){"use strict";function r(){return(r=Object.assign||function(t){for(var e=1;e=0;p--){var h=a[p];"."===h?i(a,p):".."===h?(i(a,p),f++):f&&(i(a,p),f--)}if(!s)for(;f--;f)a.unshift("..");!s||""===a[0]||a[0]&&o(a[0])||a.unshift("");var d=a.join("/");return n&&"/"!==d.substr(-1)&&(d+="/"),d},m=function(t){if(!t)throw new Error("Invariant failed")},b=!("undefined"==typeof window||!window.document||!window.document.createElement),E={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+c(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:c,decodePath:a},slash:{encodePath:a,decodePath:a}}},z8zl:function(t,e,n){"use strict";function r(){var t=Object(lt.f)();return t.__SENTRY__=t.__SENTRY__||{},t.__SENTRY__.globalEventProcessors=t.__SENTRY__.globalEventProcessors||[],t.__SENTRY__.globalEventProcessors}function o(t){r().push(t)}function i(){var t=Object(lt.f)();return t.__SENTRY__=t.__SENTRY__||{extensions:{},hub:void 0},t}function a(t){var e=i(),n=s(e);return l(e,t),n}function c(){var t=i();return u(t)&&!s(t).isOlderThan(3)||l(t,new bt),Object(lt.i)()?function(t){try{var e=i().__SENTRY__;if(!e||!e.extensions||!e.extensions.domain)return s(t);var n=e.extensions.domain.active;if(!n)return s(t);if(!u(n)||s(n).isOlderThan(3)){var r=s(t).getStackTop();l(n,new bt(r.client,ft.clone(r.scope)))}return s(n)}catch(e){return s(t)}}(t):s(t)}function u(t){return!!(t&&t.__SENTRY__&&t.__SENTRY__.hub)}function s(t){return t&&t.__SENTRY__&&t.__SENTRY__.hub||(t.__SENTRY__=t.__SENTRY__||{},t.__SENTRY__.hub=new bt),t.__SENTRY__.hub}function l(t,e){return!!t&&(t.__SENTRY__=t.__SENTRY__||{},t.__SENTRY__.hub=e,!0)}function f(t){for(var e=[],n=1;n]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,o=t.stacktrace.split("\n"),i=[],a=0;a eval")>-1&&(e=Ut.exec(n[3]))?(n[1]=n[1]||"eval",n[3]=e[1],n[4]=e[2],n[5]=""):0!==a||n[5]||void 0===t.columnNumber||(o[0].column=t.columnNumber+1),r={url:n[3],func:n[1]||"?",args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}!r.func&&r.line&&(r.func="?"),o.push(r)}if(!o.length)return null;return{message:R(t),name:t.name,stack:o}}(t))return C(e,n)}catch(t){}return{message:R(t),name:t&&t.name,stack:[],failed:!0}}function C(t,e){try{return at.a({},t,{stack:t.stack.slice(e)})}catch(e){return t}}function R(t){var e=t&&t.message;return e?e.error&&"string"==typeof e.error.message?e.error.message:e:"No error message"}function I(t){var e=L(t.stack),n={type:t.name,value:t.message};return e&&e.length&&(n.stacktrace={frames:e}),void 0===n.type&&""===n.value&&(n.value="Unrecoverable error caught"),n}function P(t){return{exception:{values:[I(t)]}}}function L(t){if(!t||!t.length)return[];var e=t,n=e[0].func||"",r=e[e.length-1].func||"";return-1===n.indexOf("captureMessage")&&-1===n.indexOf("captureException")||(e=e.slice(1)),-1!==r.indexOf("sentryWrapped")&&(e=e.slice(0,-1)),e.map((function(t){return{colno:null===t.column?void 0:t.column,filename:t.url||e[0].url,function:t.func||"?",in_app:!0,lineno:null===t.line?void 0:t.line}})).slice(0,50).reverse()}function N(t,e,n){var r;if(void 0===n&&(n={}),Object(ut.e)(t)&&t.error)return r=P(T(t=t.error));if(Object(ut.a)(t)||Object(ut.b)(t)){var o=t,i=o.name||(Object(ut.a)(o)?"DOMError":"DOMException"),a=o.message?i+": "+o.message:i;return r=U(a,e,n),Object(lt.b)(r,a),r}return Object(ut.d)(t)?r=P(T(t)):Object(ut.h)(t)||Object(ut.f)(t)?(r=function(t,e,n){var r={exception:{values:[{type:Object(ut.f)(t)?t.constructor.name:n?"UnhandledRejection":"Error",value:"Non-Error "+(n?"promise rejection":"exception")+" captured with keys: "+Object(jt.a)(t)}]},extra:{__serialized__:Object(jt.d)(t)}};if(e){var o=L(T(e).stack);r.stacktrace={frames:o}}return r}(t,e,n.rejection),Object(lt.a)(r,{synthetic:!0}),r):(r=U(t,e,n),Object(lt.b)(r,""+t,void 0),Object(lt.a)(r,{synthetic:!0}),r)}function U(t,e,n){void 0===n&&(n={});var r={message:t};if(n.attachStacktrace&&e){var o=L(T(e).stack);r.stacktrace={frames:o}}return r}function D(){return Xt>0}function A(){Xt+=1,setTimeout((function(){Xt-=1}))}function B(t,e,n){if(void 0===e&&(e={}),"function"!=typeof t)return t;try{if(t.__sentry__)return t;if(t.__sentry_wrapped__)return t.__sentry_wrapped__}catch(e){return t}var r=function(){var r=Array.prototype.slice.call(arguments);try{n&&"function"==typeof n&&n.apply(this,arguments);var o=r.map((function(t){return B(t,e)}));return t.handleEvent?t.handleEvent.apply(this,o):t.apply(this,o)}catch(t){throw A(),w((function(n){n.addEventProcessor((function(t){var n=at.a({},t);return e.mechanism&&(Object(lt.b)(n,void 0,void 0),Object(lt.a)(n,e.mechanism)),n.extra=at.a({},n.extra,{arguments:r}),n})),p(t)})),t}};try{for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o])}catch(t){}t.prototype=t.prototype||{},r.prototype=t.prototype,Object.defineProperty(t,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:t}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get:function(){return t.name}})}catch(t){}return r}function M(t){if(!Qt[t])switch(Qt[t]=!0,t){case"console":!function(){if(!("console"in Vt))return;["debug","info","warn","error","log","assert"].forEach((function(t){t in Vt.console&&Object(jt.b)(Vt.console,t,(function(e){return function(){for(var n=[],r=0;r2?e[2]:void 0;if(r){var o=vt,i=String(r);vt=i,H("history",{from:o,to:i})}return t.apply(this,e)}}if(e=Object(lt.f)(),n=e.chrome,n&&n.app&&n.app.runtime||!("history"in e)||!e.history.pushState||!e.history.replaceState)return;var e,n;var r=Vt.onpopstate;Vt.onpopstate=function(){for(var t=[],e=0;e=200&&e<300?t.Success:429===e?t.RateLimit:e>=400&&e<500?t.Invalid:e>=500?t.Failed:t.Unknown}}(it||(it={}));var ct,ut=n("E6vx");!function(t){t.PENDING="PENDING",t.RESOLVED="RESOLVED",t.REJECTED="REJECTED"}(ct||(ct={}));var st=function(){function t(t){var e=this;this._state=ct.PENDING,this._handlers=[],this._resolve=function(t){e._setResult(ct.RESOLVED,t)},this._reject=function(t){e._setResult(ct.REJECTED,t)},this._setResult=function(t,n){e._state===ct.PENDING&&(Object(ut.m)(n)?n.then(e._resolve,e._reject):(e._state=t,e._value=n,e._executeHandlers()))},this._attachHandler=function(t){e._handlers=e._handlers.concat(t),e._executeHandlers()},this._executeHandlers=function(){if(e._state!==ct.PENDING){var t=e._handlers.slice();e._handlers=[],t.forEach((function(t){t.done||(e._state===ct.RESOLVED&&t.onfulfilled&&t.onfulfilled(e._value),e._state===ct.REJECTED&&t.onrejected&&t.onrejected(e._value),t.done=!0)}))}};try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}return t.prototype.toString=function(){return"[object SyncPromise]"},t.resolve=function(e){return new t((function(t){t(e)}))},t.reject=function(e){return new t((function(t,n){n(e)}))},t.all=function(e){return new t((function(n,r){if(Array.isArray(e))if(0!==e.length){var o=e.length,i=[];e.forEach((function(e,a){t.resolve(e).then((function(t){i[a]=t,0===(o-=1)&&n(i)})).then(null,r)}))}else n([]);else r(new TypeError("Promise.all requires an array as input."))}))},t.prototype.then=function(e,n){var r=this;return new t((function(t,o){r._attachHandler({done:!1,onfulfilled:function(n){if(e)try{return void t(e(n))}catch(t){return void o(t)}else t(n)},onrejected:function(e){if(n)try{return void t(n(e))}catch(t){return void o(t)}else o(e)}})}))},t.prototype.catch=function(t){return this.then((function(t){return t}),t)},t.prototype.finally=function(e){var n=this;return new t((function(t,r){var o,i;return n.then((function(t){i=!1,o=t,e&&e()}),(function(t){i=!0,o=t,e&&e()})).then((function(){i?r(o):t(o)}))}))},t}(),lt=n("3ZRO"),ft=function(){function t(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._user={},this._tags={},this._extra={},this._context={}}return t.prototype.addScopeListener=function(t){this._scopeListeners.push(t)},t.prototype.addEventProcessor=function(t){return this._eventProcessors.push(t),this},t.prototype._notifyScopeListeners=function(){var t=this;this._notifyingListeners||(this._notifyingListeners=!0,setTimeout((function(){t._scopeListeners.forEach((function(e){e(t)})),t._notifyingListeners=!1})))},t.prototype._notifyEventProcessors=function(t,e,n,r){var o=this;return void 0===r&&(r=0),new st((function(i,a){var c=t[r];if(null===e||"function"!=typeof c)i(e);else{var u=c(at.a({},e),n);Object(ut.m)(u)?u.then((function(e){return o._notifyEventProcessors(t,e,n,r+1).then(i)})).then(null,a):o._notifyEventProcessors(t,u,n,r+1).then(i).then(null,a)}}))},t.prototype.setUser=function(t){return this._user=t||{},this._notifyScopeListeners(),this},t.prototype.setTags=function(t){return this._tags=at.a({},this._tags,t),this._notifyScopeListeners(),this},t.prototype.setTag=function(t,e){var n;return this._tags=at.a({},this._tags,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setExtras=function(t){return this._extra=at.a({},this._extra,t),this._notifyScopeListeners(),this},t.prototype.setExtra=function(t,e){var n;return this._extra=at.a({},this._extra,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setFingerprint=function(t){return this._fingerprint=t,this._notifyScopeListeners(),this},t.prototype.setLevel=function(t){return this._level=t,this._notifyScopeListeners(),this},t.prototype.setTransaction=function(t){return this._transaction=t,this._span&&(this._span.transaction=t),this._notifyScopeListeners(),this},t.prototype.setContext=function(t,e){var n;return this._context=at.a({},this._context,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setSpan=function(t){return this._span=t,this._notifyScopeListeners(),this},t.prototype.getSpan=function(){return this._span},t.clone=function(e){var n=new t;return e&&(n._breadcrumbs=at.d(e._breadcrumbs),n._tags=at.a({},e._tags),n._extra=at.a({},e._extra),n._context=at.a({},e._context),n._user=e._user,n._level=e._level,n._span=e._span,n._transaction=e._transaction,n._fingerprint=e._fingerprint,n._eventProcessors=at.d(e._eventProcessors)),n},t.prototype.clear=function(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._context={},this._level=void 0,this._transaction=void 0,this._fingerprint=void 0,this._span=void 0,this._notifyScopeListeners(),this},t.prototype.addBreadcrumb=function(t,e){var n=at.a({timestamp:Object(lt.l)()},t);return this._breadcrumbs=void 0!==e&&e>=0?at.d(this._breadcrumbs,[n]).slice(-e):at.d(this._breadcrumbs,[n]),this._notifyScopeListeners(),this},t.prototype.clearBreadcrumbs=function(){return this._breadcrumbs=[],this._notifyScopeListeners(),this},t.prototype._applyFingerprint=function(t){t.fingerprint=t.fingerprint?Array.isArray(t.fingerprint)?t.fingerprint:[t.fingerprint]:[],this._fingerprint&&(t.fingerprint=t.fingerprint.concat(this._fingerprint)),t.fingerprint&&!t.fingerprint.length&&delete t.fingerprint},t.prototype.applyToEvent=function(t,e){return this._extra&&Object.keys(this._extra).length&&(t.extra=at.a({},this._extra,t.extra)),this._tags&&Object.keys(this._tags).length&&(t.tags=at.a({},this._tags,t.tags)),this._user&&Object.keys(this._user).length&&(t.user=at.a({},this._user,t.user)),this._context&&Object.keys(this._context).length&&(t.contexts=at.a({},this._context,t.contexts)),this._level&&(t.level=this._level),this._transaction&&(t.transaction=this._transaction),this._span&&(t.contexts=at.a({trace:this._span.getTraceContext()},t.contexts)),this._applyFingerprint(t),t.breadcrumbs=at.d(t.breadcrumbs||[],this._breadcrumbs),t.breadcrumbs=t.breadcrumbs.length>0?t.breadcrumbs:void 0,this._notifyEventProcessors(at.d(r(),this._eventProcessors),t,e)},t}(),pt=Object(lt.f)(),ht="Sentry Logger ",dt=function(){function t(){this._enabled=!1}return t.prototype.disable=function(){this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},t.prototype.log=function(){for(var t=[],e=0;e0?t[t.length-1].scope:void 0);return this.getStack().push({client:this.getClient(),scope:e}),e},t.prototype.popScope=function(){return void 0!==this.getStack().pop()},t.prototype.withScope=function(t){var e=this.pushScope();try{t(e)}finally{this.popScope()}},t.prototype.getClient=function(){return this.getStackTop().client},t.prototype.getScope=function(){return this.getStackTop().scope},t.prototype.getStack=function(){return this._stack},t.prototype.getStackTop=function(){return this._stack[this._stack.length-1]},t.prototype.captureException=function(t,e){var n=this._lastEventId=Object(lt.m)(),r=e;if(!e){var o=void 0;try{throw new Error("Sentry syntheticException")}catch(t){o=t}r={originalException:t,syntheticException:o}}return this._invokeClient("captureException",t,at.a({},r,{event_id:n})),n},t.prototype.captureMessage=function(t,e,n){var r=this._lastEventId=Object(lt.m)(),o=n;if(!n){var i=void 0;try{throw new Error(t)}catch(t){i=t}o={originalException:t,syntheticException:i}}return this._invokeClient("captureMessage",t,e,at.a({},o,{event_id:r})),r},t.prototype.captureEvent=function(t,e){var n=this._lastEventId=Object(lt.m)();return this._invokeClient("captureEvent",t,at.a({},e,{event_id:n})),n},t.prototype.lastEventId=function(){return this._lastEventId},t.prototype.addBreadcrumb=function(t,e){var n=this.getStackTop();if(n.scope&&n.client){var r=n.client.getOptions&&n.client.getOptions()||{},o=r.beforeBreadcrumb,i=void 0===o?null:o,a=r.maxBreadcrumbs,c=void 0===a?100:a;if(!(c<=0)){var u=Object(lt.l)(),s=at.a({timestamp:u},t),l=i?Object(lt.c)((function(){return i(s,e)})):s;null!==l&&n.scope.addBreadcrumb(l,Math.min(c,100))}}},t.prototype.setUser=function(t){var e=this.getStackTop();e.scope&&e.scope.setUser(t)},t.prototype.setTags=function(t){var e=this.getStackTop();e.scope&&e.scope.setTags(t)},t.prototype.setExtras=function(t){var e=this.getStackTop();e.scope&&e.scope.setExtras(t)},t.prototype.setTag=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setTag(t,e)},t.prototype.setExtra=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setExtra(t,e)},t.prototype.setContext=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setContext(t,e)},t.prototype.configureScope=function(t){var e=this.getStackTop();e.scope&&e.client&&t(e.scope)},t.prototype.run=function(t){var e=a(this);try{t(this)}finally{a(e)}},t.prototype.getIntegration=function(t){var e=this.getClient();if(!e)return null;try{return e.getIntegration(t)}catch(e){return mt.warn("Cannot retrieve integration "+t.id+" from the current Hub"),null}},t.prototype.startSpan=function(t,e){return void 0===e&&(e=!1),this._callExtensionMethod("startSpan",t,e)},t.prototype.traceHeaders=function(){return this._callExtensionMethod("traceHeaders")},t.prototype._callExtensionMethod=function(t){for(var e=[],n=1;n1&&(l=p.slice(0,-1).join("/"),f=p.pop()),this._fromComponents({host:c,pass:a,path:l,projectId:f,port:s,protocol:r,user:o})},t.prototype._fromComponents=function(t){this.protocol=t.protocol,this.user=t.user,this.pass=t.pass||"",this.host=t.host,this.port=t.port||"",this.path=t.path||"",this.projectId=t.projectId},t.prototype._validate=function(){var t=this;if(["protocol","user","host","projectId"].forEach((function(e){if(!t[e])throw new Ot("Invalid Dsn")})),"http"!==this.protocol&&"https"!==this.protocol)throw new Ot("Invalid Dsn");if(this.port&&isNaN(parseInt(this.port,10)))throw new Ot("Invalid Dsn")},t}(),jt=n("tZ4O"),kt=function(){function t(t){this.dsn=t,this._dsnObject=new xt(t)}return t.prototype.getDsn=function(){return this._dsnObject},t.prototype.getStoreEndpoint=function(){return""+this._getBaseUrl()+this.getStoreEndpointPath()},t.prototype.getStoreEndpointWithUrlEncodedAuth=function(){var t={sentry_key:this._dsnObject.user,sentry_version:"7"};return this.getStoreEndpoint()+"?"+Object(jt.e)(t)},t.prototype._getBaseUrl=function(){var t=this._dsnObject;return(t.protocol?t.protocol+":":"")+"//"+t.host+(t.port?":"+t.port:"")},t.prototype.getStoreEndpointPath=function(){var t=this._dsnObject;return(t.path?"/"+t.path:"")+"/api/"+t.projectId+"/store/"},t.prototype.getRequestHeaders=function(t,e){var n=this._dsnObject,r=["Sentry sentry_version=7"];return r.push("sentry_client="+t+"/"+e),r.push("sentry_key="+n.user),n.pass&&r.push("sentry_secret="+n.pass),{"Content-Type":"application/json","X-Sentry-Auth":r.join(", ")}},t.prototype.getReportDialogEndpoint=function(t){void 0===t&&(t={});var e=this._dsnObject,n=this._getBaseUrl()+(e.path?"/"+e.path:"")+"/api/embed/error-page/",r=[];for(var o in r.push("dsn="+e.toString()),t)if("user"===o){if(!t.user)continue;t.user.name&&r.push("name="+encodeURIComponent(t.user.name)),t.user.email&&r.push("email="+encodeURIComponent(t.user.email))}else r.push(encodeURIComponent(o)+"="+encodeURIComponent(t[o]));return r.length?n+"?"+r.join("&"):n},t}(),St=n("dbjm"),Tt=[],Ct=function(){function t(t,e){this._integrations={},this._processing=!1,this._backend=new t(e),this._options=e,e.dsn&&(this._dsn=new xt(e.dsn))}return t.prototype.captureException=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._getBackend().eventFromException(t,e).then((function(t){return r._processEvent(t,e,n)})).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){mt.error(t),r._processing=!1})),o},t.prototype.captureMessage=function(t,e,n,r){var o=this,i=n&&n.event_id;return this._processing=!0,(Object(ut.i)(t)?this._getBackend().eventFromMessage(""+t,e,n):this._getBackend().eventFromException(t,n)).then((function(t){return o._processEvent(t,n,r)})).then((function(t){i=t&&t.event_id,o._processing=!1})).then(null,(function(t){mt.error(t),o._processing=!1})),i},t.prototype.captureEvent=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._processEvent(t,e,n).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){mt.error(t),r._processing=!1})),o},t.prototype.getDsn=function(){return this._dsn},t.prototype.getOptions=function(){return this._options},t.prototype.flush=function(t){var e=this;return this._isClientProcessing(t).then((function(n){return clearInterval(n.interval),e._getBackend().getTransport().close(t).then((function(t){return n.ready&&t}))}))},t.prototype.close=function(t){var e=this;return this.flush(t).then((function(t){return e.getOptions().enabled=!1,t}))},t.prototype.setupIntegrations=function(){this._isEnabled()&&(this._integrations=x(this._options))},t.prototype.getIntegration=function(t){try{return this._integrations[t.id]||null}catch(e){return mt.warn("Cannot retrieve integration "+t.id+" from the current Client"),null}},t.prototype._isClientProcessing=function(t){var e=this;return new st((function(n){var r=0,o=0;clearInterval(o),o=setInterval((function(){e._processing?(r+=1,t&&r>=t&&n({interval:o,ready:!1})):n({interval:o,ready:!0})}),1)}))},t.prototype._getBackend=function(){return this._backend},t.prototype._isEnabled=function(){return!1!==this.getOptions().enabled&&void 0!==this._dsn},t.prototype._prepareEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.environment,a=o.release,c=o.dist,u=o.maxValueLength,s=void 0===u?250:u,l=o.normalizeDepth,f=void 0===l?3:l,p=at.a({},t);void 0===p.environment&&void 0!==i&&(p.environment=i),void 0===p.release&&void 0!==a&&(p.release=a),void 0===p.dist&&void 0!==c&&(p.dist=c),p.message&&(p.message=Object(St.d)(p.message,s));var h=p.exception&&p.exception.values&&p.exception.values[0];h&&h.value&&(h.value=Object(St.d)(h.value,s));var d=p.request;d&&d.url&&(d.url=Object(St.d)(d.url,s)),void 0===p.event_id&&(p.event_id=n&&n.event_id?n.event_id:Object(lt.m)()),this._addIntegrations(p.sdk);var _=st.resolve(p);return e&&(_=e.applyToEvent(p,n)),_.then((function(t){return"number"==typeof f&&f>0?r._normalizeEvent(t,f):t}))},t.prototype._normalizeEvent=function(t,e){return t?at.a({},t,t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map((function(t){return at.a({},t,t.data&&{data:Object(jt.c)(t.data,e)})}))},t.user&&{user:Object(jt.c)(t.user,e)},t.contexts&&{contexts:Object(jt.c)(t.contexts,e)},t.extra&&{extra:Object(jt.c)(t.extra,e)}):null},t.prototype._addIntegrations=function(t){var e=Object.keys(this._integrations);t&&e.length>0&&(t.integrations=e)},t.prototype._processEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.beforeSend,a=o.sampleRate;return this._isEnabled()?"number"==typeof a&&Math.random()>a?st.reject("This event has been sampled, will not send event."):new st((function(o,a){r._prepareEvent(t,n,e).then((function(t){if(null!==t){var n=t;if(e&&e.data&&!0===e.data.__sentry__||!i)return r._getBackend().sendEvent(n),void o(n);var c=i(t,e);if(void 0===c)mt.error("`beforeSend` method has to return `null` or a valid event.");else if(Object(ut.m)(c))r._handleAsyncBeforeSend(c,o,a);else{if(null===(n=c))return mt.log("`beforeSend` returned `null`, will not send event."),void o(null);r._getBackend().sendEvent(n),o(n)}}else a("An event processor returned null, will not send event.")})).then(null,(function(t){r.captureException(t,{data:{__sentry__:!0},originalException:t}),a("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: "+t)}))})):st.reject("SDK not enabled, will not send event.")},t.prototype._handleAsyncBeforeSend=function(t,e,n){var r=this;t.then((function(t){null!==t?(r._getBackend().sendEvent(t),e(t)):n("`beforeSend` returned `null`, will not send event.")})).then(null,(function(t){n("beforeSend rejected with "+t)}))},t}(),Rt=function(){function t(){}return t.prototype.sendEvent=function(){return st.resolve({reason:"NoopTransport: Event has been skipped because no Dsn is configured.",status:it.Skipped})},t.prototype.close=function(){return st.resolve(!0)},t}(),It=function(){function t(t){this._options=t,this._options.dsn||mt.warn("No DSN provided, backend will not do anything."),this._transport=this._setupTransport()}return t.prototype._setupTransport=function(){return new Rt},t.prototype.eventFromException=function(){throw new Ot("Backend has to implement `eventFromException` method")},t.prototype.eventFromMessage=function(){throw new Ot("Backend has to implement `eventFromMessage` method")},t.prototype.sendEvent=function(t){this._transport.sendEvent(t).then(null,(function(t){mt.error("Error while sending event: "+t)}))},t.prototype.getTransport=function(){return this._transport},t}(),Pt=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Lt=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,Nt=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,Ut=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Dt=/\((\S*)(?::(\d+))(?::(\d+))\)/,At=function(){function t(t){this._limit=t,this._buffer=[]}return t.prototype.isReady=function(){return void 0===this._limit||this.length()0&&n(!1)}),t);st.all(e._buffer).then((function(){clearTimeout(r),n(!0)})).then(null,(function(){n(!0)}))}))},t}(),Bt=function(){function t(t){this.options=t,this._buffer=new At(30),this.url=new kt(this.options.dsn).getStoreEndpointWithUrlEncodedAuth()}return t.prototype.sendEvent=function(){throw new Ot("Transport Class has to implement `sendEvent` method")},t.prototype.close=function(t){return this._buffer.drain(t)},t}(),Mt=Object(lt.f)(),Ft=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._disabledUntil=new Date(Date.now()),e}return at.b(e,t),e.prototype.sendEvent=function(t){var e=this;if(new Date(Date.now())"}0!==e.length&&c().addBreadcrumb({category:"ui."+t.name,message:e},{event:t.event,name:t.name})},t.prototype._xhrBreadcrumb=function(t){if(t.endTimestamp){if(t.xhr.__sentry_own_request__)return;c().addBreadcrumb({category:"xhr",data:t.xhr.__sentry_xhr__,type:"http"},{xhr:t.xhr})}else this._options.sentry&&t.xhr.__sentry_own_request__&&G(t.args[0])},t.prototype._fetchBreadcrumb=function(t){if(t.endTimestamp){var e=c().getClient(),n=e&&e.getDsn();if(this._options.sentry&&n){var r=new kt(n).getStoreEndpoint();if(r&&-1!==t.fetchData.url.indexOf(r)&&"POST"===t.fetchData.method&&t.args[1]&&t.args[1].body)return void G(t.args[1].body)}t.error?c().addBreadcrumb({category:"fetch",data:at.a({},t.fetchData,{status_code:t.response.status}),level:ot.Error,type:"http"},{data:t.error,input:t.args}):c().addBreadcrumb({category:"fetch",data:at.a({},t.fetchData,{status_code:t.response.status}),type:"http"},{input:t.args,response:t.response})}},t.prototype._historyBreadcrumb=function(t){var e=Object(lt.f)(),n=t.from,r=t.to,o=Object(lt.k)(e.location.href),i=Object(lt.k)(n),a=Object(lt.k)(r);i.path||(i=o),o.protocol===a.protocol&&o.host===a.host&&(r=a.relative),o.protocol===i.protocol&&o.host===i.host&&(n=i.relative),c().addBreadcrumb({category:"navigation",data:{from:n,to:r}})},t.prototype.setupOnce=function(){var t=this;this._options.console&&F({callback:function(){for(var e=[],n=0;n0?e:Object(lt.g)();return 0===t.exception.values[0].stacktrace.frames.length&&t.exception.values[0].stacktrace.frames.push({colno:o,filename:a,function:"?",in_app:!0,lineno:i}),t},t.id="GlobalHandlers",t}(),ie=function(){function t(e){void 0===e&&(e={}),this.name=t.id,this._key=e.key||"cause",this._limit=e.limit||5}return t.prototype.setupOnce=function(){o((function(e,n){var r=c().getIntegration(t);return r?r._handler(e,n):e}))},t.prototype._handler=function(t,e){if(!(t.exception&&t.exception.values&&e&&Object(ut.g)(e.originalException,Error)))return t;var n=this._walkErrorTree(e.originalException,this._key);return t.exception.values=at.d(n,t.exception.values),t},t.prototype._walkErrorTree=function(t,e,n){if(void 0===n&&(n=[]),!Object(ut.g)(t[e],Error)||n.length+1>=this._limit)return n;var r=I(T(t[e]));return this._walkErrorTree(t[e],e,at.d([r],n))},t.id="LinkedErrors",t}(),ae=Object(lt.f)(),ce=function(){function t(){this.name=t.id}return t.prototype.setupOnce=function(){o((function(e){if(c().getIntegration(t)){if(!ae.navigator||!ae.location)return e;var n=e.request||{};return n.url=n.url||ae.location.href,n.headers=n.headers||{},n.headers["User-Agent"]=ae.navigator.userAgent,at.a({},e,{request:n})}return e}))},t.id="UserAgent",t}(),ue=[new et.InboundFilters,new et.FunctionToString,new $t,new re,new oe,new ie,new ce],se={},le=Object(lt.f)();le.Sentry&&le.Sentry.Integrations&&(se=le.Sentry.Integrations);var fe=at.a({},se,et,nt)},zCbC:function(t,e,n){"use strict";var r=n("SdNZ");e.a=Object(r.a)((function(t){n.e(6).then(function(){t(n("YJDv"))}.bind(null,n)).catch(n.oe)}))}}); +//# sourceMappingURL=bundle.359c0.js.map \ No newline at end of file diff --git a/docs/bundle.4037e.js.LICENSE.txt b/docs/bundle.359c0.js.LICENSE.txt similarity index 100% rename from docs/bundle.4037e.js.LICENSE.txt rename to docs/bundle.359c0.js.LICENSE.txt diff --git a/docs/bundle.359c0.js.map b/docs/bundle.359c0.js.map new file mode 100644 index 0000000..17e9f0a --- /dev/null +++ b/docs/bundle.359c0.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./routes/vldigeometria.js?971d","webpack:///./components/Parts/Footer.less","webpack:///./routes/apprendimentoSistemiArtificiali.js?75cd","webpack:///./routes/statistica.js?3c70","webpack:///../src/misc.ts","webpack:///../src/memo.ts","webpack:///./contexts/LatexRenderColor.js","webpack:///./routes/mingwinstall.js?cec4","webpack:///../src/is.ts","webpack:///./routes/OttimizzazioneLineare.js?30da","webpack:///./routes/calcoloNumerico.js?8c12","webpack:///../node_modules/webpack/buildin/harmony-module.js","webpack:///./index.js","webpack:///../node_modules/@preact/async-loader/async-legacy.js","webpack:///./routes/basiDiDati.js?e91b","webpack:///./routes/home.js?7109","webpack:///../src/util.js","webpack:///../src/index.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///../src/string.ts","webpack:///./components/Parts/Footer.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///../node_modules/preact-cli/lib/lib/entry.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///../src/object.ts","webpack:///../node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///../node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///../node_modules/history/esm/history.js","webpack:///../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///../src/scope.ts","webpack:///../src/hub.ts","webpack:///../src/index.ts","webpack:///../src/integration.ts","webpack:///../src/supports.ts","webpack:///../src/tracekit.ts","webpack:///../src/parsers.ts","webpack:///../src/eventbuilder.ts","webpack:///../src/helpers.ts","webpack:///../src/instrument.ts","webpack:///../../src/integrations/breadcrumbs.ts","webpack:///../src/sdk.ts","webpack:///../src/severity.ts","webpack:///../src/status.ts","webpack:///../src/syncpromise.ts","webpack:///../src/logger.ts","webpack:///../../src/integrations/functiontostring.ts","webpack:///../src/polyfill.ts","webpack:///../src/error.ts","webpack:///../src/dsn.ts","webpack:///../src/api.ts","webpack:///../src/baseclient.ts","webpack:///../../src/transports/noop.ts","webpack:///../src/basebackend.ts","webpack:///../src/promisebuffer.ts","webpack:///../../src/transports/base.ts","webpack:///../../src/transports/fetch.ts","webpack:///../../src/transports/xhr.ts","webpack:///../src/backend.ts","webpack:///../src/version.ts","webpack:///../src/client.ts","webpack:///../../src/integrations/inboundfilters.ts","webpack:///../../src/integrations/trycatch.ts","webpack:///../../src/integrations/globalhandlers.ts","webpack:///../../src/integrations/linkederrors.ts","webpack:///../../src/integrations/useragent.ts","webpack:///./routes/fisica.js?9847"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","__webpack_require__","installedModules","exports","module","l","installedCssChunks","0","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","cb","isNodeEnv","toString","process","getGlobalObject","global","self","fallbackGlobalObject","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","replace","Math","random","parseUrl","url","match","host","path","protocol","relative","getEventDescription","exception","values","event_id","consoleSandbox","callback","originalConsole","wrappedLevels","forEach","level","__sentry_original__","result","keys","addExceptionTypeValue","addExceptionMechanism","mechanism","_oO","getLocationHref","location","oO","htmlTreeAsString","elem","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","reverse","join","el","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","timestampWithMs","crossPlatformPerformance","timeOrigin","now","parseRetryAfterHeader","header","headerDelay","parseInt","isNaN","headerDate","Date","parse","getFunctionName","fn","INITIAL_TIME","prevNow","performanceFallback","require","performance","_","timing","navigationStart","this","_hasWeakSet","WeakSet","_inner","memoize","obj","has","add","unmemoize","delete","splice","createContext","isError","wat","isInstanceOf","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","base","_e","originalModule","webpackPolyfill","children","debug","init","dsn","Provider","history","createHashHistory","req","Async","b","old","Component","componentWillMount","nextBase","__b","setState","child","default","shouldComponentUpdate","nxt","nodeType","h","nodeName","dangerouslySetInnerHTML","__html","innerHTML","render","constructor","let","EMPTY","getCurrentUrl","customHistory","getCurrentLocation","pathname","search","route","ROUTERS","canRoute","setUrl","routeTo","didRoute","subscribers","routeFromLink","node","handleLinkClick","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","delegateLinkHandler","String","toUpperCase","hasAttribute","eventListenersInitialized","Router","props","super","state","addEventListener","static","onChange","const","getMatchingChildren","updating","forceUpdate","componentDidMount","unlisten","listen","componentWillUnmount","indexOf","componentWillUpdate","componentDidUpdate","invoke","filter","prepareVNodeForRanking","sort","pathRankSort","map","vnode","matches","exec","newProps","assign","ref","active","current","previous","previousUrl","router","Route","component","Link","onClick","__extends","__","extendStatics","__values","iterator","next","done","TypeError","__read","ar","__spread","arguments","concat","setPrototypeOf","__proto__","Array","__assign","apply","truncate","str","max","substr","snipLine","line","colno","newLine","ll","start","end","min","safeJoin","input","delimiter","isArray","output","isMatchingPattern","pattern","test","class","style","footer","getFullYear","removeNode","normalizedProps","defaultProps","createVNode","original","_children","_parent","_depth","_dom","_nextDom","_component","_original","options","createRef","Fragment","context","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","_dirty","rerenderQueue","rerenderCount","prevDebounce","debounceRendering","defer","queue","a","_vnode","some","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","diff","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","sibDom","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","toChildArray","childVNode","nextDom","outer","nextSibling","insertBefore","unmount","applyRef","flattened","setStyle","setProperty","IS_NON_DIMENSIONAL","dom","oldValue","useCapture","nameLower","cssText","eventProxy","_listeners","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","newVNode","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","provider","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","doRender","sub","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillReceiveProps","_force","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","root","_commit","oldHtml","newHtml","localName","createTextNode","createElementNS","is","childNodes","attributes","hydrate","diffProps","checked","parentVNode","skipRemove","replaceNode","_root","IS_HYDRATE","cloneElement","defaultValue","ctx","Consumer","subs","_this","_props","isValidElement","hasCaught","getDerivedStateFromError","componentDidCatch","update","Preact","interopDefault","navigator","serviceWorker","register","__webpack_public_path__","getElementById","body","firstElementChild","app","preRenderData","inlineDataElement","querySelector","JSON","CLI_DATA","g","Function","fill","source","replacement","wrapped","defineProperties","_Oo","urlEncode","encodeURIComponent","getWalkSource","stack","CustomEvent","detail","jsonSize","encodeURI","utf8Length","stringify","normalizeToSize","depth","maxSize","serialized","normalize","normalizeValue","_events","walk","memo","Infinity","normalized","serializeValue","toJSON","acc","innerKey","extractExceptionKeysForMessage","maxLength","includedKeys","_extends","isAbsolute","charAt","spliceOne","list","index","k","pop","addLeadingSlash","stripLeadingSlash","stripBasename","prefix","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","appendListener","listener","isActive","item","notifyListeners","_len","args","_key","getConfirmation","confirm","stripHash","getHashPath","substring","replaceHashPath","getDOMLocation","decodePath","basename","nextState","globalHistory","transitionManager","handleHashChange","encodedPath","encodePath","forceNextPop","ignorePath","ok","fromLocation","toIndex","allPaths","lastIndexOf","fromIndex","delta","go","revertPop","handlePop","checkDOMListeners","listenerCount","canUseDOM","invariant","_props$getUserConfirm","userAgent","_props$hashType","hashType","_HashPathCoders$hashT","HashPathCoders","initialLocation","isBlocked","createHref","baseTag","pushHashPath","prevIndex","nextPaths","goBack","goForward","block","unblock","to","from","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","condition","hashbang","noslash","slash","getGlobalEventProcessors","__SENTRY__","globalEventProcessors","addGlobalEventProcessor","getMainCarrier","carrier","extensions","hub","makeMain","registry","oldHub","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","isOlderThan","sentry","activeDomain","registryHubTopStack","getStackTop","client","clone","scope","getHubFromActiveDomain","setupIntegrations","integrations","defaultIntegrations","userIntegrations","defaultIntegration","userIntegration","integrationsNames","getIntegrationsToSetup","integration","installedIntegrations","setupOnce","logger","log","setupIntegration","supportsFetch","Headers","Request","Response","isNativeFetch","func","supportsReferrerPolicy","referrerPolicy","computeStackTrace","ex","popSize","framesToPop","stacktrace","parts","opera10Regex","opera11Regex","lines","element","column","extractMessage","computeStackTraceFromStacktraceProp","popFrames","submatch","isNative","chromeEval","winjs","gecko","geckoEval","columnNumber","computeStackTraceFromStackProp","failed","exceptionFromStacktrace","frames","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","frame","filename","function","in_app","lineno","eventFromUnknownInput","syntheticException","domException","eventFromString","rejection","extra","__serialized__","eventFromPlainObject","synthetic","attachStacktrace","shouldIgnoreOnError","ignoreOnError","ignoreNextOnError","wrap","before","__sentry__","__sentry_wrapped__","sentryWrapped","wrappedArguments","arg","handleEvent","withScope","addEventProcessor","processedEvent","captureException","getOwnPropertyDescriptor","configurable","instrument","instrumented","originalConsoleLevel","triggerHandlers","instrumentConsole","domEventHandler","keypressEventHandler","proto","eventName","innerOriginal","instrumentDOM","xhrproto","XMLHttpRequest","originalOpen","__sentry_xhr__","method","__sentry_own_request__","originalSend","xhr","commonHandlerData","startTimestamp","readyState","status_code","status","endTimestamp","instrumentXHR","fetch","doc","sandbox","hidden","contentWindow","warn","supportsNativeFetch","originalFetch","fetchData","getFetchMethod","getFetchUrl","response","instrumentFetch","historyReplacementFunction","originalHistoryFunction","lastHref","chrome","runtime","pushState","replaceState","oldOnPopState","onpopstate","instrumentHistory","_oldOnErrorHandler","msg","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","handler","handlers","fetchArgs","debounce","keypressTimeout","lastCapturedEvent","debounceTimer","isContentEditable","addSentryBreadcrumb","serializedData","addBreadcrumb","category","Severity","fromString","release","SENTRY_RELEASE","initAndBind","showReportDialog","eventId","lastEventId","getClient","forceLoad","onLoad","flush","close","Status","Debug","Info","Warning","Fatal","Critical","Log","fromHttpCode","Success","RateLimit","Invalid","Failed","Unknown","States","executor","_state","PENDING","_handlers","_resolve","_setResult","RESOLVED","_reject","reason","REJECTED","_value","_executeHandlers","_attachHandler","cachedHandlers","onfulfilled","onrejected","SyncPromise","collection","counter","resolvedCollection","catch","val","finally","onfinally","isRejected","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_context","addScopeListener","_notifyScopeListeners","_notifyEventProcessors","processors","hint","processor","final","setUser","user","setTags","tags","setTag","setExtras","extras","setExtra","setFingerprint","fingerprint","_fingerprint","setLevel","_level","setTransaction","transaction","_transaction","_span","setContext","setSpan","span","getSpan","newScope","Scope","clear","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","_applyFingerprint","applyToEvent","contexts","trace","getTraceContext","breadcrumbs","PREFIX","_enabled","disable","enable","originalFunctionToString","_version","_stack","_invokeClient","top","version","bindClient","pushScope","getStack","popScope","getScope","_lastEventId","finalHint","originalException","captureMessage","captureEvent","beforeBreadcrumb","finalBreadcrumb","configureScope","run","getIntegration","startSpan","spanOrSpanContext","forceNoChild","_callExtensionMethod","traceHeaders","prop","DSN_REGEX","_fromString","_fromComponents","_validate","withPassword","pass","port","projectId","components","_dsnObject","getDsn","getStoreEndpoint","_getBaseUrl","getStoreEndpointPath","getStoreEndpointWithUrlEncodedAuth","auth","sentry_key","sentry_version","getRequestHeaders","clientName","clientVersion","getReportDialogEndpoint","dialogOptions","endpoint","encodedOptions","email","backendClass","_integrations","_processing","_backend","_options","_dsn","_getBackend","eventFromException","_processEvent","finalEvent","eventFromMessage","getOptions","_isClientProcessing","clearInterval","interval","getTransport","transportFlushed","ready","enabled","_isEnabled","ticked","setInterval","_prepareEvent","environment","dist","maxValueLength","normalizeDepth","prepared","_addIntegrations","sdk","evt","_normalizeEvent","sdkInfo","integrationsArray","beforeSend","sampleRate","sendEvent","beforeSendResult","_handleAsyncBeforeSend","Skipped","_transport","_setupTransport","_limit","_buffer","isReady","task","remove","drain","capturedSetTimeout","_disabledUntil","defaultOptions","headers","onreadystatechange","getResponseHeader","open","setRequestHeader","send","transportOptions","transport","handled","SDK_NAME","SDK_VERSION","platform","packages","async","FunctionToString","DEFAULT_IGNORE_ERRORS","InboundFilters","clientOptions","_mergeOptions","_shouldDropEvent","_isSentryError","_isIgnoredError","_isBlacklistedUrl","_getEventFilterUrl","_isWhitelistedUrl","ignoreInternal","ignoreErrors","_getPossibleEventMessages","blacklistUrls","whitelistUrls","_ignoreOnError","TryCatch","_wrapTimeFunction","originalCallback","_wrapRAF","_wrapEventTarget","_wrapXHR","xmlHttpRequestProps","wrapOptions","Breadcrumbs","_consoleBreadcrumb","handlerData","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","filterUrl","_historyBreadcrumb","parsedLoc","parsedFrom","parsedTo","GlobalHandlers","_onErrorHandlerInstalled","_onUnhandledRejectionHandlerInstalled","stackTraceLimit","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","currentHub","hasIntegration","isFailedOwnDelivery","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","_eventFromIncompleteRejection","groups","LinkedErrors","limit","_handler","linkedErrors","_walkErrorTree","UserAgent","windowIntegrations","_window","Sentry","Integrations","INTEGRATIONS"],"mappings":"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","file":"bundle.359c0.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"route-OttimizzazioneLineare\",\"3\":\"route-apprendimentoSistemiArtificiali\",\"4\":\"route-basiDiDati\",\"5\":\"route-calcoloNumerico\",\"6\":\"route-fisica\",\"7\":\"route-home\",\"8\":\"route-mingwinstall\",\"9\":\"route-statistica\",\"10\":\"route-vldigeometria\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"61616\",\"3\":\"87f5e\",\"4\":\"34329\",\"5\":\"a2e66\",\"6\":\"5cab8\",\"7\":\"a14d6\",\"8\":\"d712b\",\"9\":\"49197\",\"10\":\"9b0c5\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1,\"4\":1,\"5\":1,\"6\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"2\":\"route-OttimizzazioneLineare\",\"3\":\"route-apprendimentoSistemiArtificiali\",\"4\":\"route-basiDiDati\",\"5\":\"route-calcoloNumerico\",\"6\":\"route-fisica\",\"7\":\"route-home\",\"8\":\"route-mingwinstall\",\"9\":\"route-statistica\",\"10\":\"route-vldigeometria\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"05781\",\"3\":\"75409\",\"4\":\"d7b86\",\"5\":\"0791e\",\"6\":\"6a691\",\"7\":\"0d277\",\"8\":\"d169e\",\"9\":\"0b8c5\",\"10\":\"0c65e\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./vldigeometria.js\") );\n\t\t\t}, \"route-vldigeometria\");\n\t\t}\n\n\t\texport default Async(load);\n\t","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"footer__2wc45\"};","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./apprendimentoSistemiArtificiali.js\") );\n\t\t\t}, \"route-apprendimentoSistemiArtificiali\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./statistica.js\") );\n\t\t\t}, \"route-statistica\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import { Event, Integration, StackFrame, WrappedFunction } from '@sentry/types';\n\nimport { isString } from './is';\nimport { snipLine } from './string';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nexport function dynamicRequire(mod: any, request: string): any {\n // tslint:disable-next-line: no-unsafe-any\n return mod.require(request);\n}\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // tslint:disable:strict-type-predicates\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject) as T & SentryGlobal;\n}\n// tslint:enable:strict-type-predicates\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // tslint:disable-next-line:no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // tslint:disable-next-line:no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // tslint:disable-next-line:no-bitwise\n const r = (Math.random() * 16) | 0;\n // tslint:disable-next-line:no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(\n url: string,\n): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n const exception = event.exception.values[0];\n\n if (exception.type && exception.value) {\n return `${exception.type}: ${exception.value}`;\n }\n return exception.type || exception.value || event.event_id || '';\n }\n return event.event_id || '';\n}\n\n/** JSDoc */\ninterface ExtensibleConsole extends Console {\n [key: string]: any;\n}\n\n/** JSDoc */\nexport function consoleSandbox(callback: () => any): any {\n const global = getGlobalObject();\n const levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n\n if (!('console' in global)) {\n return callback();\n }\n\n const originalConsole = global.console as ExtensibleConsole;\n const wrappedLevels: { [key: string]: any } = {};\n\n // Restore all wrapped console methods\n levels.forEach(level => {\n if (level in global.console && (originalConsole[level] as WrappedFunction).__sentry_original__) {\n wrappedLevels[level] = originalConsole[level] as WrappedFunction;\n originalConsole[level] = (originalConsole[level] as WrappedFunction).__sentry_original__;\n }\n });\n\n // Perform callback manipulations\n const result = callback();\n\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level];\n });\n\n return result;\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(\n event: Event,\n mechanism: {\n [key: string]: any;\n } = {},\n): void {\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore\n // tslint:disable:no-non-null-assertion\n event.exception!.values![0].mechanism = event.exception!.values![0].mechanism || {};\n Object.keys(mechanism).forEach(key => {\n // @ts-ignore\n event.exception!.values![0].mechanism[key] = mechanism[key];\n });\n } catch (_oO) {\n // no-empty\n }\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown): string {\n const elem = el as {\n getAttribute(key: string): string; // tslint:disable-line:completed-docs\n tagName?: string;\n id?: string;\n className?: string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n const attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\nconst INITIAL_TIME = Date.now();\nlet prevNow = 0;\n\n/**\n * Cross platform compatible partial performance implementation\n */\ninterface CrossPlatformPerformance {\n /**\n * Returns the current timestamp in ms\n */\n now(): number;\n timeOrigin: number;\n}\n\nconst performanceFallback: CrossPlatformPerformance = {\n now(): number {\n let now = Date.now() - INITIAL_TIME;\n if (now < prevNow) {\n now = prevNow;\n }\n prevNow = now;\n return now;\n },\n timeOrigin: INITIAL_TIME,\n};\n\nexport const crossPlatformPerformance: CrossPlatformPerformance = (() => {\n if (isNodeEnv()) {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: CrossPlatformPerformance };\n return perfHooks.performance;\n } catch (_) {\n return performanceFallback;\n }\n }\n\n if (getGlobalObject().performance) {\n // Polyfill for performance.timeOrigin.\n //\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // tslint:disable-next-line:strict-type-predicates\n if (performance.timeOrigin === undefined) {\n // As of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always a\n // valid fallback. In the absence of a initial time provided by the browser, fallback to INITIAL_TIME.\n // @ts-ignore\n // tslint:disable-next-line:deprecation\n performance.timeOrigin = (performance.timing && performance.timing.navigationStart) || INITIAL_TIME;\n }\n }\n\n return getGlobalObject().performance || performanceFallback;\n})();\n\n/**\n * Returns a timestamp in seconds with milliseconds precision since the UNIX epoch calculated with the monotonic clock.\n */\nexport function timestampWithMs(): number {\n return (crossPlatformPerformance.timeOrigin + crossPlatformPerformance.now()) / 1000;\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\nconst defaultRetryAfter = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now: number, header?: string | number | null): number {\n if (!header) {\n return defaultRetryAfter;\n }\n\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return defaultRetryAfter;\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n","// tslint:disable:no-unsafe-any\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nexport class Memo {\n /** Determines if WeakSet is available */\n private readonly _hasWeakSet: boolean;\n /** Either WeakSet or Array */\n private readonly _inner: any;\n\n public constructor() {\n // tslint:disable-next-line\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n public memoize(obj: any): boolean {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < this._inner.length; i++) {\n const value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n }\n\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n public unmemoize(obj: any): void {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n } else {\n for (let i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n }\n}\n","import {createContext} from \"preact\";\r\n\r\nexport default createContext(\"White\");\r\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./mingwinstall.js\") );\n\t\t\t}, \"route-mingwinstall\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: any): boolean {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: any): boolean {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: any): boolean {\n // tslint:disable-next-line:strict-type-predicates\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: any): boolean {\n // tslint:disable-next-line:strict-type-predicates\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): boolean {\n // tslint:disable:no-unsafe-any\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n // tslint:enable:no-unsafe-any\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: any): boolean {\n // tslint:disable-next-line:no-unsafe-any\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./OttimizzazioneLineare.js\") );\n\t\t\t}, \"route-OttimizzazioneLineare\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./calcoloNumerico.js\") );\n\t\t\t}, \"route-calcoloNumerico\");\n\t\t}\n\n\t\texport default Async(load);\n\t","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","let Sentry = null;\nif(process.env.NODE_ENV === \"development\") {\n\tconsole.debug(\"Initializing Preact Debugger...\")\n\trequire(\"preact/debug\");\n}\nelse if(process.env.NODE_ENV === \"production\") {\n\tconsole.debug(\"Initializing Sentry...\")\n\tSentry = require(\"@sentry/browser\");\n\tSentry.init({dsn: \"https://9f5089346fd14e04a6f412638474dfec@o40131.ingest.sentry.io/5255500\"});\n}\nelse {\n\tconsole.debug(\"Not initializing anything, unknown env.\");\n}\n\n// noinspection ES6UnusedImports\nimport _style from './index.less';\n// noinspection ES6UnusedImports\nimport _manifest from './meta/manifest.json';\n// noinspection ES6UnusedImports\nimport _cname from './meta/CNAME';\n// noinspection ES6UnusedImports\nimport _nojekyll from './meta/.nojekyll';\n\nimport Router from 'preact-router';\nimport {createHashHistory} from \"history\";\nimport Home from './routes/home';\nimport Fisica from './routes/fisica';\nimport VlDiGeometria from './routes/vldigeometria';\nimport MingwInstall from './routes/mingwinstall';\nimport Footer from './components/Parts/Footer';\nimport Statistica from './routes/statistica';\nimport OttimizzazioneLineare from \"./routes/OttimizzazioneLineare\";\nimport BasiDiDati from './routes/basiDiDati';\nimport CalcoloNumerico from './routes/calcoloNumerico';\nimport ApprendimentoSistemiArtificiali from \"./routes/apprendimentoSistemiArtificiali\";\nimport LatexRenderColor from \"./contexts/LatexRenderColor\";\n\n// noinspection JSUnusedGlobalSymbols\nexport default function(props) {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t

Appuntiweb di Steffo

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./basiDiDati.js\") );\n\t\t\t}, \"route-basiDiDati\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./home.js\") );\n\t\t\t}, \"route-home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\n\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n colno = ll; // tslint:disable-line:no-parameter-reassignment\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return (pattern as RegExp).test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n","import style from './Footer.less';\nimport { Component } from 'preact';\n\nexport default function(props) {\n\treturn (\n\t\t
\n\t\t\t© {new Date().getFullYear()}\n\t\t\t - \n\t\t\tStefano Pigozzi\n\t\t\t - \n\t\t\tCC BY-SA 4.0\n\t\t\t - \n\t\t\tCodice sorgente\n\t\t\t - \n\t\t\tSupportami\n\t\t
\n\t);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\tnewVNode._children = newVNode.props.children;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (!newHtml) {\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\tnewProps.value !== undefined &&\n\t\t\t\tnewProps.value !== dom.value\n\t\t\t) {\n\t\t\t\tdom.value = newProps.value == null ? '' : newProps.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\tnewProps.checked !== undefined &&\n\t\t\t\tnewProps.checked !== dom.checked\n\t\t\t) {\n\t\t\t\tdom.checked = newProps.checked;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\treturn createVNode(\n\t\tvnode.type,\n\t\tprops,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\treturn context;\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\tif (process.env.RHL) {\n\t\t// enable hot loader\n\t\tconst hotLoader = interopDefault(require('react-hot-loader'));\n\t\thotLoader.preact(interopDefault(require('preact')));\n\t}\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(inlineDataElement.innerHTML).preRenderData || preRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === location.pathname;\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName, htmlTreeAsString } from './misc';\nimport { truncate } from './string';\n\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacement A function that should be used to wrap a given method.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacement: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacement(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n // tslint:disable-next-line:strict-type-predicates\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(\n // tslint:disable-next-line:no-unsafe-any\n key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`,\n )\n .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all it's attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order to be usable by the serializer\n */\nfunction getWalkSource(\n value: any,\n): {\n [key: string]: any;\n} {\n if (isError(value)) {\n const error = value as ExtendedError;\n const err: {\n stack: string | undefined;\n message: string;\n name: string;\n [key: string]: any;\n } = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n\n for (const i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n\n return err;\n }\n\n if (isEvent(value)) {\n /**\n * Event-like interface that's usable in browser and node\n */\n interface SimpleEvent {\n [key: string]: unknown;\n type: string;\n target?: unknown;\n currentTarget?: unknown;\n }\n\n const event = value as SimpleEvent;\n\n const source: {\n [key: string]: any;\n } = {};\n\n source.type = event.type;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event.target)\n ? htmlTreeAsString(event.target)\n : Object.prototype.toString.call(event.target);\n } catch (_oO) {\n source.target = '';\n }\n\n try {\n source.currentTarget = isElement(event.currentTarget)\n ? htmlTreeAsString(event.currentTarget)\n : Object.prototype.toString.call(event.currentTarget);\n } catch (_oO) {\n source.currentTarget = '';\n }\n\n // tslint:disable-next-line:strict-type-predicates\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event.detail;\n }\n\n for (const i in event) {\n if (Object.prototype.hasOwnProperty.call(event, i)) {\n source[i] = event;\n }\n }\n\n return source;\n }\n\n return value as {\n [key: string]: any;\n };\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // tslint:disable-next-line:no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const serialized = normalize(object, depth);\n\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return serialized as T;\n}\n\n/** Transforms any input value into a string form, either primitive value or a type of the input */\nfunction serializeValue(value: any): any {\n const type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n\n const normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction normalizeValue(value: T, key?: any): T | string {\n if (key === 'domain' && value && typeof value === 'object' && ((value as unknown) as { _events: any })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n if (typeof (global as any) !== 'undefined' && (value as unknown) === global) {\n return '[Global]';\n }\n\n if (typeof (window as any) !== 'undefined' && (value as unknown) === window) {\n return '[Window]';\n }\n\n if (typeof (document as any) !== 'undefined' && (value as unknown) === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n // tslint:disable-next-line:no-tautology-expression\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n return value;\n}\n\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\nexport function walk(key: string, value: any, depth: number = +Infinity, memo: Memo = new Memo()): any {\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n\n // If value implements `toJSON` method, call it and return early\n // tslint:disable:no-unsafe-any\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n // tslint:enable:no-unsafe-any\n\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n const normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n const source = getWalkSource(value);\n\n // Create an accumulator that will act as a parent for all future itterations of that branch\n const acc = Array.isArray(value) ? [] : {};\n\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n\n // Walk all keys of the source\n for (const innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n (acc as { [key: string]: any })[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n\n // Return accumulated values\n return acc;\n}\n\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\nexport function normalize(input: any, depth?: number): any {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return JSON.parse(JSON.stringify(input, (key: string, value: any) => walk(key, value, depth)));\n } catch (_oO) {\n return '**non-serializable**';\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n // tslint:disable:strict-type-predicates\n const keys = Object.keys(getWalkSource(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val: T): T {\n if (isPlainObject(val)) {\n const obj = val as { [key: string]: any };\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n return rv as T;\n }\n\n if (Array.isArray(val)) {\n return val.map(dropUndefinedKeys) as any;\n }\n\n return val;\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","import {\n Breadcrumb,\n Event,\n EventHint,\n EventProcessor,\n Scope as ScopeInterface,\n Severity,\n Span,\n User,\n} from '@sentry/types';\nimport { getGlobalObject, isThenable, SyncPromise, timestampWithMs } from '@sentry/utils';\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifiying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: string } = {};\n\n /** Extra */\n protected _extra: { [key: string]: any } = {};\n\n /** Contexts */\n protected _context: { [key: string]: any } = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction */\n protected _transaction?: string;\n\n /** Span */\n protected _span?: Span;\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n setTimeout(() => {\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n });\n }\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n // tslint:disable-next-line:strict-type-predicates\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n (result as PromiseLike)\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: string }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: string): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: { [key: string]: any }): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: any): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransaction(transaction?: string): this {\n this._transaction = transaction;\n if (this._span) {\n (this._span as any).transaction = transaction;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: { [key: string]: any } | null): this {\n this._context = { ...this._context, [key]: context };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Internal getter for Span, used in Hub.\n * @hidden\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._context = { ...scope._context };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._transaction = scope._transaction;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n }\n return newScope;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._context = {};\n this._level = undefined;\n this._transaction = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const mergedBreadcrumb = {\n timestamp: timestampWithMs(),\n ...breadcrumb,\n };\n\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? [...this._breadcrumbs, mergedBreadcrumb].slice(-maxBreadcrumbs)\n : [...this._breadcrumbs, mergedBreadcrumb];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._context && Object.keys(this._context).length) {\n event.contexts = { ...this._context, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transaction) {\n event.transaction = this._transaction;\n }\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n}\n\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n const global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","import {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n Event,\n EventHint,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Severity,\n Span,\n SpanContext,\n User,\n} from '@sentry/types';\nimport { consoleSandbox, getGlobalObject, isNodeEnv, logger, timestampWithMs, uuid4 } from '@sentry/utils';\n\nimport { Carrier, Layer } from './interfaces';\nimport { Scope } from './scope';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be incresed when the global interface\n * changes a and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 3;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this._stack.push({ client, scope });\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _invokeClient(method: M, ...args: any[]): void {\n const top = this.getStackTop();\n if (top && top.client && top.client[method]) {\n (top.client as any)[method](...args, top.scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const stack = this.getStack();\n const parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined;\n const scope = Scope.clone(parentScope);\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n return this.getStack().pop() !== undefined;\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const top = this.getStackTop();\n\n if (!top.scope || !top.client) {\n return;\n }\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (top.client.getOptions && top.client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) {\n return;\n }\n\n const timestamp = timestampWithMs();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) {\n return;\n }\n\n top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: string }): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: { [key: string]: any }): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: string): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: any): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const top = this.getStackTop();\n if (top.scope && top.client) {\n callback(top.scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) {\n return null;\n }\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(spanOrSpanContext?: Span | SpanContext, forceNoChild: boolean = false): Span {\n return this._callExtensionMethod('startSpan', spanOrSpanContext, forceNoChild);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n // tslint:disable-next-line: strict-type-predicates\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/** Returns the global shim registry. */\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, fallback to the registry if one doesnt exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const property = 'domain';\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n // tslint:disable-next-line: strict-type-predicates\n if (!sentry || !sentry.extensions || !sentry.extensions[property]) {\n return getHubFromCarrier(registry);\n }\n const domain = sentry.extensions[property] as any;\n const activeDomain = domain.active;\n\n // If there no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or its an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return true;\n }\n return false;\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return carrier.__SENTRY__.hub;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) {\n return false;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n","export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\n// tslint:disable: no-unsafe-any\nconst _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n// tslint:enable: no-unsafe-any\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations, Transports };\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport interface IntegrationIndex {\n [key: string]: Integration;\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n let integrations: Integration[] = [];\n if (Array.isArray(userIntegrations)) {\n const userIntegrationsNames = userIntegrations.map(i => i.name);\n const pickedIntegrationsNames: string[] = [];\n\n // Leave only unique default integrations, that were not overridden with provided user integrations\n defaultIntegrations.forEach(defaultIntegration => {\n if (\n userIntegrationsNames.indexOf(defaultIntegration.name) === -1 &&\n pickedIntegrationsNames.indexOf(defaultIntegration.name) === -1\n ) {\n integrations.push(defaultIntegration);\n pickedIntegrationsNames.push(defaultIntegration.name);\n }\n });\n\n // Don't add same user integration twice\n userIntegrations.forEach(userIntegration => {\n if (pickedIntegrationsNames.indexOf(userIntegration.name) === -1) {\n integrations.push(userIntegration);\n pickedIntegrationsNames.push(userIntegration.name);\n }\n });\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n } else {\n integrations = [...defaultIntegrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/** Setup given integration */\nexport function setupIntegration(integration: Integration): void {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(`Integration installed: ${integration.name}`);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options: O): IntegrationIndex {\n const integrations: IntegrationIndex = {};\n getIntegrationsToSetup(options).forEach(integration => {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n return integrations;\n}\n","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n // tslint:disable:no-unused-expression\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // It really needs 1 argument, not 0.\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore\n // tslint:disable:no-unused-expression\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n // tslint:disable:no-unused-expression\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n // tslint:disable-next-line:no-unused-expression\n new Headers();\n // tslint:disable-next-line:no-unused-expression\n new Request('');\n // tslint:disable-next-line:no-unused-expression\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n // tslint:disable-next-line:no-unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = global.document;\n // tslint:disable-next-line:no-unbound-method deprecation\n if (doc && typeof (doc.createElement as unknown) === `function`) {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // tslint:disable-next-line:no-unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n // tslint:disable-next-line: no-unsafe-any\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n // tslint:disable:no-unused-expression\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n const global = getGlobalObject();\n const chrome = (global as any).chrome;\n // tslint:disable-next-line:no-unsafe-any\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","// tslint:disable:object-literal-sort-keys\n\n/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\n\n/**\n * An object representing a single stack frame.\n * {Object} StackFrame\n * {string} url The JavaScript or HTML file URL.\n * {string} func The function name, or empty for anonymous functions (if guessing did not work).\n * {string[]?} args The arguments passed to the function, if known.\n * {number=} line The line number, if known.\n * {number=} column The column number, if known.\n * {string[]} context An array of source code lines; the middle element corresponds to the correct line#.\n */\nexport interface StackFrame {\n url: string;\n func: string;\n args: string[];\n line: number | null;\n column: number | null;\n}\n\n/**\n * An object representing a JavaScript stack trace.\n * {Object} StackTrace\n * {string} name The name of the thrown exception.\n * {string} message The exception error message.\n * {TraceKit.StackFrame[]} stack An array of stack frames.\n */\nexport interface StackTrace {\n name: string;\n message: string;\n mechanism?: string;\n stack: StackFrame[];\n failed?: boolean;\n}\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n/** JSDoc */\nexport function computeStackTrace(ex: any): StackTrace {\n // tslint:disable:no-unsafe-any\n\n let stack = null;\n const popSize: number = ex && ex.framesToPop;\n\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n } catch (e) {\n // no-empty\n }\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n } catch (e) {\n // no-empty\n }\n\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n\n/** JSDoc */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction computeStackTraceFromStackProp(ex: any): StackTrace | null {\n // tslint:disable:no-conditional-assignment\n if (!ex || !ex.stack) {\n return null;\n }\n\n const stack = [];\n const lines = ex.stack.split('\\n');\n let isEval;\n let submatch;\n let parts;\n let element;\n\n for (let i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || `eval`;\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n } else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = (ex.columnNumber as number) + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack,\n };\n}\n\n/** JSDoc */\nfunction computeStackTraceFromStacktraceProp(ex: any): StackTrace | null {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace;\n const opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n const opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i;\n const lines = stacktrace.split('\\n');\n const stack = [];\n let parts;\n\n for (let line = 0; line < lines.length; line += 2) {\n // tslint:disable:no-conditional-assignment\n let element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n } else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack,\n };\n}\n\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace: StackTrace, popSize: number): StackTrace {\n try {\n return {\n ...stacktrace,\n stack: stacktrace.stack.slice(popSize),\n };\n } catch (e) {\n return stacktrace;\n }\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: any): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n","import { Event, Exception, StackFrame } from '@sentry/types';\nimport { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\n\nimport { computeStackTrace, StackFrame as TraceKitStackFrame, StackTrace as TraceKitStackTrace } from './tracekit';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): Exception {\n const frames = prepareFramesForEvent(stacktrace.stack);\n\n const exception: Exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n\n if (frames && frames.length) {\n exception.stacktrace = { frames };\n }\n\n // tslint:disable-next-line:strict-type-predicates\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception: {}, syntheticException?: Error, rejection?: boolean): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n rejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const stacktrace = computeStackTrace(syntheticException);\n const frames = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames,\n };\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace: TraceKitStackTrace): Event {\n const exception = exceptionFromStacktrace(stacktrace);\n\n return {\n exception: {\n values: [exception],\n },\n };\n}\n\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack: TraceKitStackFrame[]): StackFrame[] {\n if (!stack || !stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].func || '';\n const lastFrameFunction = localStack[localStack.length - 1].func || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .map(\n (frame: TraceKitStackFrame): StackFrame => ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }),\n )\n .slice(0, STACKTRACE_LIMIT)\n .reverse();\n}\n","import { Event } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n} from '@sentry/utils';\n\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n\n/** JSDoc */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n options: {\n rejection?: boolean;\n attachStacktrace?: boolean;\n } = {},\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n return event;\n }\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n const domException = exception as DOMException;\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n return event;\n }\n if (isError(exception as Error)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it is plain Object or Event, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n const objectException = exception as {};\n event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, options);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n// this._options.attachStacktrace\n/** JSDoc */\nexport function eventFromString(\n input: string,\n syntheticException?: Error,\n options: {\n attachStacktrace?: boolean;\n } = {},\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (options.attachStacktrace && syntheticException) {\n const stacktrace = computeStackTrace(syntheticException);\n const frames = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames,\n };\n }\n\n return event;\n}\n","import { captureException, withScope } from '@sentry/core';\nimport { Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue } from '@sentry/utils';\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n): any {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // We don't wanna wrap it twice\n if (fn.__sentry__) {\n return fn;\n }\n\n // If this has already been wrapped in the past, return that wrapped function\n if (fn.__sentry_wrapped__) {\n return fn.__sentry_wrapped__;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n const sentryWrapped: WrappedFunction = function(this: any): void {\n const args = Array.prototype.slice.call(arguments);\n\n // tslint:disable:no-unsafe-any\n try {\n // tslint:disable-next-line:strict-type-predicates\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n if (fn.handleEvent) {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.handleEvent.apply(this, wrappedArguments);\n }\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n // tslint:enable:no-unsafe-any\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n const processedEvent = { ...event };\n\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined);\n addExceptionMechanism(processedEvent, options.mechanism);\n }\n\n processedEvent.extra = {\n ...processedEvent.extra,\n arguments: args,\n };\n\n return processedEvent;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // tslint:disable-line:no-empty\n\n fn.prototype = fn.prototype || {};\n sentryWrapped.prototype = fn.prototype;\n\n Object.defineProperty(fn, '__sentry_wrapped__', {\n enumerable: false,\n value: sentryWrapped,\n });\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n Object.defineProperties(sentryWrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: fn,\n },\n });\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n } catch (_oO) {\n /*no-empty*/\n }\n\n return sentryWrapped;\n}\n","/* tslint:disable:only-arrow-functions no-unsafe-any */\n\nimport { WrappedFunction } from '@sentry/types';\n\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getFunctionName, getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\n/** Object describing handler that will be triggered for a given `type` of instrumentation */\ninterface InstrumentHandler {\n type: InstrumentHandlerType;\n callback: InstrumentHandlerCallback;\n}\ntype InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\ntype InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler: InstrumentHandler): void {\n // tslint:disable-next-line:strict-type-predicates\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n (handlers[handler.type] as InstrumentHandlerCallback[]).push(handler.callback);\n instrument(handler.type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(\n handler,\n )}\\nError: ${e}`,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function(level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function(originalConsoleLevel: () => any): Function {\n return function(...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function(originalFetch: () => void): () => void {\n return function(...args: any[]): void {\n const commonHandlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...commonHandlerData,\n });\n\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n error,\n });\n throw error;\n },\n );\n };\n });\n}\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n };\n}\n\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function(originalOpen: () => void): () => void {\n return function(this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const url = args[1];\n this.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n if (isString(url) && this.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function(originalSend: () => void): () => void {\n return function(this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const xhr = this; // tslint:disable-line:no-this-assignment\n const commonHandlerData = {\n args,\n startTimestamp: Date.now(),\n xhr,\n };\n\n triggerHandlers('xhr', {\n ...commonHandlerData,\n });\n\n xhr.addEventListener('readystatechange', function(): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n } catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function(this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n return oldOnPopState.apply(this, args);\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function(this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\n }\n\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach((target: string) => {\n const proto = (global as any)[target] && (global as any)[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function(\n original: () => void,\n ): (\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerOrEventListenerObject, capture?: boolean, secure?: boolean) => void {\n if (fn && (fn as EventListenerObject).handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function(innerOriginal: () => void): (caughtEvent: Event) => void {\n return function(this: any, event: Event): (event: Event) => void {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function(innerOriginal: () => void): (caughtEvent: Event) => void {\n return function(this: any, event: Event): (event: Event) => void {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n } else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n\n return original.call(this, eventName, fn, options);\n };\n });\n\n fill(proto, 'removeEventListener', function(\n original: () => void,\n ): (\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) => () => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n let callback = fn as WrappedFunction;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n });\n}\n\nconst debounceDuration: number = 1000;\nlet debounceTimer: number = 0;\nlet keypressTimeout: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name: string, handler: Function, debounce: boolean = false): (event: Event) => void {\n return (event: Event) => {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n keypressTimeout = undefined;\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n lastCapturedEvent = event;\n\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n if (debounce) {\n debounceTimer = setTimeout(() => {\n handler({ event, name });\n });\n } else {\n handler({ event, name });\n }\n };\n}\n\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler: Function): (event: Event) => void {\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return (event: Event) => {\n let target;\n\n try {\n target = event.target;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n\n const tagName = target && (target as HTMLElement).tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !(target as HTMLElement).isContentEditable)) {\n return;\n }\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n\n keypressTimeout = (setTimeout(() => {\n keypressTimeout = undefined;\n }, debounceDuration) as any) as number;\n };\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function(msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function(e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","import { API, getCurrentHub } from '@sentry/core';\nimport { Integration, Severity } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n getGlobalObject,\n htmlTreeAsString,\n logger,\n parseUrl,\n safeJoin,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\n\n/**\n * @hidden\n */\nexport interface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n };\n}\n\n/** JSDoc */\ninterface BreadcrumbIntegrations {\n console?: boolean;\n dom?: boolean;\n fetch?: boolean;\n history?: boolean;\n sentry?: boolean;\n xhr?: boolean;\n}\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'Breadcrumbs';\n\n /** JSDoc */\n private readonly _options: BreadcrumbIntegrations;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: BreadcrumbIntegrations) {\n this._options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Creates breadcrumbs from console API calls\n */\n private _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: Severity.fromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n }\n\n /**\n * Creates breadcrumbs from DOM API calls\n */\n private _domBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node)\n : htmlTreeAsString((handlerData.event as unknown) as Node);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n },\n );\n }\n\n /**\n * Creates breadcrumbs from XHR API calls\n */\n private _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: handlerData.xhr.__sentry_xhr__,\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n },\n );\n\n return;\n }\n\n // We only capture issued sentry requests\n if (this._options.sentry && handlerData.xhr.__sentry_own_request__) {\n addSentryBreadcrumb(handlerData.args[0]);\n }\n }\n\n /**\n * Creates breadcrumbs from fetch API calls\n */\n private _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n const client = getCurrentHub().getClient();\n const dsn = client && client.getDsn();\n if (this._options.sentry && dsn) {\n const filterUrl = new API(dsn).getStoreEndpoint();\n // if Sentry key appears in URL, don't capture it as a request\n // but rather as our own 'sentry' type breadcrumb\n if (\n filterUrl &&\n handlerData.fetchData.url.indexOf(filterUrl) !== -1 &&\n handlerData.fetchData.method === 'POST' &&\n handlerData.args[1] &&\n handlerData.args[1].body\n ) {\n addSentryBreadcrumb(handlerData.args[1].body);\n return;\n }\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n level: Severity.Error,\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n }\n\n /**\n * Creates breadcrumbs from history API calls\n */\n private _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this._options.console) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._consoleBreadcrumb(...args);\n },\n type: 'console',\n });\n }\n if (this._options.dom) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._domBreadcrumb(...args);\n },\n type: 'dom',\n });\n }\n if (this._options.xhr) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._xhrBreadcrumb(...args);\n },\n type: 'xhr',\n });\n }\n if (this._options.fetch) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._fetchBreadcrumb(...args);\n },\n type: 'fetch',\n });\n }\n if (this._options.history) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._historyBreadcrumb(...args);\n },\n type: 'history',\n });\n }\n }\n}\n\n/**\n * Create a breadcrumb of `sentry` from the events themselves\n */\nfunction addSentryBreadcrumb(serializedData: string): void {\n // There's always something that can go wrong with deserialization...\n try {\n const event = JSON.parse(serializedData);\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level || Severity.fromString('error'),\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n } catch (_oO) {\n logger.error('Error while adding sentry type breadcrumb');\n }\n}\n","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject, SyncPromise } from '@sentry/utils';\n\nimport { BrowserOptions } from './backend';\nimport { BrowserClient, ReportDialogOptions } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new UserAgent(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n const window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n initAndBind(BrowserClient, options);\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}): void {\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n const client = getCurrentHub().getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n return SyncPromise.reject(false);\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n return SyncPromise.reject(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nexport function wrap(fn: Function): any {\n return internalWrap(fn)(); // tslint:disable-line:no-unsafe-any\n}\n","/** JSDoc */\nexport enum Severity {\n /** JSDoc */\n Fatal = 'fatal',\n /** JSDoc */\n Error = 'error',\n /** JSDoc */\n Warning = 'warning',\n /** JSDoc */\n Log = 'log',\n /** JSDoc */\n Info = 'info',\n /** JSDoc */\n Debug = 'debug',\n /** JSDoc */\n Critical = 'critical',\n}\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\nexport namespace Severity {\n /**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\n export function fromString(level: string): Severity {\n switch (level) {\n case 'debug':\n return Severity.Debug;\n case 'info':\n return Severity.Info;\n case 'warn':\n case 'warning':\n return Severity.Warning;\n case 'error':\n return Severity.Error;\n case 'fatal':\n return Severity.Fatal;\n case 'critical':\n return Severity.Critical;\n case 'log':\n default:\n return Severity.Log;\n }\n }\n}\n","/** The status of an event. */\nexport enum Status {\n /** The status could not be determined. */\n Unknown = 'unknown',\n /** The event was skipped due to configuration or callbacks. */\n Skipped = 'skipped',\n /** The event was sent to Sentry successfully. */\n Success = 'success',\n /** The client is currently rate limited and will try again later. */\n RateLimit = 'rate_limit',\n /** The event could not be processed. */\n Invalid = 'invalid',\n /** A server-side error ocurred during submission. */\n Failed = 'failed',\n}\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\nexport namespace Status {\n /**\n * Converts a HTTP status code into a {@link Status}.\n *\n * @param code The HTTP response status code.\n * @returns The send status or {@link Status.Unknown}.\n */\n export function fromHttpCode(code: number): Status {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n\n if (code === 429) {\n return Status.RateLimit;\n }\n\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n\n if (code >= 500) {\n return Status.Failed;\n }\n\n return Status.Unknown;\n }\n}\n","import { isThenable } from './is';\n\n/** SyncPromise internal states */\nenum States {\n /** Pending */\n PENDING = 'PENDING',\n /** Resolved / OK */\n RESOLVED = 'RESOLVED',\n /** Rejected / Error */\n REJECTED = 'REJECTED',\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<{\n done: boolean;\n onfulfilled?: ((value: T) => T | PromiseLike) | null;\n onrejected?: ((reason: any) => any) | null;\n }> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public toString(): string {\n return '[object SyncPromise]';\n }\n\n /** JSDoc */\n public static resolve(value: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n }\n\n /** JSDoc */\n public static reject(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n }\n\n /** JSDoc */\n public static all(collection: Array>): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n if (!Array.isArray(collection)) {\n reject(new TypeError(`Promise.all requires an array as input.`));\n return;\n }\n\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n\n let counter = collection.length;\n const resolvedCollection: U[] = [];\n\n collection.forEach((item, index) => {\n SyncPromise.resolve(item)\n .then(value => {\n resolvedCollection[index] = value;\n counter -= 1;\n\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._attachHandler({\n done: false,\n onfulfilled: result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: reason => {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve((val as unknown) as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n // TODO: FIXME\n /** JSDoc */\n private readonly _attachHandler = (handler: {\n /** JSDoc */\n done: boolean;\n /** JSDoc */\n onfulfilled?(value: T): any;\n /** JSDoc */\n onrejected?(reason: any): any;\n }) => {\n this._handlers = this._handlers.concat(handler);\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler.done) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n handler.onfulfilled((this._value as unknown) as any);\n }\n }\n\n if (this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(this._value);\n }\n }\n\n handler.done = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { consoleSandbox, getGlobalObject } from './misc';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** JSDoc */\nclass Logger {\n /** JSDoc */\n private _enabled: boolean;\n\n /** JSDoc */\n public constructor() {\n this._enabled = false;\n }\n\n /** JSDoc */\n public disable(): void {\n this._enabled = false;\n }\n\n /** JSDoc */\n public enable(): void {\n this._enabled = true;\n }\n\n /** JSDoc */\n public log(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.log(`${PREFIX}[Log]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n\n /** JSDoc */\n public warn(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n\n /** JSDoc */\n public error(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.error(`${PREFIX}[Error]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nconst logger = (global.__SENTRY__.logger as Logger) || (global.__SENTRY__.logger = new Logger());\n\nexport { logger };\n","import { Integration, WrappedFunction } from '@sentry/types';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n originalFunctionToString = Function.prototype.toString;\n\n Function.prototype.toString = function(this: WrappedFunction, ...args: any[]): string {\n const context = this.__sentry_original__ || this;\n // tslint:disable-next-line:no-unsafe-any\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","export const setPrototypeOf =\n Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); // tslint:disable-line:no-unbound-method\n\n/**\n * setPrototypeOf polyfill using __proto__\n */\nfunction setProtoOf(obj: TTarget, proto: TProto): TTarget & TProto {\n // @ts-ignore\n obj.__proto__ = proto;\n return obj as TTarget & TProto;\n}\n\n/**\n * setPrototypeOf polyfill using mixin\n */\nfunction mixinProperties(obj: TTarget, proto: TProto): TTarget & TProto {\n for (const prop in proto) {\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore\n obj[prop] = proto[prop];\n }\n }\n\n return obj as TTarget & TProto;\n}\n","import { setPrototypeOf } from './polyfill';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n // tslint:disable:no-unsafe-any\n this.name = new.target.prototype.constructor.name;\n setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w\\.-]+)(?::(\\d+))?\\/(.+)/;\n\n/** Error message */\nconst ERROR_MESSAGE = 'Invalid Dsn';\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport class Dsn implements DsnComponents {\n /** Protocol used to connect to Sentry. */\n public protocol!: DsnProtocol;\n /** Public authorization key. */\n public user!: string;\n /** Private authorization key (deprecated, optional). */\n public pass!: string;\n /** Hostname of the Sentry instance. */\n public host!: string;\n /** Port of the Sentry instance. */\n public port!: string;\n /** Path */\n public path!: string;\n /** Project ID */\n public projectId!: string;\n\n /** Creates a new Dsn component */\n public constructor(from: DsnLike) {\n if (typeof from === 'string') {\n this._fromString(from);\n } else {\n this._fromComponents(from);\n }\n\n this._validate();\n }\n\n /**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\n public toString(withPassword: boolean = false): string {\n // tslint:disable-next-line:no-this-assignment\n const { host, path, pass, port, projectId, protocol, user } = this;\n return (\n `${protocol}://${user}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n }\n\n /** Parses a string into this Dsn. */\n private _fromString(str: string): void {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(ERROR_MESSAGE);\n }\n\n const [protocol, user, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n this._fromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, user });\n }\n\n /** Maps Dsn components into this instance. */\n private _fromComponents(components: DsnComponents): void {\n this.protocol = components.protocol;\n this.user = components.user;\n this.pass = components.pass || '';\n this.host = components.host;\n this.port = components.port || '';\n this.path = components.path || '';\n this.projectId = components.projectId;\n }\n\n /** Validates this Dsn and throws on error. */\n private _validate(): void {\n ['protocol', 'user', 'host', 'projectId'].forEach(component => {\n if (!this[component as keyof DsnComponents]) {\n throw new SentryError(ERROR_MESSAGE);\n }\n });\n\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE);\n }\n\n if (this.port && isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE);\n }\n }\n}\n","import { DsnLike } from '@sentry/types';\nimport { Dsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Helper class to provide urls to different Sentry endpoints. */\nexport class API {\n /** The internally used Dsn object. */\n private readonly _dsnObject: Dsn;\n /** Create a new instance of API */\n public constructor(public dsn: DsnLike) {\n this._dsnObject = new Dsn(dsn);\n }\n\n /** Returns the Dsn object. */\n public getDsn(): Dsn {\n return this._dsnObject;\n }\n\n /** Returns a string with auth headers in the url to the store endpoint. */\n public getStoreEndpoint(): string {\n return `${this._getBaseUrl()}${this.getStoreEndpointPath()}`;\n }\n\n /** Returns the store endpoint with auth added in url encoded. */\n public getStoreEndpointWithUrlEncodedAuth(): string {\n const dsn = this._dsnObject;\n const auth = {\n sentry_key: dsn.user, // sentry_key is currently used in tracing integration to identify internal sentry requests\n sentry_version: SENTRY_API_VERSION,\n };\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header)\n // to avoid preflight CORS requests\n return `${this.getStoreEndpoint()}?${urlEncode(auth)}`;\n }\n\n /** Returns the base path of the url including the port. */\n private _getBaseUrl(): string {\n const dsn = this._dsnObject;\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}`;\n }\n\n /** Returns only the path component for the store endpoint. */\n public getStoreEndpointPath(): string {\n const dsn = this._dsnObject;\n return `${dsn.path ? `/${dsn.path}` : ''}/api/${dsn.projectId}/store/`;\n }\n\n /** Returns an object that can be used in request headers. */\n public getRequestHeaders(clientName: string, clientVersion: string): { [key: string]: string } {\n const dsn = this._dsnObject;\n const header = [`Sentry sentry_version=${SENTRY_API_VERSION}`];\n header.push(`sentry_client=${clientName}/${clientVersion}`);\n header.push(`sentry_key=${dsn.user}`);\n if (dsn.pass) {\n header.push(`sentry_secret=${dsn.pass}`);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n }\n\n /** Returns the url to the report dialog endpoint. */\n public getReportDialogEndpoint(\n dialogOptions: {\n [key: string]: any;\n user?: { name?: string; email?: string };\n } = {},\n ): string {\n const dsn = this._dsnObject;\n const endpoint = `${this._getBaseUrl()}${dsn.path ? `/${dsn.path}` : ''}/api/embed/error-page/`;\n\n const encodedOptions = [];\n encodedOptions.push(`dsn=${dsn.toString()}`);\n for (const key in dialogOptions) {\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions.push(`name=${encodeURIComponent(dialogOptions.user.name)}`);\n }\n if (dialogOptions.user.email) {\n encodedOptions.push(`email=${encodeURIComponent(dialogOptions.user.email)}`);\n }\n } else {\n encodedOptions.push(`${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`);\n }\n }\n if (encodedOptions.length) {\n return `${endpoint}?${encodedOptions.join('&')}`;\n }\n\n return endpoint;\n }\n}\n","import { Scope } from '@sentry/hub';\nimport { Client, Event, EventHint, Integration, IntegrationClass, Options, SdkInfo, Severity } from '@sentry/types';\nimport { Dsn, isPrimitive, isThenable, logger, normalize, SyncPromise, truncate, uuid4 } from '@sentry/utils';\n\nimport { Backend, BackendClass } from './basebackend';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient.prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * The backend used to physically interact in the enviornment. Usually, this\n * will correspond to the client. When composing SDKs, however, the Backend\n * from the root SDK will be used.\n */\n protected readonly _backend: B;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: Dsn;\n\n /** Array of used integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Is the client still processing a call? */\n protected _processing: boolean = false;\n\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n protected constructor(backendClass: BackendClass, options: O) {\n this._backend = new backendClass(options);\n this._options = options;\n\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n this._processing = true;\n\n this._getBackend()\n .eventFromException(exception, hint)\n .then(event => this._processEvent(event, hint, scope))\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n this._processing = true;\n\n const promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(`${message}`, level, hint)\n : this._getBackend().eventFromException(message, hint);\n\n promisedEvent\n .then(event => this._processEvent(event, hint, scope))\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n this._processing = true;\n\n this._processEvent(event, hint, scope)\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): Dsn | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n return this._isClientProcessing(timeout).then(status => {\n clearInterval(status.interval);\n return this._getBackend()\n .getTransport()\n .close(timeout)\n .then(transportFlushed => status.ready && transportFlushed);\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /** Waits for the client to be done with processing. */\n protected _isClientProcessing(timeout?: number): PromiseLike<{ ready: boolean; interval: number }> {\n return new SyncPromise<{ ready: boolean; interval: number }>(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n let interval = 0;\n clearInterval(interval);\n\n interval = (setInterval(() => {\n if (!this._processing) {\n resolve({\n interval,\n ready: true,\n });\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n resolve({\n interval,\n ready: false,\n });\n }\n }\n }, tick) as unknown) as number;\n });\n }\n\n /** Returns the current backend. */\n protected _getBackend(): B {\n return this._backend;\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n const { environment, release, dist, maxValueLength = 250, normalizeDepth = 3 } = this.getOptions();\n\n const prepared: Event = { ...event };\n if (prepared.environment === undefined && environment !== undefined) {\n prepared.environment = environment;\n }\n if (prepared.release === undefined && release !== undefined) {\n prepared.release = release;\n }\n\n if (prepared.dist === undefined && dist !== undefined) {\n prepared.dist = dist;\n }\n\n if (prepared.message) {\n prepared.message = truncate(prepared.message, maxValueLength);\n }\n\n const exception = prepared.exception && prepared.exception.values && prepared.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = prepared.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n\n if (prepared.event_id === undefined) {\n prepared.event_id = hint && hint.event_id ? hint.event_id : uuid4();\n }\n\n this._addIntegrations(prepared.sdk);\n\n // We prepare the result here with a resolved Event.\n let result = SyncPromise.resolve(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (scope) {\n // In case we have a hub we reassign it.\n result = scope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number): Event | null {\n if (!event) {\n return null;\n }\n\n // tslint:disable:no-unsafe-any\n return {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth),\n }),\n };\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.\n */\n protected _addIntegrations(sdkInfo?: SdkInfo): void {\n const integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.integrations = integrationsArray;\n }\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return SyncPromise.reject('SDK not enabled, will not send event.');\n }\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n if (typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject('This event has been sampled, will not send event.');\n }\n\n return new SyncPromise((resolve, reject) => {\n this._prepareEvent(event, scope, hint)\n .then(prepared => {\n if (prepared === null) {\n reject('An event processor returned null, will not send event.');\n return;\n }\n\n let finalEvent: Event | null = prepared;\n\n const isInternalException = hint && hint.data && (hint.data as { [key: string]: any }).__sentry__ === true;\n if (isInternalException || !beforeSend) {\n this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n return;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n // tslint:disable-next-line:strict-type-predicates\n if (typeof beforeSendResult === 'undefined') {\n logger.error('`beforeSend` method has to return `null` or a valid event.');\n } else if (isThenable(beforeSendResult)) {\n this._handleAsyncBeforeSend(beforeSendResult as PromiseLike, resolve, reject);\n } else {\n finalEvent = beforeSendResult as Event | null;\n\n if (finalEvent === null) {\n logger.log('`beforeSend` returned `null`, will not send event.');\n resolve(null);\n return;\n }\n\n // From here on we are really async\n this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n }\n })\n .then(null, reason => {\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n reject(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n });\n }\n\n /**\n * Resolves before send Promise and calls resolve/reject on parent SyncPromise.\n */\n private _handleAsyncBeforeSend(\n beforeSend: PromiseLike,\n resolve: (event: Event) => void,\n reject: (reason: string) => void,\n ): void {\n beforeSend\n .then(processedEvent => {\n if (processedEvent === null) {\n reject('`beforeSend` returned `null`, will not send event.');\n return;\n }\n // From here on we are really async\n this._getBackend().sendEvent(processedEvent);\n resolve(processedEvent);\n })\n .then(null, e => {\n reject(`beforeSend rejected with ${e}`);\n });\n }\n}\n","import { Event, Response, Status, Transport } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\n/** Noop transport */\nexport class NoopTransport implements Transport {\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n return SyncPromise.resolve({\n reason: `NoopTransport: Event has been skipped because no Dsn is configured.`,\n status: Status.Skipped,\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(_?: number): PromiseLike {\n return SyncPromise.resolve(true);\n }\n}\n","import { Event, EventHint, Options, Severity, Transport } from '@sentry/types';\nimport { logger, SentryError } from '@sentry/utils';\n\nimport { NoopTransport } from './transports/noop';\n\n/**\n * Internal platform-dependent Sentry SDK Backend.\n *\n * While {@link Client} contains business logic specific to an SDK, the\n * Backend offers platform specific implementations for low-level operations.\n * These are persisting and loading information, sending events, and hooking\n * into the environment.\n *\n * Backends receive a handle to the Client in their constructor. When a\n * Backend automatically generates events, it must pass them to\n * the Client for validation and processing first.\n *\n * Usually, the Client will be of corresponding type, e.g. NodeBackend\n * receives NodeClient. However, higher-level SDKs can choose to instanciate\n * multiple Backends and delegate tasks between them. In this case, an event\n * generated by one backend might very well be sent by another one.\n *\n * The client also provides access to options via {@link Client.getOptions}.\n * @hidden\n */\nexport interface Backend {\n /** Creates a {@link Event} from an exception. */\n eventFromException(exception: any, hint?: EventHint): PromiseLike;\n\n /** Creates a {@link Event} from a plain message. */\n eventFromMessage(message: string, level?: Severity, hint?: EventHint): PromiseLike;\n\n /** Submits the event to Sentry */\n sendEvent(event: Event): void;\n\n /**\n * Returns the transport that is used by the backend.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n *\n * @returns The transport.\n */\n getTransport(): Transport;\n}\n\n/**\n * A class object that can instanciate Backend objects.\n * @hidden\n */\nexport type BackendClass = new (options: O) => B;\n\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nexport abstract class BaseBackend implements Backend {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** Cached transport used internally. */\n protected _transport: Transport;\n\n /** Creates a new backend instance. */\n public constructor(options: O) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n protected _setupTransport(): Transport {\n return new NoopTransport();\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(_exception: any, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromException` method');\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(_message: string, _level?: Severity, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): void {\n this._transport.sendEvent(event).then(null, reason => {\n logger.error(`Error while sending event: ${reason}`);\n });\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._transport;\n }\n}\n","import { SentryError } from './error';\nimport { SyncPromise } from './syncpromise';\n\n/** A simple queue that holds promises. */\nexport class PromiseBuffer {\n public constructor(protected _limit?: number) {}\n\n /** Internal set of queued Promises */\n private readonly _buffer: Array> = [];\n\n /**\n * Says if the buffer is ready to take more requests\n */\n public isReady(): boolean {\n return this._limit === undefined || this.length() < this._limit;\n }\n\n /**\n * Add a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns The original promise.\n */\n public add(task: PromiseLike): PromiseLike {\n if (!this.isReady()) {\n return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n if (this._buffer.indexOf(task) === -1) {\n this._buffer.push(task);\n }\n task\n .then(() => this.remove(task))\n .then(null, () =>\n this.remove(task).then(null, () => {\n // We have to add this catch here otherwise we have an unhandledPromiseRejection\n // because it's a new Promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Remove a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n public remove(task: PromiseLike): PromiseLike {\n const removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n return removedTask;\n }\n\n /**\n * This function returns the number of unresolved promises in the queue.\n */\n public length(): number {\n return this._buffer.length;\n }\n\n /**\n * This will drain the whole queue, returns true if queue is empty or drained.\n * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n *\n * @param timeout Number in ms to wait until it resolves with false.\n */\n public drain(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n SyncPromise.all(this._buffer)\n .then(() => {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n })\n .then(null, () => {\n resolve(true);\n });\n });\n }\n}\n","import { API } from '@sentry/core';\nimport { Event, Response, Transport, TransportOptions } from '@sentry/types';\nimport { PromiseBuffer, SentryError } from '@sentry/utils';\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @inheritDoc\n */\n public url: string;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer = new PromiseBuffer(30);\n\n public constructor(public options: TransportOptions) {\n this.url = new API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth();\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this._buffer.drain(timeout);\n }\n}\n","import { Event, Response, Status } from '@sentry/types';\nimport { getGlobalObject, logger, parseRetryAfterHeader, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\nconst global = getGlobalObject();\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /** Locks transport after receiving 429 response */\n private _disabledUntil: Date = new Date(Date.now());\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event,\n reason: `Transport locked till ${this._disabledUntil} due to too many requests.`,\n status: 429,\n });\n }\n\n const defaultOptions: RequestInit = {\n body: JSON.stringify(event),\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n\n if (this.options.headers !== undefined) {\n defaultOptions.headers = this.options.headers;\n }\n\n return this._buffer.add(\n new SyncPromise((resolve, reject) => {\n global\n .fetch(this.url, defaultOptions)\n .then(response => {\n const status = Status.fromHttpCode(response.status);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n if (status === Status.RateLimit) {\n const now = Date.now();\n this._disabledUntil = new Date(now + parseRetryAfterHeader(now, response.headers.get('Retry-After')));\n logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);\n }\n\n reject(response);\n })\n .catch(reject);\n }),\n );\n }\n}\n","import { Event, Response, Status } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\n/** `XHR` based transport */\nexport class XHRTransport extends BaseTransport {\n /** Locks transport after receiving 429 response */\n private _disabledUntil: Date = new Date(Date.now());\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event,\n reason: `Transport locked till ${this._disabledUntil} due to too many requests.`,\n status: 429,\n });\n }\n\n return this._buffer.add(\n new SyncPromise((resolve, reject) => {\n const request = new XMLHttpRequest();\n\n request.onreadystatechange = () => {\n if (request.readyState !== 4) {\n return;\n }\n\n const status = Status.fromHttpCode(request.status);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n if (status === Status.RateLimit) {\n const now = Date.now();\n this._disabledUntil = new Date(now + parseRetryAfterHeader(now, request.getResponseHeader('Retry-After')));\n logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);\n }\n\n reject(request);\n };\n\n request.open('POST', this.url);\n for (const header in this.options.headers) {\n if (this.options.headers.hasOwnProperty(header)) {\n request.setRequestHeader(header, this.options.headers[header]);\n }\n }\n request.send(JSON.stringify(event));\n }),\n );\n }\n}\n","import { BaseBackend } from '@sentry/core';\nimport { Event, EventHint, Options, Severity, Transport } from '@sentry/types';\nimport { addExceptionMechanism, supportsFetch, SyncPromise } from '@sentry/utils';\n\nimport { eventFromString, eventFromUnknownInput } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see BrowserClient for more information.\n */\nexport interface BrowserOptions extends Options {\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To whitelist certain errors instead, use {@link Options.whitelistUrls}.\n * By default, all errors will be sent.\n */\n blacklistUrls?: Array;\n\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.blacklistUrls}.\n * By default, all errors will be sent.\n */\n whitelistUrls?: Array;\n}\n\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nexport class BrowserBackend extends BaseBackend {\n /**\n * @inheritDoc\n */\n protected _setupTransport(): Transport {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return super._setupTransport();\n }\n\n const transportOptions = {\n ...this._options.transportOptions,\n dsn: this._options.dsn,\n };\n\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: any, hint?: EventHint): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n }\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n }\n}\n","export const SDK_NAME = 'sentry.javascript.browser';\nexport const SDK_VERSION = '5.15.5';\n","import { API, BaseClient, Scope } from '@sentry/core';\nimport { DsnLike, Event, EventHint } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\nimport { BrowserBackend, BrowserOptions } from './backend';\nimport { SDK_NAME, SDK_VERSION } from './version';\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserOptions = {}) {\n super(BrowserBackend, options);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n event.platform = event.platform || 'javascript';\n event.sdk = {\n ...event.sdk,\n name: SDK_NAME,\n packages: [\n ...((event.sdk && event.sdk.packages) || []),\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n const document = getGlobalObject().document;\n if (!document) {\n return;\n }\n\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client is disabled');\n return;\n }\n\n const dsn = options.dsn || this.getDsn();\n\n if (!options.eventId) {\n logger.error('Missing `eventId` option in showReportDialog call');\n return;\n }\n\n if (!dsn) {\n logger.error('Missing `Dsn` option in showReportDialog call');\n return;\n }\n\n const script = document.createElement('script');\n script.async = true;\n script.src = new API(dsn).getReportDialogEndpoint(options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n (document.head || document.body).appendChild(script);\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Event, Integration } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** JSDoc */\ninterface InboundFiltersOptions {\n blacklistUrls?: Array;\n ignoreErrors?: Array;\n ignoreInternal?: boolean;\n whitelistUrls?: Array;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n public constructor(private readonly _options: InboundFiltersOptions = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n const hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = self._mergeOptions(clientOptions);\n if (self._shouldDropEvent(event, options)) {\n return null;\n }\n }\n return event;\n });\n }\n\n /** JSDoc */\n private _shouldDropEvent(event: Event, options: InboundFiltersOptions): boolean {\n if (this._isSentryError(event, options)) {\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (this._isBlacklistedUrl(event, options)) {\n logger.warn(\n `Event dropped due to being matched by \\`blacklistUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${this._getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!this._isWhitelistedUrl(event, options)) {\n logger.warn(\n `Event dropped due to not being matched by \\`whitelistUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${this._getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n }\n\n /** JSDoc */\n private _isSentryError(event: Event, options: InboundFiltersOptions = {}): boolean {\n if (!options.ignoreInternal) {\n return false;\n }\n\n try {\n return (\n (event &&\n event.exception &&\n event.exception.values &&\n event.exception.values[0] &&\n event.exception.values[0].type === 'SentryError') ||\n false\n );\n } catch (_oO) {\n return false;\n }\n }\n\n /** JSDoc */\n private _isIgnoredError(event: Event, options: InboundFiltersOptions = {}): boolean {\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n\n return this._getPossibleEventMessages(event).some(message =>\n // Not sure why TypeScript complains here...\n (options.ignoreErrors as Array).some(pattern => isMatchingPattern(message, pattern)),\n );\n }\n\n /** JSDoc */\n private _isBlacklistedUrl(event: Event, options: InboundFiltersOptions = {}): boolean {\n // TODO: Use Glob instead?\n if (!options.blacklistUrls || !options.blacklistUrls.length) {\n return false;\n }\n const url = this._getEventFilterUrl(event);\n return !url ? false : options.blacklistUrls.some(pattern => isMatchingPattern(url, pattern));\n }\n\n /** JSDoc */\n private _isWhitelistedUrl(event: Event, options: InboundFiltersOptions = {}): boolean {\n // TODO: Use Glob instead?\n if (!options.whitelistUrls || !options.whitelistUrls.length) {\n return true;\n }\n const url = this._getEventFilterUrl(event);\n return !url ? true : options.whitelistUrls.some(pattern => isMatchingPattern(url, pattern));\n }\n\n /** JSDoc */\n private _mergeOptions(clientOptions: InboundFiltersOptions = {}): InboundFiltersOptions {\n return {\n blacklistUrls: [...(this._options.blacklistUrls || []), ...(clientOptions.blacklistUrls || [])],\n ignoreErrors: [\n ...(this._options.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n whitelistUrls: [...(this._options.whitelistUrls || []), ...(clientOptions.whitelistUrls || [])],\n };\n }\n\n /** JSDoc */\n private _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n }\n\n /** JSDoc */\n private _getEventFilterUrl(event: Event): string | null {\n try {\n if (event.stacktrace) {\n const frames = event.stacktrace.frames;\n return (frames && frames[frames.length - 1].filename) || null;\n }\n if (event.exception) {\n const frames =\n event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n return (frames && frames[frames.length - 1].filename) || null;\n }\n return null;\n } catch (oO) {\n logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /** JSDoc */\n private _ignoreOnError: number = 0;\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /** JSDoc */\n private _wrapTimeFunction(original: () => void): () => number {\n return function(this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n }\n\n /** JSDoc */\n private _wrapRAF(original: any): (callback: () => void) => any {\n return function(this: any, callback: () => void): () => void {\n return original(\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n );\n };\n }\n\n /** JSDoc */\n private _wrapEventTarget(target: string): void {\n const global = getGlobalObject() as { [key: string]: any };\n const proto = global[target] && global[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function(\n original: () => void,\n ): (eventName: string, fn: EventListenerObject, options?: boolean | AddEventListenerOptions) => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n // tslint:disable-next-line:no-unbound-method strict-type-predicates\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.call(\n this,\n eventName,\n wrap((fn as any) as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n );\n };\n });\n\n fill(proto, 'removeEventListener', function(\n original: () => void,\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n let callback = (fn as any) as WrappedFunction;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n }\n\n /** JSDoc */\n private _wrapXHR(originalSend: () => void): () => void {\n return function(this: XMLHttpRequest, ...args: any[]): void {\n const xhr = this; // tslint:disable-line:no-this-assignment\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function(original: WrappedFunction): Function {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n if (original.__sentry_original__) {\n wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n this._ignoreOnError = this._ignoreOnError;\n\n const global = getGlobalObject();\n\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n\n if ('XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n }\n\n [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n ].forEach(this._wrapEventTarget.bind(this));\n }\n}\n","import { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n callback: (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const error = data.error;\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : this._enhanceEventWithInitialFrame(\n eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }),\n data.url,\n data.line,\n data.column,\n );\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n callback: (e: any) => {\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteRejection(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n\n event.level = Severity.Error;\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n\n return;\n },\n type: 'unhandledrejection',\n });\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n private _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name;\n\n if (isString(message)) {\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n }\n\n /**\n * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n */\n private _eventFromIncompleteRejection(error: any): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${error}`,\n },\n ],\n },\n };\n }\n\n /** JSDoc */\n private _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n private readonly _key: string;\n\n /**\n * @inheritDoc\n */\n private readonly _limit: number;\n\n /**\n * @inheritDoc\n */\n public constructor(options: { key?: string; limit?: number } = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n if (self) {\n return self._handler(event, hint);\n }\n return event;\n });\n }\n\n /**\n * @inheritDoc\n */\n private _handler(event: Event, hint?: EventHint): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = this._walkErrorTree(hint.originalException as ExtendedError, this._key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n }\n\n /**\n * @inheritDoc\n */\n private _walkErrorTree(error: ExtendedError, key: string, stack: Exception[] = []): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n return stack;\n }\n const stacktrace = computeStackTrace(error[key]);\n const exception = exceptionFromStacktrace(stacktrace);\n return this._walkErrorTree(error[key], key, [exception, ...stack]);\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** UserAgent */\nexport class UserAgent implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = UserAgent.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'UserAgent';\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(UserAgent)) {\n if (!global.navigator || !global.location) {\n return event;\n }\n\n // Request Interface: https://docs.sentry.io/development/sdk-dev/event-payloads/request/\n const request = event.request || {};\n request.url = request.url || global.location.href;\n request.headers = request.headers || {};\n request.headers['User-Agent'] = global.navigator.userAgent;\n\n return {\n ...event,\n request,\n };\n }\n return event;\n });\n }\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./fisica.js\") );\n\t\t\t}, \"route-fisica\");\n\t\t}\n\n\t\texport default Async(load);\n\t"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/bundle.3c959.esm.js b/docs/bundle.3c959.esm.js deleted file mode 100644 index b29728f..0000000 --- a/docs/bundle.3c959.esm.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see bundle.3c959.esm.js.LICENSE.txt */ -!function(t){function e(e){for(var n,r,o=e[0],a=e[1],c=0,s=[];c"}return t.event_id||""}function u(t){var e=i();if(!("console"in e))return t();var n=e.console,r={};["debug","info","warn","error","log","assert"].forEach((function(t){t in e.console&&n[t].__sentry_original__&&(r[t]=n[t],n[t]=n[t].__sentry_original__)}));var o=t();return Object.keys(r).forEach((function(t){n[t]=r[t]})),o}function l(t,e,n){t.exception=t.exception||{},t.exception.values=t.exception.values||[],t.exception.values[0]=t.exception.values[0]||{},t.exception.values[0].value=t.exception.values[0].value||e||"",t.exception.values[0].type=t.exception.values[0].type||n||"Error"}function p(t,e){void 0===e&&(e={});try{t.exception.values[0].mechanism=t.exception.values[0].mechanism||{},Object.keys(e).forEach((function(n){t.exception.values[0].mechanism[n]=e[n]}))}catch(t){}}function f(){try{return document.location.href}catch(t){return""}}function d(t){try{for(var e=t,n=[],r=0,o=0,i=" > ".length,a=void 0;e&&r++<5&&!("html"===(a=h(e))||r>1&&o+n.length*i+a.length>=80);)n.push(a),o+=a.length,e=e.parentNode;return n.reverse().join(" > ")}catch(t){return""}}function h(t){var e,n,r,o,i,a=t,c=[];if(!a||!a.tagName)return"";if(c.push(a.tagName.toLowerCase()),a.id&&c.push("#"+a.id),(e=a.className)&&Object(g.k)(e))for(n=e.split(/\s+/),i=0;i"}catch(t){return""}}n.d(e,"i",(function(){return o})),n.d(e,"f",(function(){return i})),n.d(e,"m",(function(){return a})),n.d(e,"k",(function(){return c})),n.d(e,"d",(function(){return s})),n.d(e,"c",(function(){return u})),n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return p})),n.d(e,"g",(function(){return f})),n.d(e,"h",(function(){return d})),n.d(e,"l",(function(){return _})),n.d(e,"j",(function(){return v})),n.d(e,"e",(function(){return y}));var g=n("E6vx"),m=(n("dbjm"),{}),b=Date.now(),E=0,w={now:function(){var t=Date.now()-b;return t1)for(var n=1;n{e=this.base=this.nextBase||this.__b,t(t=>{this.setState({child:t.default||t})})},this.shouldComponentUpdate=(t,o)=>(n=(o=void 0===o.child)&&void 0===n&&e?3===e.nodeType?e.data:Object(r.h)(e.nodeName,{dangerouslySetInnerHTML:{__html:e.innerHTML}}):"",!o),this.render=(t,e)=>e.child?Object(r.h)(e.child,t):n}return(e.prototype=new r.Component).constructor=e,e}},Vh2B:function(t,e,n){"use strict";var r=n("SdNZ");e.a=Object(r.a)((function(t){n.e(4).then(function(){t(n("HmML"))}.bind(null,n)).catch(n.oe)}))},WC2o:function(t,e,n){"use strict";var r=n("SdNZ");e.a=Object(r.a)((function(t){n.e(7).then(function(){t(n("EIZr"))}.bind(null,n)).catch(n.oe)}))},Y3FI:function(t,e,n){"use strict";function r(t,e){for(var n in e)t[n]=e[n];return t}function o(t,e,n){var r,o=/(?:\?([^#]*))?(#.*)?$/,i=t.match(o),a={};if(i&&i[1])for(var s=i[1].split("&"),u=0;ue.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:c(t.props.path).map(s).join("")}(t),t.props}function c(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function s(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function u(){var t;return""+((t=g&&g.location?g.location:g&&g.getCurrentLocation?g.getCurrentLocation():"undefined"!=typeof location?location:E).pathname||"")+(t.search||"")}function l(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=m.length;e--;)if(m[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),g&&g[e]?g[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),p(t)}function p(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){m.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;g&&(this.unlisten=g.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),m.splice(m.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=o(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return r(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,r=t.onChange,o=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),o,!0),a=i[0]||null,c=this.previousUrl;return o!==c&&(this.previousUrl=o,"function"==typeof r&&r({router:this,url:o,previous:c,active:i,current:a})),a},e}(v.Component);O.subscribers=b,O.getCurrentUrl=u,O.route=l,O.Router=O,O.Route=function(t){return Object(v.createElement)(t.component,t)},O.Link=function(t){return Object(v.createElement)("a",r({onClick:d},t))},O.exec=o,e.a=O},afj4:function(){},bb6g:function(t,e,n){"use strict";function r(t,e){function n(){this.constructor=t}c(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function o(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function i(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function a(){for(var t=[],e=0;er&&(e=r);var o=Math.max(e-60,0);o<5&&(o=0);var i=Math.min(o+140,r);return i>r-5&&(i=r),i===r&&(o=Math.max(i-140,0)),n=n.slice(o,i),o>0&&(n="'{snip} "+n),i3)for(n=[n],r=3;r2&&(e.children=M.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function T(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var r,o=this;return this.getChildContext||(r=[],this.getChildContext=function(){return e[n.__c]=o,e},this.shouldComponentUpdate=function(t){o.props.value!==t.value&&r.some((function(e){e.context=t.value,f(e)}))},this.sub=function(t){r.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){r.splice(r.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return j})),n.d(e,"hydrate",(function(){return k})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return s})),n.d(e,"createRef",(function(){return c})),n.d(e,"isValidElement",(function(){return R})),n.d(e,"Component",(function(){return u})),n.d(e,"cloneElement",(function(){return S})),n.d(e,"createContext",(function(){return T})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return O})),n.d(e,"options",(function(){return C}));var C,R,I,P,L,N,U,D,A={},M=[],F=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;C={__e:function(t,e){for(var n,r;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(r=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(r=!0,n.componentDidCatch(t)),r)return f(n.__E=n)}catch(e){t=e}throw t}},R=function(t){return null!=t&&void 0===t.constructor},u.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=r({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&r(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),f(this))},u.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),f(this))},u.prototype.render=s,I=[],P=0,L="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,U=A,D=0},mdyV:function(t,e,n){"use strict";n.r(e);var r=n("hosL");const{h:o,render:i}=r,a=t=>t&&t.default?t.default:t;if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw-esm.js"),"function"==typeof a(n("QfWi"))){let t=document.getElementById("preact_root")||document.body.firstElementChild;(()=>{let e=a(n("QfWi")),r={};const c=document.querySelector('[type="__PREACT_CLI_DATA__"]');c&&(r=JSON.parse(c.innerHTML).preRenderData||r),t=i(o(e,{CLI_DATA:{preRenderData:r}}),document.body,t)})()}},pCvA:function(t){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},tZ4O:function(t,e,n){"use strict";(function(t){function r(t,e,n){if(e in t){var r=t[e],o=n(r);if("function"==typeof o)try{o.prototype=o.prototype||{},Object.defineProperties(o,{__sentry_original__:{enumerable:!1,value:r}})}catch(t){}t[e]=o}}function o(t){return Object.keys(t).map((function(e){return encodeURIComponent(e)+"="+encodeURIComponent(t[e])})).join("&")}function i(t){if(Object(l.d)(t)){var e=t,n={message:e.message,name:e.name,stack:e.stack};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}if(Object(l.f)(t)){var o=t,i={};i.type=o.type;try{i.target=Object(l.c)(o.target)?Object(f.h)(o.target):Object.prototype.toString.call(o.target)}catch(t){i.target=""}try{i.currentTarget=Object(l.c)(o.currentTarget)?Object(f.h)(o.currentTarget):Object.prototype.toString.call(o.currentTarget)}catch(t){i.currentTarget=""}for(var r in"undefined"!=typeof CustomEvent&&Object(l.g)(t,CustomEvent)&&(i.detail=o.detail),o)Object.prototype.hasOwnProperty.call(o,r)&&(i[r]=o);return i}return t}function a(t,e,n){void 0===e&&(e=3),void 0===n&&(n=102400);var r=s(t,e);return function(t){return function(t){return~-encodeURI(t).split(/%..|./).length}(JSON.stringify(t))}(r)>n?a(t,e-1,n):r}function c(e,n){return"domain"===n&&e&&"object"==typeof e&&e._events?"[Domain]":"domainEmitter"===n?"[DomainEmitter]":void 0!==t&&e===t?"[Global]":"undefined"!=typeof window&&e===window?"[Window]":"undefined"!=typeof document&&e===document?"[Document]":Object(l.l)(e)?"[SyntheticEvent]":"number"==typeof e&&e!=e?"[NaN]":void 0===e?"[undefined]":"function"==typeof e?"[Function: "+Object(f.e)(e)+"]":e}function s(t,e){try{return JSON.parse(JSON.stringify(t,(function(t,n){return function t(e,n,r,o){if(void 0===r&&(r=1/0),void 0===o&&(o=new p.a),0===r)return function(t){var e=Object.prototype.toString.call(t);if("string"==typeof t)return t;if("[object Object]"===e)return"[Object]";if("[object Array]"===e)return"[Array]";var n=c(t);return Object(l.i)(n)?n:e}(n);if(null!=n&&"function"==typeof n.toJSON)return n.toJSON();var a=c(n,e);if(Object(l.i)(a))return a;var s=i(n),u=Array.isArray(n)?[]:{};if(o.memoize(n))return"[Circular ~]";for(var f in s)Object.prototype.hasOwnProperty.call(s,f)&&(u[f]=t(f,s[f],r-1,o));return o.unmemoize(n),u}(t,n,e)})))}catch(t){return"**non-serializable**"}}function u(t,e){void 0===e&&(e=40);var n=Object.keys(i(t));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=e)return Object(d.d)(n[0],e);for(var r=n.length;r>0;r--){var o=n.slice(0,r).join(", ");if(!(o.length>e))return r===n.length?o:Object(d.d)(o,e)}return""}n.d(e,"b",(function(){return r})),n.d(e,"e",(function(){return o})),n.d(e,"d",(function(){return a})),n.d(e,"c",(function(){return s})),n.d(e,"a",(function(){return u})),n("bb6g");var l=n("E6vx"),p=n("7UEW"),f=n("3ZRO"),d=n("dbjm")}).call(this,n("pCvA"))},ve3R:function(t,e,n){"use strict";function r(){return(r=Object.assign||function(t){for(var e=1;e=0;f--){var d=a[f];"."===d?i(a,f):".."===d?(i(a,f),p++):p&&(i(a,f),p--)}if(!u)for(;p--;p)a.unshift("..");!u||""===a[0]||a[0]&&o(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h},v=function(t){if(!t)throw new Error("Invariant failed")},y=!("undefined"==typeof window||!window.document||!window.document.createElement),g={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+c(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:c,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function r(){l={}}function o(t){return t.type===u.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function i(){return p.length>0?p[p.length-1]:null}function a(t){return"function"==typeof t.type&&t.type!=u.Fragment}function c(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":d||(d=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function s(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var c=e.children;return"<"+n+r+(c&&c.length?">..":" />")}n.r(e),n.d(e,"resetPropWarnings",(function(){return r}));var u=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",u.options,{Fragment:u.Fragment});var l={},p=[],f=[],d=!1,h="function"==typeof WeakMap,_=u.Component.prototype.setState;u.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+c(i())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+c(this.__v)),_.call(this,t,e)};var v=u.Component.prototype.forceUpdate;u.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+c(i())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+c(this.__v)),v.call(this,t)},function(){!function(){var t=u.options.__b,e=u.options.diffed,n=u.options.__,r=u.options.vnode,o=u.options.__r;u.options.diffed=function(t){a(t)&&f.pop(),p.pop(),e&&e(t)},u.options.__b=function(e){a(e)&&p.push(e),t&&t(e)},u.options.__=function(t,e){f=[],n&&n(t,e)},u.options.vnode=function(t){t.__o=f.length>0?f[f.length-1]:null,r&&r(t)},u.options.__r=function(t){a(t)&&f.push(t),o&&o(t)}}();var t=u.options.__b,e=u.options.diffed,n=u.options.vnode,r=u.options.__e,i=u.options.__,d=u.options.__h,_=h?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;u.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},u.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}i&&i(t,e)},u.options.__b=function(e){var n,r,i,a=e.type,u=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===a)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+s(e)+"\n\n"+c(e));if(null!=a&&"object"==typeof a){if(void 0!==a.__k&&void 0!==a.__e)throw new Error("Invalid type passed to createElement(): "+a+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+s(a)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+c(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(a)?"array":a))}if("thead"!==a&&"tfoot"!==a&&"tbody"!==a||"table"===u.type?"tr"===a&&"thead"!==u.type&&"tfoot"!==u.type&&"tbody"!==u.type&&"table"!==u.type?console.error("Improper nesting of table. Your should have a parent."+s(e)+"\n\n"+c(e)):"td"===a&&"tr"!==u.type?console.error("Improper nesting of table. Your should have a parent."+s(e)+"\n\n"+c(e)):"th"===a&&"tr"!==u.type&&console.error("Improper nesting of table. Your should have a ."+s(e)+"\n\n"+c(e)):console.error("Improper nesting of table. Your should have a parent."+s(e)+"\n\n"+c(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+s(e)+"\n\n"+c(e));if("string"==typeof e.type)for(var p in e.props)if("o"===p[0]&&"n"===p[1]&&"function"!=typeof e.props[p]&&null!=e.props[p])throw new Error("Component's \""+p+'" property should be a function, but got ['+typeof e.props[p]+"] instead\n"+s(e)+"\n\n"+c(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var f="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var d=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(f+"Component wrapped in lazy() is "+o(d))}catch(e){console.warn(f+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},u.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");d&&d(t)};var v=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},y={nodeName:v("nodeName","use vnode.type"),attributes:v("attributes","use vnode.props"),children:v("children","use vnode.props.children")},g=Object.create({},y);u.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var r=t.props={};for(var o in e){var i=e[o];"__source"===o?t.__source=i:"__self"===o?t.__self=i:r[o]=i}}Object.setPrototypeOf(t,g),n&&n(t)},u.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+c(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+c(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],a=0;a]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,o=t.stacktrace.split("\n"),i=[],a=0;a eval")>-1&&(e=Lt.exec(n[3]))?(n[1]=n[1]||"eval",n[3]=e[1],n[4]=e[2],n[5]=""):0!==a||n[5]||void 0===t.columnNumber||(o[0].column=t.columnNumber+1),r={url:n[3],func:n[1]||"?",args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}!r.func&&r.line&&(r.func="?"),o.push(r)}return o.length?{message:C(t),name:t.name,stack:o}:null}(t))return T(e,n)}catch(t){}return{message:C(t),name:t&&t.name,stack:[],failed:!0}}function T(t,e){try{return ot.a({},t,{stack:t.stack.slice(e)})}catch(e){return t}}function C(t){var e=t&&t.message;return e?e.error&&"string"==typeof e.error.message?e.error.message:e:"No error message"}function R(t){var e=P(t.stack),n={type:t.name,value:t.message};return e&&e.length&&(n.stacktrace={frames:e}),void 0===n.type&&""===n.value&&(n.value="Unrecoverable error caught"),n}function I(t){return{exception:{values:[R(t)]}}}function P(t){if(!t||!t.length)return[];var e=t,n=e[0].func||"",r=e[e.length-1].func||"";return-1===n.indexOf("captureMessage")&&-1===n.indexOf("captureException")||(e=e.slice(1)),-1!==r.indexOf("sentryWrapped")&&(e=e.slice(0,-1)),e.map((function(t){return{colno:null===t.column?void 0:t.column,filename:t.url||e[0].url,function:t.func||"?",in_app:!0,lineno:null===t.line?void 0:t.line}})).slice(0,50).reverse()}function L(t,e,n){var r;if(void 0===n&&(n={}),Object(at.e)(t)&&t.error)return I(S(t=t.error));if(Object(at.a)(t)||Object(at.b)(t)){var o=t,i=o.name||(Object(at.a)(o)?"DOMError":"DOMException"),a=o.message?i+": "+o.message:i;return r=N(a,e,n),Object(st.b)(r,a),r}return Object(at.d)(t)?r=I(S(t)):Object(at.h)(t)||Object(at.f)(t)?(r=function(t,e,n){var r={exception:{values:[{type:Object(at.f)(t)?t.constructor.name:n?"UnhandledRejection":"Error",value:"Non-Error "+(n?"promise rejection":"exception")+" captured with keys: "+Object(Ot.a)(t)}]},extra:{__serialized__:Object(Ot.d)(t)}};if(e){var o=P(S(e).stack);r.stacktrace={frames:o}}return r}(t,e,n.rejection),Object(st.a)(r,{synthetic:!0}),r):(r=N(t,e,n),Object(st.b)(r,""+t,void 0),Object(st.a)(r,{synthetic:!0}),r)}function N(t,e,n){void 0===n&&(n={});var r={message:t};if(n.attachStacktrace&&e){var o=P(S(e).stack);r.stacktrace={frames:o}}return r}function U(){return Gt>0}function D(){Gt+=1,setTimeout((function(){Gt-=1}))}function A(t,e,n){if(void 0===e&&(e={}),"function"!=typeof t)return t;try{if(t.__sentry__)return t;if(t.__sentry_wrapped__)return t.__sentry_wrapped__}catch(e){return t}var r=function(){var r=Array.prototype.slice.call(arguments);try{n&&"function"==typeof n&&n.apply(this,arguments);var o=r.map((function(t){return A(t,e)}));return t.handleEvent?t.handleEvent.apply(this,o):t.apply(this,o)}catch(t){throw D(),O((function(n){n.addEventProcessor((function(t){var n=ot.a({},t);return e.mechanism&&(Object(st.b)(n,void 0,void 0),Object(st.a)(n,e.mechanism)),n.extra=ot.a({},n.extra,{arguments:r}),n})),f(t)})),t}};try{for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o])}catch(t){}t.prototype=t.prototype||{},r.prototype=t.prototype,Object.defineProperty(t,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:t}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get:function(){return t.name}})}catch(t){}return r}function M(t){t&&"string"==typeof t.type&&"function"==typeof t.callback&&($t[t.type]=$t[t.type]||[],$t[t.type].push(t.callback),function(t){if(!Zt[t])switch(Zt[t]=!0,t){case"console":"console"in Xt&&["debug","info","warn","error","log","assert"].forEach((function(t){t in Xt.console&&Object(Ot.b)(Xt.console,t,(function(e){return function(){for(var n=[],r=0;r2?e[2]:void 0;if(r){var o=ht,i=String(r);ht=i,F("history",{from:o,to:i})}return t.apply(this,e)}}if(!((n=(e=Object(st.f)()).chrome)&&n.app&&n.app.runtime)&&"history"in e&&e.history.pushState&&e.history.replaceState){var e,n,r=Xt.onpopstate;Xt.onpopstate=function(){for(var t=[],e=0;e=200&&e<300?t.Success:429===e?t.RateLimit:e>=400&&e<500?t.Invalid:e>=500?t.Failed:t.Unknown}}(rt||(rt={}));var it,at=n("E6vx");!function(t){t.PENDING="PENDING",t.RESOLVED="RESOLVED",t.REJECTED="REJECTED"}(it||(it={}));var ct=function(){function t(t){var e=this;this._state=it.PENDING,this._handlers=[],this._resolve=function(t){e._setResult(it.RESOLVED,t)},this._reject=function(t){e._setResult(it.REJECTED,t)},this._setResult=function(t,n){e._state===it.PENDING&&(Object(at.m)(n)?n.then(e._resolve,e._reject):(e._state=t,e._value=n,e._executeHandlers()))},this._attachHandler=function(t){e._handlers=e._handlers.concat(t),e._executeHandlers()},this._executeHandlers=function(){if(e._state!==it.PENDING){var t=e._handlers.slice();e._handlers=[],t.forEach((function(t){t.done||(e._state===it.RESOLVED&&t.onfulfilled&&t.onfulfilled(e._value),e._state===it.REJECTED&&t.onrejected&&t.onrejected(e._value),t.done=!0)}))}};try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}return t.prototype.toString=function(){return"[object SyncPromise]"},t.resolve=function(e){return new t((function(t){t(e)}))},t.reject=function(e){return new t((function(t,n){n(e)}))},t.all=function(e){return new t((function(n,r){if(Array.isArray(e))if(0!==e.length){var o=e.length,i=[];e.forEach((function(e,a){t.resolve(e).then((function(t){i[a]=t,0==(o-=1)&&n(i)})).then(null,r)}))}else n([]);else r(new TypeError("Promise.all requires an array as input."))}))},t.prototype.then=function(e,n){var r=this;return new t((function(t,o){r._attachHandler({done:!1,onfulfilled:function(n){if(e)try{return void t(e(n))}catch(t){return void o(t)}else t(n)},onrejected:function(e){if(n)try{return void t(n(e))}catch(t){return void o(t)}else o(e)}})}))},t.prototype.catch=function(t){return this.then((function(t){return t}),t)},t.prototype.finally=function(e){var n=this;return new t((function(t,r){var o,i;return n.then((function(t){i=!1,o=t,e&&e()}),(function(t){i=!0,o=t,e&&e()})).then((function(){i?r(o):t(o)}))}))},t}(),st=n("3ZRO"),ut=function(){function t(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._user={},this._tags={},this._extra={},this._context={}}return t.prototype.addScopeListener=function(t){this._scopeListeners.push(t)},t.prototype.addEventProcessor=function(t){return this._eventProcessors.push(t),this},t.prototype._notifyScopeListeners=function(){var t=this;this._notifyingListeners||(this._notifyingListeners=!0,setTimeout((function(){t._scopeListeners.forEach((function(e){e(t)})),t._notifyingListeners=!1})))},t.prototype._notifyEventProcessors=function(t,e,n,r){var o=this;return void 0===r&&(r=0),new ct((function(i,a){var c=t[r];if(null===e||"function"!=typeof c)i(e);else{var s=c(ot.a({},e),n);Object(at.m)(s)?s.then((function(e){return o._notifyEventProcessors(t,e,n,r+1).then(i)})).then(null,a):o._notifyEventProcessors(t,s,n,r+1).then(i).then(null,a)}}))},t.prototype.setUser=function(t){return this._user=t||{},this._notifyScopeListeners(),this},t.prototype.setTags=function(t){return this._tags=ot.a({},this._tags,t),this._notifyScopeListeners(),this},t.prototype.setTag=function(t,e){var n;return this._tags=ot.a({},this._tags,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setExtras=function(t){return this._extra=ot.a({},this._extra,t),this._notifyScopeListeners(),this},t.prototype.setExtra=function(t,e){var n;return this._extra=ot.a({},this._extra,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setFingerprint=function(t){return this._fingerprint=t,this._notifyScopeListeners(),this},t.prototype.setLevel=function(t){return this._level=t,this._notifyScopeListeners(),this},t.prototype.setTransaction=function(t){return this._transaction=t,this._span&&(this._span.transaction=t),this._notifyScopeListeners(),this},t.prototype.setContext=function(t,e){var n;return this._context=ot.a({},this._context,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setSpan=function(t){return this._span=t,this._notifyScopeListeners(),this},t.prototype.getSpan=function(){return this._span},t.clone=function(e){var n=new t;return e&&(n._breadcrumbs=ot.d(e._breadcrumbs),n._tags=ot.a({},e._tags),n._extra=ot.a({},e._extra),n._context=ot.a({},e._context),n._user=e._user,n._level=e._level,n._span=e._span,n._transaction=e._transaction,n._fingerprint=e._fingerprint,n._eventProcessors=ot.d(e._eventProcessors)),n},t.prototype.clear=function(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._context={},this._level=void 0,this._transaction=void 0,this._fingerprint=void 0,this._span=void 0,this._notifyScopeListeners(),this},t.prototype.addBreadcrumb=function(t,e){var n=ot.a({timestamp:Object(st.l)()},t);return this._breadcrumbs=void 0!==e&&e>=0?ot.d(this._breadcrumbs,[n]).slice(-e):ot.d(this._breadcrumbs,[n]),this._notifyScopeListeners(),this},t.prototype.clearBreadcrumbs=function(){return this._breadcrumbs=[],this._notifyScopeListeners(),this},t.prototype._applyFingerprint=function(t){t.fingerprint=t.fingerprint?Array.isArray(t.fingerprint)?t.fingerprint:[t.fingerprint]:[],this._fingerprint&&(t.fingerprint=t.fingerprint.concat(this._fingerprint)),t.fingerprint&&!t.fingerprint.length&&delete t.fingerprint},t.prototype.applyToEvent=function(t,e){return this._extra&&Object.keys(this._extra).length&&(t.extra=ot.a({},this._extra,t.extra)),this._tags&&Object.keys(this._tags).length&&(t.tags=ot.a({},this._tags,t.tags)),this._user&&Object.keys(this._user).length&&(t.user=ot.a({},this._user,t.user)),this._context&&Object.keys(this._context).length&&(t.contexts=ot.a({},this._context,t.contexts)),this._level&&(t.level=this._level),this._transaction&&(t.transaction=this._transaction),this._span&&(t.contexts=ot.a({trace:this._span.getTraceContext()},t.contexts)),this._applyFingerprint(t),t.breadcrumbs=ot.d(t.breadcrumbs||[],this._breadcrumbs),t.breadcrumbs=t.breadcrumbs.length>0?t.breadcrumbs:void 0,this._notifyEventProcessors(ot.d(r(),this._eventProcessors),t,e)},t}(),lt=Object(st.f)(),pt="Sentry Logger ",ft=function(){function t(){this._enabled=!1}return t.prototype.disable=function(){this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},t.prototype.log=function(){for(var t=[],e=0;e0?t[t.length-1].scope:void 0);return this.getStack().push({client:this.getClient(),scope:e}),e},t.prototype.popScope=function(){return void 0!==this.getStack().pop()},t.prototype.withScope=function(t){var e=this.pushScope();try{t(e)}finally{this.popScope()}},t.prototype.getClient=function(){return this.getStackTop().client},t.prototype.getScope=function(){return this.getStackTop().scope},t.prototype.getStack=function(){return this._stack},t.prototype.getStackTop=function(){return this._stack[this._stack.length-1]},t.prototype.captureException=function(t,e){var n=this._lastEventId=Object(st.m)(),r=e;if(!e){var o=void 0;try{throw new Error("Sentry syntheticException")}catch(t){o=t}r={originalException:t,syntheticException:o}}return this._invokeClient("captureException",t,ot.a({},r,{event_id:n})),n},t.prototype.captureMessage=function(t,e,n){var r=this._lastEventId=Object(st.m)(),o=n;if(!n){var i=void 0;try{throw new Error(t)}catch(t){i=t}o={originalException:t,syntheticException:i}}return this._invokeClient("captureMessage",t,e,ot.a({},o,{event_id:r})),r},t.prototype.captureEvent=function(t,e){var n=this._lastEventId=Object(st.m)();return this._invokeClient("captureEvent",t,ot.a({},e,{event_id:n})),n},t.prototype.lastEventId=function(){return this._lastEventId},t.prototype.addBreadcrumb=function(t,e){var n=this.getStackTop();if(n.scope&&n.client){var r=n.client.getOptions&&n.client.getOptions()||{},o=r.beforeBreadcrumb,i=void 0===o?null:o,a=r.maxBreadcrumbs,c=void 0===a?100:a;if(!(c<=0)){var s=Object(st.l)(),u=ot.a({timestamp:s},t),l=i?Object(st.c)((function(){return i(u,e)})):u;null!==l&&n.scope.addBreadcrumb(l,Math.min(c,100))}}},t.prototype.setUser=function(t){var e=this.getStackTop();e.scope&&e.scope.setUser(t)},t.prototype.setTags=function(t){var e=this.getStackTop();e.scope&&e.scope.setTags(t)},t.prototype.setExtras=function(t){var e=this.getStackTop();e.scope&&e.scope.setExtras(t)},t.prototype.setTag=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setTag(t,e)},t.prototype.setExtra=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setExtra(t,e)},t.prototype.setContext=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setContext(t,e)},t.prototype.configureScope=function(t){var e=this.getStackTop();e.scope&&e.client&&t(e.scope)},t.prototype.run=function(t){var e=a(this);try{t(this)}finally{a(e)}},t.prototype.getIntegration=function(t){var e=this.getClient();if(!e)return null;try{return e.getIntegration(t)}catch(e){return yt.warn("Cannot retrieve integration "+t.id+" from the current Hub"),null}},t.prototype.startSpan=function(t,e){return void 0===e&&(e=!1),this._callExtensionMethod("startSpan",t,e)},t.prototype.traceHeaders=function(){return this._callExtensionMethod("traceHeaders")},t.prototype._callExtensionMethod=function(t){for(var e=[],n=1;n1&&(l=f.slice(0,-1).join("/"),p=f.pop()),this._fromComponents({host:c,pass:a,path:l,projectId:p,port:u,protocol:r,user:o})},t.prototype._fromComponents=function(t){this.protocol=t.protocol,this.user=t.user,this.pass=t.pass||"",this.host=t.host,this.port=t.port||"",this.path=t.path||"",this.projectId=t.projectId},t.prototype._validate=function(){var t=this;if(["protocol","user","host","projectId"].forEach((function(e){if(!t[e])throw new bt("Invalid Dsn")})),"http"!==this.protocol&&"https"!==this.protocol)throw new bt("Invalid Dsn");if(this.port&&isNaN(parseInt(this.port,10)))throw new bt("Invalid Dsn")},t}(),Ot=n("tZ4O"),xt=function(){function t(t){this.dsn=t,this._dsnObject=new wt(t)}return t.prototype.getDsn=function(){return this._dsnObject},t.prototype.getStoreEndpoint=function(){return""+this._getBaseUrl()+this.getStoreEndpointPath()},t.prototype.getStoreEndpointWithUrlEncodedAuth=function(){var t={sentry_key:this._dsnObject.user,sentry_version:"7"};return this.getStoreEndpoint()+"?"+Object(Ot.e)(t)},t.prototype._getBaseUrl=function(){var t=this._dsnObject;return(t.protocol?t.protocol+":":"")+"//"+t.host+(t.port?":"+t.port:"")},t.prototype.getStoreEndpointPath=function(){var t=this._dsnObject;return(t.path?"/"+t.path:"")+"/api/"+t.projectId+"/store/"},t.prototype.getRequestHeaders=function(t,e){var n=this._dsnObject,r=["Sentry sentry_version=7"];return r.push("sentry_client="+t+"/"+e),r.push("sentry_key="+n.user),n.pass&&r.push("sentry_secret="+n.pass),{"Content-Type":"application/json","X-Sentry-Auth":r.join(", ")}},t.prototype.getReportDialogEndpoint=function(t){void 0===t&&(t={});var e=this._dsnObject,n=this._getBaseUrl()+(e.path?"/"+e.path:"")+"/api/embed/error-page/",r=[];for(var o in r.push("dsn="+e.toString()),t)if("user"===o){if(!t.user)continue;t.user.name&&r.push("name="+encodeURIComponent(t.user.name)),t.user.email&&r.push("email="+encodeURIComponent(t.user.email))}else r.push(encodeURIComponent(o)+"="+encodeURIComponent(t[o]));return r.length?n+"?"+r.join("&"):n},t}(),jt=n("dbjm"),kt=[],St=function(){function t(t,e){this._integrations={},this._processing=!1,this._backend=new t(e),this._options=e,e.dsn&&(this._dsn=new wt(e.dsn))}return t.prototype.captureException=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._getBackend().eventFromException(t,e).then((function(t){return r._processEvent(t,e,n)})).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){yt.error(t),r._processing=!1})),o},t.prototype.captureMessage=function(t,e,n,r){var o=this,i=n&&n.event_id;return this._processing=!0,(Object(at.i)(t)?this._getBackend().eventFromMessage(""+t,e,n):this._getBackend().eventFromException(t,n)).then((function(t){return o._processEvent(t,n,r)})).then((function(t){i=t&&t.event_id,o._processing=!1})).then(null,(function(t){yt.error(t),o._processing=!1})),i},t.prototype.captureEvent=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._processEvent(t,e,n).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){yt.error(t),r._processing=!1})),o},t.prototype.getDsn=function(){return this._dsn},t.prototype.getOptions=function(){return this._options},t.prototype.flush=function(t){var e=this;return this._isClientProcessing(t).then((function(n){return clearInterval(n.interval),e._getBackend().getTransport().close(t).then((function(t){return n.ready&&t}))}))},t.prototype.close=function(t){var e=this;return this.flush(t).then((function(t){return e.getOptions().enabled=!1,t}))},t.prototype.setupIntegrations=function(){this._isEnabled()&&(this._integrations=function(t){var e={};return function(t){var e=t.defaultIntegrations&&ot.d(t.defaultIntegrations)||[],n=t.integrations,r=[];if(Array.isArray(n)){var o=n.map((function(t){return t.name})),i=[];e.forEach((function(t){-1===o.indexOf(t.name)&&-1===i.indexOf(t.name)&&(r.push(t),i.push(t.name))})),n.forEach((function(t){-1===i.indexOf(t.name)&&(r.push(t),i.push(t.name))}))}else"function"==typeof n?(r=n(e),r=Array.isArray(r)?r:[r]):r=ot.d(e);var a=r.map((function(t){return t.name}));return-1!==a.indexOf("Debug")&&r.push.apply(r,ot.d(r.splice(a.indexOf("Debug"),1))),r}(t).forEach((function(t){e[t.name]=t,function(t){-1===kt.indexOf(t.name)&&(t.setupOnce(o,c),kt.push(t.name),yt.log("Integration installed: "+t.name))}(t)})),e}(this._options))},t.prototype.getIntegration=function(t){try{return this._integrations[t.id]||null}catch(e){return yt.warn("Cannot retrieve integration "+t.id+" from the current Client"),null}},t.prototype._isClientProcessing=function(t){var e=this;return new ct((function(n){var r=0,o=0;clearInterval(o),o=setInterval((function(){e._processing?(r+=1,t&&r>=t&&n({interval:o,ready:!1})):n({interval:o,ready:!0})}),1)}))},t.prototype._getBackend=function(){return this._backend},t.prototype._isEnabled=function(){return!1!==this.getOptions().enabled&&void 0!==this._dsn},t.prototype._prepareEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.environment,a=o.release,c=o.dist,s=o.maxValueLength,u=void 0===s?250:s,l=o.normalizeDepth,p=void 0===l?3:l,f=ot.a({},t);void 0===f.environment&&void 0!==i&&(f.environment=i),void 0===f.release&&void 0!==a&&(f.release=a),void 0===f.dist&&void 0!==c&&(f.dist=c),f.message&&(f.message=Object(jt.d)(f.message,u));var d=f.exception&&f.exception.values&&f.exception.values[0];d&&d.value&&(d.value=Object(jt.d)(d.value,u));var h=f.request;h&&h.url&&(h.url=Object(jt.d)(h.url,u)),void 0===f.event_id&&(f.event_id=n&&n.event_id?n.event_id:Object(st.m)()),this._addIntegrations(f.sdk);var _=ct.resolve(f);return e&&(_=e.applyToEvent(f,n)),_.then((function(t){return"number"==typeof p&&p>0?r._normalizeEvent(t,p):t}))},t.prototype._normalizeEvent=function(t,e){return t?ot.a({},t,t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map((function(t){return ot.a({},t,t.data&&{data:Object(Ot.c)(t.data,e)})}))},t.user&&{user:Object(Ot.c)(t.user,e)},t.contexts&&{contexts:Object(Ot.c)(t.contexts,e)},t.extra&&{extra:Object(Ot.c)(t.extra,e)}):null},t.prototype._addIntegrations=function(t){var e=Object.keys(this._integrations);t&&e.length>0&&(t.integrations=e)},t.prototype._processEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.beforeSend,a=o.sampleRate;return this._isEnabled()?"number"==typeof a&&Math.random()>a?ct.reject("This event has been sampled, will not send event."):new ct((function(o,a){r._prepareEvent(t,n,e).then((function(t){if(null!==t){var n=t;if(e&&e.data&&!0===e.data.__sentry__||!i)return r._getBackend().sendEvent(n),void o(n);var c=i(t,e);if(void 0===c)yt.error("`beforeSend` method has to return `null` or a valid event.");else if(Object(at.m)(c))r._handleAsyncBeforeSend(c,o,a);else{if(null===(n=c))return yt.log("`beforeSend` returned `null`, will not send event."),void o(null);r._getBackend().sendEvent(n),o(n)}}else a("An event processor returned null, will not send event.")})).then(null,(function(t){r.captureException(t,{data:{__sentry__:!0},originalException:t}),a("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: "+t)}))})):ct.reject("SDK not enabled, will not send event.")},t.prototype._handleAsyncBeforeSend=function(t,e,n){var r=this;t.then((function(t){null!==t?(r._getBackend().sendEvent(t),e(t)):n("`beforeSend` returned `null`, will not send event.")})).then(null,(function(t){n("beforeSend rejected with "+t)}))},t}(),Tt=function(){function t(){}return t.prototype.sendEvent=function(){return ct.resolve({reason:"NoopTransport: Event has been skipped because no Dsn is configured.",status:rt.Skipped})},t.prototype.close=function(){return ct.resolve(!0)},t}(),Ct=function(){function t(t){this._options=t,this._options.dsn||yt.warn("No DSN provided, backend will not do anything."),this._transport=this._setupTransport()}return t.prototype._setupTransport=function(){return new Tt},t.prototype.eventFromException=function(){throw new bt("Backend has to implement `eventFromException` method")},t.prototype.eventFromMessage=function(){throw new bt("Backend has to implement `eventFromMessage` method")},t.prototype.sendEvent=function(t){this._transport.sendEvent(t).then(null,(function(t){yt.error("Error while sending event: "+t)}))},t.prototype.getTransport=function(){return this._transport},t}(),Rt=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,It=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,Pt=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,Lt=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Nt=/\((\S*)(?::(\d+))(?::(\d+))\)/,Ut=function(){function t(t){this._limit=t,this._buffer=[]}return t.prototype.isReady=function(){return void 0===this._limit||this.length()0&&n(!1)}),t);ct.all(e._buffer).then((function(){clearTimeout(r),n(!0)})).then(null,(function(){n(!0)}))}))},t}(),Dt=function(){function t(t){this.options=t,this._buffer=new Ut(30),this.url=new xt(this.options.dsn).getStoreEndpointWithUrlEncodedAuth()}return t.prototype.sendEvent=function(){throw new bt("Transport Class has to implement `sendEvent` method")},t.prototype.close=function(t){return this._buffer.drain(t)},t}(),At=Object(st.f)(),Mt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._disabledUntil=new Date(Date.now()),e}return ot.b(e,t),e.prototype.sendEvent=function(t){var e=this;if(new Date(Date.now())"}0!==e.length&&c().addBreadcrumb({category:"ui."+t.name,message:e},{event:t.event,name:t.name})},t.prototype._xhrBreadcrumb=function(t){if(t.endTimestamp){if(t.xhr.__sentry_own_request__)return;c().addBreadcrumb({category:"xhr",data:t.xhr.__sentry_xhr__,type:"http"},{xhr:t.xhr})}else this._options.sentry&&t.xhr.__sentry_own_request__&&Y(t.args[0])},t.prototype._fetchBreadcrumb=function(t){if(t.endTimestamp){var e=c().getClient(),n=e&&e.getDsn();if(this._options.sentry&&n){var r=new xt(n).getStoreEndpoint();if(r&&-1!==t.fetchData.url.indexOf(r)&&"POST"===t.fetchData.method&&t.args[1]&&t.args[1].body)return void Y(t.args[1].body)}t.error?c().addBreadcrumb({category:"fetch",data:ot.a({},t.fetchData,{status_code:t.response.status}),level:nt.Error,type:"http"},{data:t.error,input:t.args}):c().addBreadcrumb({category:"fetch",data:ot.a({},t.fetchData,{status_code:t.response.status}),type:"http"},{input:t.args,response:t.response})}},t.prototype._historyBreadcrumb=function(t){var e=Object(st.f)(),n=t.from,r=t.to,o=Object(st.k)(e.location.href),i=Object(st.k)(n),a=Object(st.k)(r);i.path||(i=o),o.protocol===a.protocol&&o.host===a.host&&(r=a.relative),o.protocol===i.protocol&&o.host===i.host&&(n=i.relative),c().addBreadcrumb({category:"navigation",data:{from:n,to:r}})},t.prototype.setupOnce=function(){var t=this;this._options.console&&M({callback:function(){for(var e=[],n=0;n0?e:Object(st.g)();return 0===t.exception.values[0].stacktrace.frames.length&&t.exception.values[0].stacktrace.frames.push({colno:o,filename:a,function:"?",in_app:!0,lineno:i}),t},t.id="GlobalHandlers",t}(),re=function(){function t(e){void 0===e&&(e={}),this.name=t.id,this._key=e.key||"cause",this._limit=e.limit||5}return t.prototype.setupOnce=function(){o((function(e,n){var r=c().getIntegration(t);return r?r._handler(e,n):e}))},t.prototype._handler=function(t,e){if(!(t.exception&&t.exception.values&&e&&Object(at.g)(e.originalException,Error)))return t;var n=this._walkErrorTree(e.originalException,this._key);return t.exception.values=ot.d(n,t.exception.values),t},t.prototype._walkErrorTree=function(t,e,n){if(void 0===n&&(n=[]),!Object(at.g)(t[e],Error)||n.length+1>=this._limit)return n;var r=R(S(t[e]));return this._walkErrorTree(t[e],e,ot.d([r],n))},t.id="LinkedErrors",t}(),oe=Object(st.f)(),ie=function(){function t(){this.name=t.id}return t.prototype.setupOnce=function(){o((function(e){if(c().getIntegration(t)){if(!oe.navigator||!oe.location)return e;var n=e.request||{};return n.url=n.url||oe.location.href,n.headers=n.headers||{},n.headers["User-Agent"]=oe.navigator.userAgent,ot.a({},e,{request:n})}return e}))},t.id="UserAgent",t}(),ae=[new Q.InboundFilters,new Q.FunctionToString,new Vt,new ee,new ne,new re,new ie],ce={},se=Object(st.f)();se.Sentry&&se.Sentry.Integrations&&(ce=se.Sentry.Integrations);var ue=ot.a({},ce,Q,tt)},zCbC:function(t,e,n){"use strict";var r=n("SdNZ");e.a=Object(r.a)((function(t){n.e(6).then(function(){t(n("YJDv"))}.bind(null,n)).catch(n.oe)}))}}); -//# sourceMappingURL=bundle.3c959.esm.js.map \ No newline at end of file diff --git a/docs/bundle.3c959.esm.js.LICENSE.txt b/docs/bundle.3c959.esm.js.LICENSE.txt deleted file mode 100644 index 2457736..0000000 --- a/docs/bundle.3c959.esm.js.LICENSE.txt +++ /dev/null @@ -1 +0,0 @@ -/*! For license information please see bundle.3c959.esm.js.LICENSE.txt */ diff --git a/docs/bundle.4037e.js b/docs/bundle.4037e.js deleted file mode 100644 index ef79918..0000000 --- a/docs/bundle.4037e.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see bundle.4037e.js.LICENSE.txt */ -!function(t){function e(e){for(var n,r,o=e[0],a=e[1],c=0,s=[];c"}return t.event_id||""}function u(t){var e=i();if(!("console"in e))return t();var n=e.console,r={};["debug","info","warn","error","log","assert"].forEach((function(t){t in e.console&&n[t].__sentry_original__&&(r[t]=n[t],n[t]=n[t].__sentry_original__)}));var o=t();return Object.keys(r).forEach((function(t){n[t]=r[t]})),o}function l(t,e,n){t.exception=t.exception||{},t.exception.values=t.exception.values||[],t.exception.values[0]=t.exception.values[0]||{},t.exception.values[0].value=t.exception.values[0].value||e||"",t.exception.values[0].type=t.exception.values[0].type||n||"Error"}function p(t,e){void 0===e&&(e={});try{t.exception.values[0].mechanism=t.exception.values[0].mechanism||{},Object.keys(e).forEach((function(n){t.exception.values[0].mechanism[n]=e[n]}))}catch(t){}}function f(){try{return document.location.href}catch(t){return""}}function d(t){try{for(var e=t,n=[],r=0,o=0,i=" > ".length,a=void 0;e&&r++<5&&!("html"===(a=h(e))||r>1&&o+n.length*i+a.length>=80);)n.push(a),o+=a.length,e=e.parentNode;return n.reverse().join(" > ")}catch(t){return""}}function h(t){var e,n,r,o,i,a=t,c=[];if(!a||!a.tagName)return"";if(c.push(a.tagName.toLowerCase()),a.id&&c.push("#"+a.id),(e=a.className)&&Object(g.k)(e))for(n=e.split(/\s+/),i=0;i"}catch(t){return""}}n.d(e,"i",(function(){return o})),n.d(e,"f",(function(){return i})),n.d(e,"m",(function(){return a})),n.d(e,"k",(function(){return c})),n.d(e,"d",(function(){return s})),n.d(e,"c",(function(){return u})),n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return p})),n.d(e,"g",(function(){return f})),n.d(e,"h",(function(){return d})),n.d(e,"l",(function(){return _})),n.d(e,"j",(function(){return v})),n.d(e,"e",(function(){return y}));var g=n("E6vx"),m=(n("dbjm"),{}),b=Date.now(),E=0,w={now:function(){var t=Date.now()-b;return t1)for(var n=1;ne.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:(e=t.props.path,c(e).map(s).join(""));var e}(t),t.props}function c(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function s(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function u(){var t;return""+((t=g&&g.location?g.location:g&&g.getCurrentLocation?g.getCurrentLocation():"undefined"!=typeof location?location:E).pathname||"")+(t.search||"")}function l(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=m.length;e--;)if(m[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),g&&g[e]?g[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),p(t)}function p(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){m.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;g&&(this.unlisten=g.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),m.splice(m.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=o(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return r(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,r=t.onChange,o=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),o,!0),a=i[0]||null,c=this.previousUrl;return o!==c&&(this.previousUrl=o,"function"==typeof r&&r({router:this,url:o,previous:c,active:i,current:a})),a},e}(v.Component);O.subscribers=b,O.getCurrentUrl=u,O.route=l,O.Router=O,O.Route=function(t){return Object(v.createElement)(t.component,t)},O.Link=function(t){return Object(v.createElement)("a",r({onClick:d},t))},O.exec=o,e.a=O},afj4:function(){},bb6g:function(t,e,n){"use strict";function r(t,e){function n(){this.constructor=t}c(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function o(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function i(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function a(){for(var t=[],e=0;er&&(e=r);var o=Math.max(e-60,0);o<5&&(o=0);var i=Math.min(o+140,r);return i>r-5&&(i=r),i===r&&(o=Math.max(i-140,0)),n=n.slice(o,i),o>0&&(n="'{snip} "+n),i3)for(n=[n],r=3;r2&&(e.children=M.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function T(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var r,o=this;return this.getChildContext||(r=[],this.getChildContext=function(){return e[n.__c]=o,e},this.shouldComponentUpdate=function(t){o.props.value!==t.value&&r.some((function(e){e.context=t.value,f(e)}))},this.sub=function(t){r.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){r.splice(r.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return j})),n.d(e,"hydrate",(function(){return k})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return s})),n.d(e,"createRef",(function(){return c})),n.d(e,"isValidElement",(function(){return R})),n.d(e,"Component",(function(){return u})),n.d(e,"cloneElement",(function(){return S})),n.d(e,"createContext",(function(){return T})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return O})),n.d(e,"options",(function(){return C}));var C,R,I,P,L,N,U,D,A={},M=[],F=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;C={__e:function(t,e){for(var n,r;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(r=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(r=!0,n.componentDidCatch(t)),r)return f(n.__E=n)}catch(e){t=e}throw t}},R=function(t){return null!=t&&void 0===t.constructor},u.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=r({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&r(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),f(this))},u.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),f(this))},u.prototype.render=s,I=[],P=0,L="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,U=A,D=0},mdyV:function(t,e,n){"use strict";n.r(e);var r=n("hosL"),o=r.h,i=r.render,a=function(t){return t&&t.default?t.default:t};if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw.js"),"function"==typeof a(n("QfWi"))){var c=document.getElementById("preact_root")||document.body.firstElementChild;0,function(){var t=a(n("QfWi")),e={},r=document.querySelector('[type="__PREACT_CLI_DATA__"]');r&&(e=JSON.parse(r.innerHTML).preRenderData||e);var s;e.url&&(s=e.url);c=i(o(t,{CLI_DATA:{preRenderData:e}}),document.body,c)}()}},pCvA:function(t){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},tZ4O:function(t,e,n){"use strict";(function(t){function r(t,e,n){if(e in t){var r=t[e],o=n(r);if("function"==typeof o)try{o.prototype=o.prototype||{},Object.defineProperties(o,{__sentry_original__:{enumerable:!1,value:r}})}catch(t){}t[e]=o}}function o(t){return Object.keys(t).map((function(e){return encodeURIComponent(e)+"="+encodeURIComponent(t[e])})).join("&")}function i(t){if(Object(f.d)(t)){var e=t,n={message:e.message,name:e.name,stack:e.stack};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}if(Object(f.f)(t)){var o=t,i={};i.type=o.type;try{i.target=Object(f.c)(o.target)?Object(h.h)(o.target):Object.prototype.toString.call(o.target)}catch(t){i.target=""}try{i.currentTarget=Object(f.c)(o.currentTarget)?Object(h.h)(o.currentTarget):Object.prototype.toString.call(o.currentTarget)}catch(t){i.currentTarget=""}for(var r in"undefined"!=typeof CustomEvent&&Object(f.g)(t,CustomEvent)&&(i.detail=o.detail),o)Object.prototype.hasOwnProperty.call(o,r)&&(i[r]=o);return i}return t}function a(t){return function(t){return~-encodeURI(t).split(/%..|./).length}(JSON.stringify(t))}function c(t,e,n){void 0===e&&(e=3),void 0===n&&(n=102400);var r=l(t,e);return a(r)>n?c(t,e-1,n):r}function s(e,n){return"domain"===n&&e&&"object"==typeof e&&e._events?"[Domain]":"domainEmitter"===n?"[DomainEmitter]":void 0!==t&&e===t?"[Global]":"undefined"!=typeof window&&e===window?"[Window]":"undefined"!=typeof document&&e===document?"[Document]":Object(f.l)(e)?"[SyntheticEvent]":"number"==typeof e&&e!=e?"[NaN]":void 0===e?"[undefined]":"function"==typeof e?"[Function: "+Object(h.e)(e)+"]":e}function u(t,e,n,r){if(void 0===n&&(n=1/0),void 0===r&&(r=new d.a),0===n)return function(t){var e=Object.prototype.toString.call(t);if("string"==typeof t)return t;if("[object Object]"===e)return"[Object]";if("[object Array]"===e)return"[Array]";var n=s(t);return Object(f.i)(n)?n:e}(e);if(null!=e&&"function"==typeof e.toJSON)return e.toJSON();var o=s(e,t);if(Object(f.i)(o))return o;var a=i(e),c=Array.isArray(e)?[]:{};if(r.memoize(e))return"[Circular ~]";for(var l in a)Object.prototype.hasOwnProperty.call(a,l)&&(c[l]=u(l,a[l],n-1,r));return r.unmemoize(e),c}function l(t,e){try{return JSON.parse(JSON.stringify(t,(function(t,n){return u(t,n,e)})))}catch(t){return"**non-serializable**"}}function p(t,e){void 0===e&&(e=40);var n=Object.keys(i(t));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=e)return Object(_.d)(n[0],e);for(var r=n.length;r>0;r--){var o=n.slice(0,r).join(", ");if(!(o.length>e))return r===n.length?o:Object(_.d)(o,e)}return""}n.d(e,"b",(function(){return r})),n.d(e,"e",(function(){return o})),n.d(e,"d",(function(){return c})),n.d(e,"c",(function(){return l})),n.d(e,"a",(function(){return p}));n("bb6g");var f=n("E6vx"),d=n("7UEW"),h=n("3ZRO"),_=n("dbjm")}).call(this,n("pCvA"))},ve3R:function(t,e,n){"use strict";function r(){return(r=Object.assign||function(t){for(var e=1;e=0;f--){var d=a[f];"."===d?i(a,f):".."===d?(i(a,f),p++):p&&(i(a,f),p--)}if(!u)for(;p--;p)a.unshift("..");!u||""===a[0]||a[0]&&o(a[0])||a.unshift("");var h=a.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h},m=function(t){if(!t)throw new Error("Invariant failed")},b=!("undefined"==typeof window||!window.document||!window.document.createElement),E={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+c(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:c,decodePath:a},slash:{encodePath:a,decodePath:a}}},"y+LV":function(t,e,n){"use strict";function r(){l={}}function o(t){return t.type===u.Fragment?"Fragment":"function"==typeof t.type?t.type.displayName||t.type.name:"string"==typeof t.type?t.type:"#text"}function i(){return p.length>0?p[p.length-1]:null}function a(t){return"function"==typeof t.type&&t.type!=u.Fragment}function c(t){for(var e=[t],n=t;null!=n.__o;)e.push(n.__o),n=n.__o;return e.reduce((function(t,e){t+=" in "+o(e);var n=e.__source;return n?t+=" (at "+n.fileName+":"+n.lineNumber+")":d||(d=!0,console.warn("Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.")),t+"\n"}),"")}function s(t){var e=t.props,n=o(t),r="";for(var i in e)if(e.hasOwnProperty(i)&&"children"!==i){var a=e[i];"function"==typeof a&&(a="function "+(a.displayName||a.name)+"() {}"),a=Object(a)!==a||a.toString?a+"":Object.prototype.toString.call(a),r+=" "+i+"="+JSON.stringify(a)}var c=e.children;return"<"+n+r+(c&&c.length?">..":" />")}n.r(e),n.d(e,"resetPropWarnings",(function(){return r}));var u=n("hosL");"undefined"!=typeof window&&window.__PREACT_DEVTOOLS__&&window.__PREACT_DEVTOOLS__.attachPreact("10.0.5",u.options,{Fragment:u.Fragment});var l={},p=[],f=[],d=!1,h="function"==typeof WeakMap,_=u.Component.prototype.setState;u.Component.prototype.setState=function(t,e){return null==this.__v?null==this.state&&console.warn('Calling "this.setState" inside the constructor of a component is a no-op and might be a bug in your application. Instead, set "this.state = {}" directly.\n\n'+c(i())):null==this.__P&&console.warn('Can\'t call "this.setState" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+c(this.__v)),_.call(this,t,e)};var v=u.Component.prototype.forceUpdate;u.Component.prototype.forceUpdate=function(t){return null==this.__v?console.warn('Calling "this.forceUpdate" inside the constructor of a component is a no-op and might be a bug in your application.\n\n'+c(i())):null==this.__P&&console.warn('Can\'t call "this.forceUpdate" on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.\n\n'+c(this.__v)),v.call(this,t)},function(){!function(){var t=u.options.__b,e=u.options.diffed,n=u.options.__,r=u.options.vnode,o=u.options.__r;u.options.diffed=function(t){a(t)&&f.pop(),p.pop(),e&&e(t)},u.options.__b=function(e){a(e)&&p.push(e),t&&t(e)},u.options.__=function(t,e){f=[],n&&n(t,e)},u.options.vnode=function(t){t.__o=f.length>0?f[f.length-1]:null,r&&r(t)},u.options.__r=function(t){a(t)&&f.push(t),o&&o(t)}}();var t=u.options.__b,e=u.options.diffed,n=u.options.vnode,r=u.options.__e,i=u.options.__,d=u.options.__h,_=h?{useEffect:new WeakMap,useLayoutEffect:new WeakMap,lazyPropTypes:new WeakMap}:null;u.options.__e=function(t,e,n){if(e&&e.__c&&"function"==typeof t.then){var i=t;t=new Error("Missing Suspense. The throwing component was: "+o(e));for(var a=e;a;a=a.__)if(a.__c&&a.__c.__c){t=i;break}if(t instanceof Error)throw t}r(t,e,n)},u.options.__=function(t,e){if(!e)throw new Error("Undefined parent passed to render(), this is the second argument.\nCheck if the element is available in the DOM/has the correct id.");var n;switch(e.nodeType){case 1:case 11:case 9:n=!0;break;default:n=!1}if(!n){var r=o(t);throw new Error("Expected a valid HTML node as a second argument to render.\tReceived "+e+" instead: render(<"+r+" />, "+e+");")}i&&i(t,e)},u.options.__b=function(e){var n,r,i,a=e.type,u=function t(e){return e?"function"==typeof e.type?t(e.__):e:{}}(e.__);if(void 0===a)throw new Error("Undefined component passed to createElement()\n\nYou likely forgot to export your component or might have mixed up default and named imports"+s(e)+"\n\n"+c(e));if(null!=a&&"object"==typeof a){if(void 0!==a.__k&&void 0!==a.__e)throw new Error("Invalid type passed to createElement(): "+a+"\n\nDid you accidentally pass a JSX literal as JSX twice?\n\n let My"+o(e)+" = "+s(a)+";\n let vnode = ;\n\nThis usually happens when you export a JSX literal and not the component.\n\n"+c(e));throw new Error("Invalid type passed to createElement(): "+(Array.isArray(a)?"array":a))}if("thead"!==a&&"tfoot"!==a&&"tbody"!==a||"table"===u.type?"tr"===a&&"thead"!==u.type&&"tfoot"!==u.type&&"tbody"!==u.type&&"table"!==u.type?console.error("Improper nesting of table. Your should have a parent."+s(e)+"\n\n"+c(e)):"td"===a&&"tr"!==u.type?console.error("Improper nesting of table. Your parent."+s(e)+"\n\n"+c(e)):"th"===a&&"tr"!==u.type&&console.error("Improper nesting of table. Your ."+s(e)+"\n\n"+c(e)):console.error("Improper nesting of table. Your should have a
should have a
should have a
parent."+s(e)+"\n\n"+c(e)),void 0!==e.ref&&"function"!=typeof e.ref&&"object"!=typeof e.ref&&!("$$typeof"in e))throw new Error('Component\'s "ref" property should be a function, or an object created by createRef(), but got ['+typeof e.ref+"] instead\n"+s(e)+"\n\n"+c(e));if("string"==typeof e.type)for(var p in e.props)if("o"===p[0]&&"n"===p[1]&&"function"!=typeof e.props[p]&&null!=e.props[p])throw new Error("Component's \""+p+'" property should be a function, but got ['+typeof e.props[p]+"] instead\n"+s(e)+"\n\n"+c(e));if("function"==typeof e.type&&e.type.propTypes){if("Lazy"===e.type.displayName&&_&&!_.lazyPropTypes.has(e.type)){var f="PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ";try{var d=e.type();_.lazyPropTypes.set(e.type,!0),console.warn(f+"Component wrapped in lazy() is "+o(d))}catch(e){console.warn(f+"We will log the wrapped component's name once it is loaded.")}}n=e.type.propTypes,r=e.props,i=o(e),Object.keys(n).forEach((function(t){var e;try{e=n[t](r,t,i,"prop",null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(t){e=t}!e||e.message in l||(l[e.message]=!0,console.error("Failed prop type: "+e.message))}))}t&&t(e)},u.options.__h=function(t){if(!t)throw new Error("Hook can only be invoked from render methods.");d&&d(t)};var v=function(t,e){return{get:function(){throw new Error("getting vnode."+t+" is deprecated, "+e)},set:function(){throw new Error("setting vnode."+t+" is not allowed, "+e)}}},y={nodeName:v("nodeName","use vnode.type"),attributes:v("attributes","use vnode.props"),children:v("children","use vnode.props.children")},g=Object.create({},y);u.options.vnode=function(t){var e=t.props;if(null!==t.type&&null!=e&&("__source"in e||"__self"in e)){var r=t.props={};for(var o in e){var i=e[o];"__source"===o?t.__source=i:"__self"===o?t.__self=i:r[o]=i}}Object.setPrototypeOf(t,g),n&&n(t)},u.options.diffed=function(t){t.__k&&t.__k.forEach((function(e){if(e&&void 0===e.type){delete e.__,delete e.__b;var n=Object.keys(e).join(",");throw new Error("Objects are not valid as a child. Encountered an object with the keys {"+n+"}.\n\n"+c(t))}}));var n=t.__c;if(n&&n.__H){var r=n.__H;Array.isArray(r.__)&&r.__.forEach((function(e){if(e.__h&&(!e.__H||!Array.isArray(e.__H))){var n=o(t);console.warn("In "+n+" you are calling useMemo/useCallback without passing arguments.\nThis is a noop since it will not be able to memoize, it will execute it every render.\n\n"+c(t))}}))}if(e&&e(t),null!=t.__k)for(var i=[],a=0;a]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,o=t.stacktrace.split("\n"),i=[],a=0;a eval")>-1&&(e=Ut.exec(n[3]))?(n[1]=n[1]||"eval",n[3]=e[1],n[4]=e[2],n[5]=""):0!==a||n[5]||void 0===t.columnNumber||(o[0].column=t.columnNumber+1),r={url:n[3],func:n[1]||"?",args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}!r.func&&r.line&&(r.func="?"),o.push(r)}if(!o.length)return null;return{message:R(t),name:t.name,stack:o}}(t))return C(e,n)}catch(t){}return{message:R(t),name:t&&t.name,stack:[],failed:!0}}function C(t,e){try{return at.a({},t,{stack:t.stack.slice(e)})}catch(e){return t}}function R(t){var e=t&&t.message;return e?e.error&&"string"==typeof e.error.message?e.error.message:e:"No error message"}function I(t){var e=L(t.stack),n={type:t.name,value:t.message};return e&&e.length&&(n.stacktrace={frames:e}),void 0===n.type&&""===n.value&&(n.value="Unrecoverable error caught"),n}function P(t){return{exception:{values:[I(t)]}}}function L(t){if(!t||!t.length)return[];var e=t,n=e[0].func||"",r=e[e.length-1].func||"";return-1===n.indexOf("captureMessage")&&-1===n.indexOf("captureException")||(e=e.slice(1)),-1!==r.indexOf("sentryWrapped")&&(e=e.slice(0,-1)),e.map((function(t){return{colno:null===t.column?void 0:t.column,filename:t.url||e[0].url,function:t.func||"?",in_app:!0,lineno:null===t.line?void 0:t.line}})).slice(0,50).reverse()}function N(t,e,n){var r;if(void 0===n&&(n={}),Object(st.e)(t)&&t.error)return r=P(T(t=t.error));if(Object(st.a)(t)||Object(st.b)(t)){var o=t,i=o.name||(Object(st.a)(o)?"DOMError":"DOMException"),a=o.message?i+": "+o.message:i;return r=U(a,e,n),Object(lt.b)(r,a),r}return Object(st.d)(t)?r=P(T(t)):Object(st.h)(t)||Object(st.f)(t)?(r=function(t,e,n){var r={exception:{values:[{type:Object(st.f)(t)?t.constructor.name:n?"UnhandledRejection":"Error",value:"Non-Error "+(n?"promise rejection":"exception")+" captured with keys: "+Object(jt.a)(t)}]},extra:{__serialized__:Object(jt.d)(t)}};if(e){var o=L(T(e).stack);r.stacktrace={frames:o}}return r}(t,e,n.rejection),Object(lt.a)(r,{synthetic:!0}),r):(r=U(t,e,n),Object(lt.b)(r,""+t,void 0),Object(lt.a)(r,{synthetic:!0}),r)}function U(t,e,n){void 0===n&&(n={});var r={message:t};if(n.attachStacktrace&&e){var o=L(T(e).stack);r.stacktrace={frames:o}}return r}function D(){return Xt>0}function A(){Xt+=1,setTimeout((function(){Xt-=1}))}function M(t,e,n){if(void 0===e&&(e={}),"function"!=typeof t)return t;try{if(t.__sentry__)return t;if(t.__sentry_wrapped__)return t.__sentry_wrapped__}catch(e){return t}var r=function(){var r=Array.prototype.slice.call(arguments);try{n&&"function"==typeof n&&n.apply(this,arguments);var o=r.map((function(t){return M(t,e)}));return t.handleEvent?t.handleEvent.apply(this,o):t.apply(this,o)}catch(t){throw A(),O((function(n){n.addEventProcessor((function(t){var n=at.a({},t);return e.mechanism&&(Object(lt.b)(n,void 0,void 0),Object(lt.a)(n,e.mechanism)),n.extra=at.a({},n.extra,{arguments:r}),n})),f(t)})),t}};try{for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o])}catch(t){}t.prototype=t.prototype||{},r.prototype=t.prototype,Object.defineProperty(t,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:t}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get:function(){return t.name}})}catch(t){}return r}function F(t){if(!Qt[t])switch(Qt[t]=!0,t){case"console":!function(){if(!("console"in Zt))return;["debug","info","warn","error","log","assert"].forEach((function(t){t in Zt.console&&Object(jt.b)(Zt.console,t,(function(e){return function(){for(var n=[],r=0;r2?e[2]:void 0;if(r){var o=vt,i=String(r);vt=i,H("history",{from:o,to:i})}return t.apply(this,e)}}if(e=Object(lt.f)(),n=e.chrome,n&&n.app&&n.app.runtime||!("history"in e)||!e.history.pushState||!e.history.replaceState)return;var e,n;var r=Zt.onpopstate;Zt.onpopstate=function(){for(var t=[],e=0;e=200&&e<300?t.Success:429===e?t.RateLimit:e>=400&&e<500?t.Invalid:e>=500?t.Failed:t.Unknown}}(it||(it={}));var ct,st=n("E6vx");!function(t){t.PENDING="PENDING",t.RESOLVED="RESOLVED",t.REJECTED="REJECTED"}(ct||(ct={}));var ut=function(){function t(t){var e=this;this._state=ct.PENDING,this._handlers=[],this._resolve=function(t){e._setResult(ct.RESOLVED,t)},this._reject=function(t){e._setResult(ct.REJECTED,t)},this._setResult=function(t,n){e._state===ct.PENDING&&(Object(st.m)(n)?n.then(e._resolve,e._reject):(e._state=t,e._value=n,e._executeHandlers()))},this._attachHandler=function(t){e._handlers=e._handlers.concat(t),e._executeHandlers()},this._executeHandlers=function(){if(e._state!==ct.PENDING){var t=e._handlers.slice();e._handlers=[],t.forEach((function(t){t.done||(e._state===ct.RESOLVED&&t.onfulfilled&&t.onfulfilled(e._value),e._state===ct.REJECTED&&t.onrejected&&t.onrejected(e._value),t.done=!0)}))}};try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}return t.prototype.toString=function(){return"[object SyncPromise]"},t.resolve=function(e){return new t((function(t){t(e)}))},t.reject=function(e){return new t((function(t,n){n(e)}))},t.all=function(e){return new t((function(n,r){if(Array.isArray(e))if(0!==e.length){var o=e.length,i=[];e.forEach((function(e,a){t.resolve(e).then((function(t){i[a]=t,0===(o-=1)&&n(i)})).then(null,r)}))}else n([]);else r(new TypeError("Promise.all requires an array as input."))}))},t.prototype.then=function(e,n){var r=this;return new t((function(t,o){r._attachHandler({done:!1,onfulfilled:function(n){if(e)try{return void t(e(n))}catch(t){return void o(t)}else t(n)},onrejected:function(e){if(n)try{return void t(n(e))}catch(t){return void o(t)}else o(e)}})}))},t.prototype.catch=function(t){return this.then((function(t){return t}),t)},t.prototype.finally=function(e){var n=this;return new t((function(t,r){var o,i;return n.then((function(t){i=!1,o=t,e&&e()}),(function(t){i=!0,o=t,e&&e()})).then((function(){i?r(o):t(o)}))}))},t}(),lt=n("3ZRO"),pt=function(){function t(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._user={},this._tags={},this._extra={},this._context={}}return t.prototype.addScopeListener=function(t){this._scopeListeners.push(t)},t.prototype.addEventProcessor=function(t){return this._eventProcessors.push(t),this},t.prototype._notifyScopeListeners=function(){var t=this;this._notifyingListeners||(this._notifyingListeners=!0,setTimeout((function(){t._scopeListeners.forEach((function(e){e(t)})),t._notifyingListeners=!1})))},t.prototype._notifyEventProcessors=function(t,e,n,r){var o=this;return void 0===r&&(r=0),new ut((function(i,a){var c=t[r];if(null===e||"function"!=typeof c)i(e);else{var s=c(at.a({},e),n);Object(st.m)(s)?s.then((function(e){return o._notifyEventProcessors(t,e,n,r+1).then(i)})).then(null,a):o._notifyEventProcessors(t,s,n,r+1).then(i).then(null,a)}}))},t.prototype.setUser=function(t){return this._user=t||{},this._notifyScopeListeners(),this},t.prototype.setTags=function(t){return this._tags=at.a({},this._tags,t),this._notifyScopeListeners(),this},t.prototype.setTag=function(t,e){var n;return this._tags=at.a({},this._tags,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setExtras=function(t){return this._extra=at.a({},this._extra,t),this._notifyScopeListeners(),this},t.prototype.setExtra=function(t,e){var n;return this._extra=at.a({},this._extra,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setFingerprint=function(t){return this._fingerprint=t,this._notifyScopeListeners(),this},t.prototype.setLevel=function(t){return this._level=t,this._notifyScopeListeners(),this},t.prototype.setTransaction=function(t){return this._transaction=t,this._span&&(this._span.transaction=t),this._notifyScopeListeners(),this},t.prototype.setContext=function(t,e){var n;return this._context=at.a({},this._context,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setSpan=function(t){return this._span=t,this._notifyScopeListeners(),this},t.prototype.getSpan=function(){return this._span},t.clone=function(e){var n=new t;return e&&(n._breadcrumbs=at.d(e._breadcrumbs),n._tags=at.a({},e._tags),n._extra=at.a({},e._extra),n._context=at.a({},e._context),n._user=e._user,n._level=e._level,n._span=e._span,n._transaction=e._transaction,n._fingerprint=e._fingerprint,n._eventProcessors=at.d(e._eventProcessors)),n},t.prototype.clear=function(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._context={},this._level=void 0,this._transaction=void 0,this._fingerprint=void 0,this._span=void 0,this._notifyScopeListeners(),this},t.prototype.addBreadcrumb=function(t,e){var n=at.a({timestamp:Object(lt.l)()},t);return this._breadcrumbs=void 0!==e&&e>=0?at.d(this._breadcrumbs,[n]).slice(-e):at.d(this._breadcrumbs,[n]),this._notifyScopeListeners(),this},t.prototype.clearBreadcrumbs=function(){return this._breadcrumbs=[],this._notifyScopeListeners(),this},t.prototype._applyFingerprint=function(t){t.fingerprint=t.fingerprint?Array.isArray(t.fingerprint)?t.fingerprint:[t.fingerprint]:[],this._fingerprint&&(t.fingerprint=t.fingerprint.concat(this._fingerprint)),t.fingerprint&&!t.fingerprint.length&&delete t.fingerprint},t.prototype.applyToEvent=function(t,e){return this._extra&&Object.keys(this._extra).length&&(t.extra=at.a({},this._extra,t.extra)),this._tags&&Object.keys(this._tags).length&&(t.tags=at.a({},this._tags,t.tags)),this._user&&Object.keys(this._user).length&&(t.user=at.a({},this._user,t.user)),this._context&&Object.keys(this._context).length&&(t.contexts=at.a({},this._context,t.contexts)),this._level&&(t.level=this._level),this._transaction&&(t.transaction=this._transaction),this._span&&(t.contexts=at.a({trace:this._span.getTraceContext()},t.contexts)),this._applyFingerprint(t),t.breadcrumbs=at.d(t.breadcrumbs||[],this._breadcrumbs),t.breadcrumbs=t.breadcrumbs.length>0?t.breadcrumbs:void 0,this._notifyEventProcessors(at.d(r(),this._eventProcessors),t,e)},t}(),ft=Object(lt.f)(),dt="Sentry Logger ",ht=function(){function t(){this._enabled=!1}return t.prototype.disable=function(){this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},t.prototype.log=function(){for(var t=[],e=0;e0?t[t.length-1].scope:void 0);return this.getStack().push({client:this.getClient(),scope:e}),e},t.prototype.popScope=function(){return void 0!==this.getStack().pop()},t.prototype.withScope=function(t){var e=this.pushScope();try{t(e)}finally{this.popScope()}},t.prototype.getClient=function(){return this.getStackTop().client},t.prototype.getScope=function(){return this.getStackTop().scope},t.prototype.getStack=function(){return this._stack},t.prototype.getStackTop=function(){return this._stack[this._stack.length-1]},t.prototype.captureException=function(t,e){var n=this._lastEventId=Object(lt.m)(),r=e;if(!e){var o=void 0;try{throw new Error("Sentry syntheticException")}catch(t){o=t}r={originalException:t,syntheticException:o}}return this._invokeClient("captureException",t,at.a({},r,{event_id:n})),n},t.prototype.captureMessage=function(t,e,n){var r=this._lastEventId=Object(lt.m)(),o=n;if(!n){var i=void 0;try{throw new Error(t)}catch(t){i=t}o={originalException:t,syntheticException:i}}return this._invokeClient("captureMessage",t,e,at.a({},o,{event_id:r})),r},t.prototype.captureEvent=function(t,e){var n=this._lastEventId=Object(lt.m)();return this._invokeClient("captureEvent",t,at.a({},e,{event_id:n})),n},t.prototype.lastEventId=function(){return this._lastEventId},t.prototype.addBreadcrumb=function(t,e){var n=this.getStackTop();if(n.scope&&n.client){var r=n.client.getOptions&&n.client.getOptions()||{},o=r.beforeBreadcrumb,i=void 0===o?null:o,a=r.maxBreadcrumbs,c=void 0===a?100:a;if(!(c<=0)){var s=Object(lt.l)(),u=at.a({timestamp:s},t),l=i?Object(lt.c)((function(){return i(u,e)})):u;null!==l&&n.scope.addBreadcrumb(l,Math.min(c,100))}}},t.prototype.setUser=function(t){var e=this.getStackTop();e.scope&&e.scope.setUser(t)},t.prototype.setTags=function(t){var e=this.getStackTop();e.scope&&e.scope.setTags(t)},t.prototype.setExtras=function(t){var e=this.getStackTop();e.scope&&e.scope.setExtras(t)},t.prototype.setTag=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setTag(t,e)},t.prototype.setExtra=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setExtra(t,e)},t.prototype.setContext=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setContext(t,e)},t.prototype.configureScope=function(t){var e=this.getStackTop();e.scope&&e.client&&t(e.scope)},t.prototype.run=function(t){var e=a(this);try{t(this)}finally{a(e)}},t.prototype.getIntegration=function(t){var e=this.getClient();if(!e)return null;try{return e.getIntegration(t)}catch(e){return mt.warn("Cannot retrieve integration "+t.id+" from the current Hub"),null}},t.prototype.startSpan=function(t,e){return void 0===e&&(e=!1),this._callExtensionMethod("startSpan",t,e)},t.prototype.traceHeaders=function(){return this._callExtensionMethod("traceHeaders")},t.prototype._callExtensionMethod=function(t){for(var e=[],n=1;n1&&(l=f.slice(0,-1).join("/"),p=f.pop()),this._fromComponents({host:c,pass:a,path:l,projectId:p,port:u,protocol:r,user:o})},t.prototype._fromComponents=function(t){this.protocol=t.protocol,this.user=t.user,this.pass=t.pass||"",this.host=t.host,this.port=t.port||"",this.path=t.path||"",this.projectId=t.projectId},t.prototype._validate=function(){var t=this;if(["protocol","user","host","projectId"].forEach((function(e){if(!t[e])throw new wt("Invalid Dsn")})),"http"!==this.protocol&&"https"!==this.protocol)throw new wt("Invalid Dsn");if(this.port&&isNaN(parseInt(this.port,10)))throw new wt("Invalid Dsn")},t}(),jt=n("tZ4O"),kt=function(){function t(t){this.dsn=t,this._dsnObject=new xt(t)}return t.prototype.getDsn=function(){return this._dsnObject},t.prototype.getStoreEndpoint=function(){return""+this._getBaseUrl()+this.getStoreEndpointPath()},t.prototype.getStoreEndpointWithUrlEncodedAuth=function(){var t={sentry_key:this._dsnObject.user,sentry_version:"7"};return this.getStoreEndpoint()+"?"+Object(jt.e)(t)},t.prototype._getBaseUrl=function(){var t=this._dsnObject;return(t.protocol?t.protocol+":":"")+"//"+t.host+(t.port?":"+t.port:"")},t.prototype.getStoreEndpointPath=function(){var t=this._dsnObject;return(t.path?"/"+t.path:"")+"/api/"+t.projectId+"/store/"},t.prototype.getRequestHeaders=function(t,e){var n=this._dsnObject,r=["Sentry sentry_version=7"];return r.push("sentry_client="+t+"/"+e),r.push("sentry_key="+n.user),n.pass&&r.push("sentry_secret="+n.pass),{"Content-Type":"application/json","X-Sentry-Auth":r.join(", ")}},t.prototype.getReportDialogEndpoint=function(t){void 0===t&&(t={});var e=this._dsnObject,n=this._getBaseUrl()+(e.path?"/"+e.path:"")+"/api/embed/error-page/",r=[];for(var o in r.push("dsn="+e.toString()),t)if("user"===o){if(!t.user)continue;t.user.name&&r.push("name="+encodeURIComponent(t.user.name)),t.user.email&&r.push("email="+encodeURIComponent(t.user.email))}else r.push(encodeURIComponent(o)+"="+encodeURIComponent(t[o]));return r.length?n+"?"+r.join("&"):n},t}(),St=n("dbjm"),Tt=[],Ct=function(){function t(t,e){this._integrations={},this._processing=!1,this._backend=new t(e),this._options=e,e.dsn&&(this._dsn=new xt(e.dsn))}return t.prototype.captureException=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._getBackend().eventFromException(t,e).then((function(t){return r._processEvent(t,e,n)})).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){mt.error(t),r._processing=!1})),o},t.prototype.captureMessage=function(t,e,n,r){var o=this,i=n&&n.event_id;return this._processing=!0,(Object(st.i)(t)?this._getBackend().eventFromMessage(""+t,e,n):this._getBackend().eventFromException(t,n)).then((function(t){return o._processEvent(t,n,r)})).then((function(t){i=t&&t.event_id,o._processing=!1})).then(null,(function(t){mt.error(t),o._processing=!1})),i},t.prototype.captureEvent=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._processEvent(t,e,n).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){mt.error(t),r._processing=!1})),o},t.prototype.getDsn=function(){return this._dsn},t.prototype.getOptions=function(){return this._options},t.prototype.flush=function(t){var e=this;return this._isClientProcessing(t).then((function(n){return clearInterval(n.interval),e._getBackend().getTransport().close(t).then((function(t){return n.ready&&t}))}))},t.prototype.close=function(t){var e=this;return this.flush(t).then((function(t){return e.getOptions().enabled=!1,t}))},t.prototype.setupIntegrations=function(){this._isEnabled()&&(this._integrations=x(this._options))},t.prototype.getIntegration=function(t){try{return this._integrations[t.id]||null}catch(e){return mt.warn("Cannot retrieve integration "+t.id+" from the current Client"),null}},t.prototype._isClientProcessing=function(t){var e=this;return new ut((function(n){var r=0,o=0;clearInterval(o),o=setInterval((function(){e._processing?(r+=1,t&&r>=t&&n({interval:o,ready:!1})):n({interval:o,ready:!0})}),1)}))},t.prototype._getBackend=function(){return this._backend},t.prototype._isEnabled=function(){return!1!==this.getOptions().enabled&&void 0!==this._dsn},t.prototype._prepareEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.environment,a=o.release,c=o.dist,s=o.maxValueLength,u=void 0===s?250:s,l=o.normalizeDepth,p=void 0===l?3:l,f=at.a({},t);void 0===f.environment&&void 0!==i&&(f.environment=i),void 0===f.release&&void 0!==a&&(f.release=a),void 0===f.dist&&void 0!==c&&(f.dist=c),f.message&&(f.message=Object(St.d)(f.message,u));var d=f.exception&&f.exception.values&&f.exception.values[0];d&&d.value&&(d.value=Object(St.d)(d.value,u));var h=f.request;h&&h.url&&(h.url=Object(St.d)(h.url,u)),void 0===f.event_id&&(f.event_id=n&&n.event_id?n.event_id:Object(lt.m)()),this._addIntegrations(f.sdk);var _=ut.resolve(f);return e&&(_=e.applyToEvent(f,n)),_.then((function(t){return"number"==typeof p&&p>0?r._normalizeEvent(t,p):t}))},t.prototype._normalizeEvent=function(t,e){return t?at.a({},t,t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map((function(t){return at.a({},t,t.data&&{data:Object(jt.c)(t.data,e)})}))},t.user&&{user:Object(jt.c)(t.user,e)},t.contexts&&{contexts:Object(jt.c)(t.contexts,e)},t.extra&&{extra:Object(jt.c)(t.extra,e)}):null},t.prototype._addIntegrations=function(t){var e=Object.keys(this._integrations);t&&e.length>0&&(t.integrations=e)},t.prototype._processEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.beforeSend,a=o.sampleRate;return this._isEnabled()?"number"==typeof a&&Math.random()>a?ut.reject("This event has been sampled, will not send event."):new ut((function(o,a){r._prepareEvent(t,n,e).then((function(t){if(null!==t){var n=t;if(e&&e.data&&!0===e.data.__sentry__||!i)return r._getBackend().sendEvent(n),void o(n);var c=i(t,e);if(void 0===c)mt.error("`beforeSend` method has to return `null` or a valid event.");else if(Object(st.m)(c))r._handleAsyncBeforeSend(c,o,a);else{if(null===(n=c))return mt.log("`beforeSend` returned `null`, will not send event."),void o(null);r._getBackend().sendEvent(n),o(n)}}else a("An event processor returned null, will not send event.")})).then(null,(function(t){r.captureException(t,{data:{__sentry__:!0},originalException:t}),a("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: "+t)}))})):ut.reject("SDK not enabled, will not send event.")},t.prototype._handleAsyncBeforeSend=function(t,e,n){var r=this;t.then((function(t){null!==t?(r._getBackend().sendEvent(t),e(t)):n("`beforeSend` returned `null`, will not send event.")})).then(null,(function(t){n("beforeSend rejected with "+t)}))},t}(),Rt=function(){function t(){}return t.prototype.sendEvent=function(){return ut.resolve({reason:"NoopTransport: Event has been skipped because no Dsn is configured.",status:it.Skipped})},t.prototype.close=function(){return ut.resolve(!0)},t}(),It=function(){function t(t){this._options=t,this._options.dsn||mt.warn("No DSN provided, backend will not do anything."),this._transport=this._setupTransport()}return t.prototype._setupTransport=function(){return new Rt},t.prototype.eventFromException=function(){throw new wt("Backend has to implement `eventFromException` method")},t.prototype.eventFromMessage=function(){throw new wt("Backend has to implement `eventFromMessage` method")},t.prototype.sendEvent=function(t){this._transport.sendEvent(t).then(null,(function(t){mt.error("Error while sending event: "+t)}))},t.prototype.getTransport=function(){return this._transport},t}(),Pt=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Lt=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,Nt=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,Ut=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Dt=/\((\S*)(?::(\d+))(?::(\d+))\)/,At=function(){function t(t){this._limit=t,this._buffer=[]}return t.prototype.isReady=function(){return void 0===this._limit||this.length()0&&n(!1)}),t);ut.all(e._buffer).then((function(){clearTimeout(r),n(!0)})).then(null,(function(){n(!0)}))}))},t}(),Mt=function(){function t(t){this.options=t,this._buffer=new At(30),this.url=new kt(this.options.dsn).getStoreEndpointWithUrlEncodedAuth()}return t.prototype.sendEvent=function(){throw new wt("Transport Class has to implement `sendEvent` method")},t.prototype.close=function(t){return this._buffer.drain(t)},t}(),Ft=Object(lt.f)(),Bt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._disabledUntil=new Date(Date.now()),e}return at.b(e,t),e.prototype.sendEvent=function(t){var e=this;if(new Date(Date.now())"}0!==e.length&&c().addBreadcrumb({category:"ui."+t.name,message:e},{event:t.event,name:t.name})},t.prototype._xhrBreadcrumb=function(t){if(t.endTimestamp){if(t.xhr.__sentry_own_request__)return;c().addBreadcrumb({category:"xhr",data:t.xhr.__sentry_xhr__,type:"http"},{xhr:t.xhr})}else this._options.sentry&&t.xhr.__sentry_own_request__&&J(t.args[0])},t.prototype._fetchBreadcrumb=function(t){if(t.endTimestamp){var e=c().getClient(),n=e&&e.getDsn();if(this._options.sentry&&n){var r=new kt(n).getStoreEndpoint();if(r&&-1!==t.fetchData.url.indexOf(r)&&"POST"===t.fetchData.method&&t.args[1]&&t.args[1].body)return void J(t.args[1].body)}t.error?c().addBreadcrumb({category:"fetch",data:at.a({},t.fetchData,{status_code:t.response.status}),level:ot.Error,type:"http"},{data:t.error,input:t.args}):c().addBreadcrumb({category:"fetch",data:at.a({},t.fetchData,{status_code:t.response.status}),type:"http"},{input:t.args,response:t.response})}},t.prototype._historyBreadcrumb=function(t){var e=Object(lt.f)(),n=t.from,r=t.to,o=Object(lt.k)(e.location.href),i=Object(lt.k)(n),a=Object(lt.k)(r);i.path||(i=o),o.protocol===a.protocol&&o.host===a.host&&(r=a.relative),o.protocol===i.protocol&&o.host===i.host&&(n=i.relative),c().addBreadcrumb({category:"navigation",data:{from:n,to:r}})},t.prototype.setupOnce=function(){var t=this;this._options.console&&B({callback:function(){for(var e=[],n=0;n0?e:Object(lt.g)();return 0===t.exception.values[0].stacktrace.frames.length&&t.exception.values[0].stacktrace.frames.push({colno:o,filename:a,function:"?",in_app:!0,lineno:i}),t},t.id="GlobalHandlers",t}(),ie=function(){function t(e){void 0===e&&(e={}),this.name=t.id,this._key=e.key||"cause",this._limit=e.limit||5}return t.prototype.setupOnce=function(){o((function(e,n){var r=c().getIntegration(t);return r?r._handler(e,n):e}))},t.prototype._handler=function(t,e){if(!(t.exception&&t.exception.values&&e&&Object(st.g)(e.originalException,Error)))return t;var n=this._walkErrorTree(e.originalException,this._key);return t.exception.values=at.d(n,t.exception.values),t},t.prototype._walkErrorTree=function(t,e,n){if(void 0===n&&(n=[]),!Object(st.g)(t[e],Error)||n.length+1>=this._limit)return n;var r=I(T(t[e]));return this._walkErrorTree(t[e],e,at.d([r],n))},t.id="LinkedErrors",t}(),ae=Object(lt.f)(),ce=function(){function t(){this.name=t.id}return t.prototype.setupOnce=function(){o((function(e){if(c().getIntegration(t)){if(!ae.navigator||!ae.location)return e;var n=e.request||{};return n.url=n.url||ae.location.href,n.headers=n.headers||{},n.headers["User-Agent"]=ae.navigator.userAgent,at.a({},e,{request:n})}return e}))},t.id="UserAgent",t}(),se=[new et.InboundFilters,new et.FunctionToString,new $t,new re,new oe,new ie,new ce],ue={},le=Object(lt.f)();le.Sentry&&le.Sentry.Integrations&&(ue=le.Sentry.Integrations);var pe=at.a({},ue,et,nt)},zCbC:function(t,e,n){"use strict";var r=n("SdNZ");e.a=Object(r.a)((function(t){n.e(6).then(function(){t(n("YJDv"))}.bind(null,n)).catch(n.oe)}))}}); -//# sourceMappingURL=bundle.4037e.js.map \ No newline at end of file diff --git a/docs/bundle.4037e.js.map b/docs/bundle.4037e.js.map deleted file mode 100644 index 4e612dc..0000000 --- a/docs/bundle.4037e.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./routes/vldigeometria.js?971d","webpack:///./components/Parts/Footer.less","webpack:///./routes/apprendimentoSistemiArtificiali.js?75cd","webpack:///./routes/statistica.js?3c70","webpack:///../src/misc.ts","webpack:///../node_modules/process/browser.js","webpack:///../src/memo.ts","webpack:///./contexts/LatexRenderColor.js","webpack:///./routes/mingwinstall.js?cec4","webpack:///../src/is.ts","webpack:///./routes/OttimizzazioneLineare.js?30da","webpack:///./routes/calcoloNumerico.js?8c12","webpack:///../node_modules/webpack/buildin/harmony-module.js","webpack:///./index.js","webpack:///../node_modules/@preact/async-loader/async-legacy.js","webpack:///./routes/basiDiDati.js?e91b","webpack:///./routes/home.js?7109","webpack:///../src/util.js","webpack:///../src/index.js","webpack:///../node_modules/tslib/tslib.es6.js","webpack:///../src/string.ts","webpack:///./components/Parts/Footer.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///../node_modules/preact-cli/lib/lib/entry.js","webpack:///../node_modules/webpack/buildin/global.js","webpack:///../src/object.ts","webpack:///../node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///../node_modules/resolve-pathname/esm/resolve-pathname.js","webpack:///../node_modules/history/esm/history.js","webpack:///../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack:///../src/check-props.js","webpack:///../src/component-stack.js","webpack:///../src/debug.js","webpack:///../src/devtools.js","webpack:///../src/scope.ts","webpack:///../src/hub.ts","webpack:///../src/index.ts","webpack:///../src/integration.ts","webpack:///../src/supports.ts","webpack:///../src/tracekit.ts","webpack:///../src/parsers.ts","webpack:///../src/eventbuilder.ts","webpack:///../src/helpers.ts","webpack:///../src/instrument.ts","webpack:///../../src/integrations/breadcrumbs.ts","webpack:///../src/sdk.ts","webpack:///../src/severity.ts","webpack:///../src/status.ts","webpack:///../src/syncpromise.ts","webpack:///../src/logger.ts","webpack:///../../src/integrations/functiontostring.ts","webpack:///../src/polyfill.ts","webpack:///../src/error.ts","webpack:///../src/dsn.ts","webpack:///../src/api.ts","webpack:///../src/baseclient.ts","webpack:///../../src/transports/noop.ts","webpack:///../src/basebackend.ts","webpack:///../src/promisebuffer.ts","webpack:///../../src/transports/base.ts","webpack:///../../src/transports/fetch.ts","webpack:///../../src/transports/xhr.ts","webpack:///../src/backend.ts","webpack:///../src/version.ts","webpack:///../src/client.ts","webpack:///../../src/integrations/inboundfilters.ts","webpack:///../../src/integrations/trycatch.ts","webpack:///../../src/integrations/globalhandlers.ts","webpack:///../../src/integrations/linkederrors.ts","webpack:///../../src/integrations/useragent.ts","webpack:///./routes/fisica.js?9847"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","__webpack_require__","installedModules","exports","module","l","installedCssChunks","0","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","cb","isNodeEnv","toString","process","getGlobalObject","global","self","fallbackGlobalObject","uuid4","crypto","msCrypto","getRandomValues","arr","Uint16Array","pad","num","v","replace","Math","random","parseUrl","url","match","host","path","protocol","relative","getEventDescription","exception","values","event_id","consoleSandbox","callback","originalConsole","wrappedLevels","forEach","level","__sentry_original__","result","keys","addExceptionTypeValue","addExceptionMechanism","mechanism","_oO","getLocationHref","location","oO","htmlTreeAsString","elem","currentElem","out","height","len","sepLength","nextStr","_htmlElementAsString","reverse","join","el","className","classes","attr","tagName","toLowerCase","id","split","attrWhitelist","timestampWithMs","crossPlatformPerformance","timeOrigin","now","parseRetryAfterHeader","header","headerDelay","parseInt","isNaN","headerDate","Date","parse","getFunctionName","fn","INITIAL_TIME","prevNow","performanceFallback","require","performance","_","timing","navigationStart","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","this","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","run","marker","cachedClearTimeout","runClearTimeout","Item","array","noop","nextTick","args","Array","arguments","apply","title","browser","env","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","umask","_hasWeakSet","WeakSet","_inner","memoize","obj","has","add","unmemoize","delete","splice","createContext","isError","wat","isInstanceOf","isErrorEvent","isDOMError","isDOMException","isString","isPrimitive","isPlainObject","isEvent","Event","isElement","Element","isRegExp","isThenable","Boolean","isSyntheticEvent","base","_e","originalModule","webpackPolyfill","children","NODE_ENV","debug","init","dsn","Provider","history","createHashHistory","req","Async","b","old","Component","componentWillMount","nextBase","__b","setState","child","default","shouldComponentUpdate","nxt","nodeType","h","nodeName","dangerouslySetInnerHTML","__html","innerHTML","render","constructor","let","EMPTY","getCurrentUrl","customHistory","getCurrentLocation","pathname","search","route","ROUTERS","canRoute","setUrl","routeTo","didRoute","subscribers","routeFromLink","node","handleLinkClick","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","delegateLinkHandler","String","toUpperCase","hasAttribute","eventListenersInitialized","Router","props","super","state","addEventListener","static","onChange","const","getMatchingChildren","updating","forceUpdate","componentDidMount","unlisten","listen","componentWillUnmount","indexOf","componentWillUpdate","componentDidUpdate","invoke","filter","prepareVNodeForRanking","sort","pathRankSort","map","vnode","matches","exec","newProps","assign","ref","active","current","previous","previousUrl","router","Route","component","Link","onClick","__extends","__","extendStatics","__values","iterator","next","done","TypeError","__read","ar","__spread","setPrototypeOf","__proto__","__assign","truncate","str","max","substr","snipLine","line","colno","newLine","ll","start","end","min","safeJoin","input","delimiter","isArray","output","isMatchingPattern","pattern","test","class","style","copyright","getFullYear","removeNode","normalizedProps","defaultProps","createVNode","original","_children","_parent","_depth","_dom","_nextDom","_component","_original","options","createRef","Fragment","context","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","_dirty","rerenderQueue","rerenderCount","prevDebounce","debounceRendering","defer","a","_vnode","some","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","diff","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","sibDom","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","toChildArray","childVNode","nextDom","outer","nextSibling","insertBefore","unmount","applyRef","flattened","setStyle","setProperty","IS_NON_DIMENSIONAL","dom","oldValue","useCapture","nameLower","cssText","eventProxy","_listeners","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","newVNode","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","provider","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","doRender","sub","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillReceiveProps","_force","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","root","_commit","oldHtml","newHtml","localName","createTextNode","createElementNS","is","childNodes","attributes","hydrate","diffProps","checked","parentVNode","skipRemove","replaceNode","_root","IS_HYDRATE","cloneElement","defaultValue","ctx","Consumer","subs","_this","_props","isValidElement","hasCaught","getDerivedStateFromError","componentDidCatch","update","Preact","interopDefault","navigator","serviceWorker","register","__webpack_public_path__","getElementById","body","firstElementChild","app","preRenderData","inlineDataElement","querySelector","JSON","CLI_DATA","g","Function","fill","source","replacement","wrapped","defineProperties","_Oo","urlEncode","encodeURIComponent","getWalkSource","stack","CustomEvent","detail","jsonSize","encodeURI","utf8Length","stringify","normalizeToSize","depth","maxSize","serialized","normalize","normalizeValue","_events","walk","memo","Infinity","normalized","serializeValue","toJSON","acc","innerKey","extractExceptionKeysForMessage","maxLength","includedKeys","_extends","isAbsolute","charAt","spliceOne","list","index","k","pop","addLeadingSlash","stripLeadingSlash","stripBasename","prefix","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","action","getUserConfirmation","appendListener","listener","isActive","item","notifyListeners","_len","_key","getConfirmation","confirm","stripHash","getHashPath","substring","replaceHashPath","getDOMLocation","decodePath","basename","nextState","globalHistory","transitionManager","handleHashChange","encodedPath","encodePath","forceNextPop","ignorePath","ok","fromLocation","toIndex","allPaths","lastIndexOf","fromIndex","delta","go","revertPop","handlePop","checkDOMListeners","listenerCount","canUseDOM","invariant","_props$getUserConfirm","userAgent","_props$hashType","hashType","_HashPathCoders$hashT","HashPathCoders","initialLocation","isBlocked","createHref","baseTag","pushHashPath","prevIndex","nextPaths","goBack","goForward","block","unblock","to","from","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","last","up","part","unshift","condition","hashbang","noslash","slash","resetPropWarnings","loggedTypeFailures","getDisplayName","displayName","getCurrentVNode","renderStack","isPossibleOwner","getOwnerStack","_owner","reduce","owner","__source","fileName","lineNumber","hasBabelPlugin","warn","serializeVNode","attrs","prop","__PREACT_DEVTOOLS__","attachPreact","ownerStack","isWeakMapSupported","WeakMap","oldDiff","oldDiffed","oldRoot","oldRender","parent","setupComponentStack","oldBeforeDiff","oldVnode","oldCatchError","oldHook","_hook","warnedComponents","useEffect","useLayoutEffect","lazyPropTypes","_childDidSuspend","isValid","componentName","typeSpecs","getClosestDomNodeParent","propTypes","lazyVNode","set","typeSpecName","comp","deprecatedAttributes","deprecatedProto","__self","__hooks","hooks","_list","hook","_factory","_args","getGlobalEventProcessors","__SENTRY__","globalEventProcessors","addGlobalEventProcessor","getMainCarrier","carrier","extensions","hub","makeMain","registry","oldHub","getHubFromCarrier","setHubOnCarrier","getCurrentHub","hasHubOnCarrier","isOlderThan","sentry","activeDomain","registryHubTopStack","getStackTop","client","clone","scope","getHubFromActiveDomain","setupIntegrations","integrations","defaultIntegrations","userIntegrations","defaultIntegration","userIntegration","integrationsNames","getIntegrationsToSetup","integration","installedIntegrations","setupOnce","logger","log","setupIntegration","supportsFetch","Headers","Request","Response","isNativeFetch","func","supportsReferrerPolicy","referrerPolicy","computeStackTrace","ex","popSize","framesToPop","stacktrace","parts","opera10Regex","opera11Regex","lines","element","column","extractMessage","computeStackTraceFromStacktraceProp","popFrames","submatch","isNative","chromeEval","winjs","gecko","geckoEval","columnNumber","computeStackTraceFromStackProp","failed","exceptionFromStacktrace","frames","prepareFramesForEvent","eventFromStacktrace","localStack","firstFrameFunction","lastFrameFunction","frame","filename","function","in_app","lineno","eventFromUnknownInput","syntheticException","domException","eventFromString","rejection","extra","__serialized__","eventFromPlainObject","synthetic","attachStacktrace","shouldIgnoreOnError","ignoreOnError","ignoreNextOnError","wrap","before","__sentry__","__sentry_wrapped__","sentryWrapped","wrappedArguments","arg","handleEvent","withScope","addEventProcessor","processedEvent","captureException","getOwnPropertyDescriptor","configurable","instrument","instrumented","originalConsoleLevel","triggerHandlers","instrumentConsole","domEventHandler","keypressEventHandler","proto","eventName","innerOriginal","instrumentDOM","xhrproto","XMLHttpRequest","originalOpen","__sentry_xhr__","method","__sentry_own_request__","originalSend","xhr","commonHandlerData","startTimestamp","readyState","status_code","status","endTimestamp","instrumentXHR","fetch","doc","sandbox","hidden","contentWindow","supportsNativeFetch","originalFetch","fetchData","getFetchMethod","getFetchUrl","response","instrumentFetch","historyReplacementFunction","originalHistoryFunction","lastHref","chrome","runtime","pushState","replaceState","oldOnPopState","onpopstate","instrumentHistory","_oldOnErrorHandler","msg","_oldOnUnhandledRejectionHandler","onunhandledrejection","addInstrumentationHandler","handler","handlers","fetchArgs","debounce","keypressTimeout","lastCapturedEvent","debounceTimer","isContentEditable","addSentryBreadcrumb","serializedData","addBreadcrumb","category","Severity","fromString","release","SENTRY_RELEASE","initAndBind","showReportDialog","eventId","lastEventId","getClient","forceLoad","onLoad","flush","close","Status","Debug","Info","Warning","Fatal","Critical","Log","fromHttpCode","Success","RateLimit","Invalid","Failed","Unknown","States","executor","_state","PENDING","_handlers","_resolve","_setResult","RESOLVED","_reject","reason","REJECTED","_value","_executeHandlers","_attachHandler","cachedHandlers","onfulfilled","onrejected","SyncPromise","collection","counter","resolvedCollection","catch","val","finally","onfinally","isRejected","_notifyingListeners","_scopeListeners","_eventProcessors","_breadcrumbs","_user","_tags","_extra","_context","addScopeListener","_notifyScopeListeners","_notifyEventProcessors","processors","hint","processor","final","setUser","user","setTags","tags","setTag","setExtras","extras","setExtra","setFingerprint","fingerprint","_fingerprint","setLevel","_level","setTransaction","transaction","_transaction","_span","setContext","setSpan","span","getSpan","newScope","Scope","clear","breadcrumb","maxBreadcrumbs","mergedBreadcrumb","timestamp","clearBreadcrumbs","_applyFingerprint","applyToEvent","contexts","trace","getTraceContext","breadcrumbs","PREFIX","_enabled","disable","enable","originalFunctionToString","_version","_stack","_invokeClient","top","bindClient","pushScope","getStack","popScope","getScope","_lastEventId","finalHint","originalException","captureMessage","captureEvent","beforeBreadcrumb","finalBreadcrumb","configureScope","getIntegration","startSpan","spanOrSpanContext","forceNoChild","_callExtensionMethod","traceHeaders","DSN_REGEX","_fromString","_fromComponents","_validate","withPassword","pass","port","projectId","components","_dsnObject","getDsn","getStoreEndpoint","_getBaseUrl","getStoreEndpointPath","getStoreEndpointWithUrlEncodedAuth","auth","sentry_key","sentry_version","getRequestHeaders","clientName","clientVersion","getReportDialogEndpoint","dialogOptions","endpoint","encodedOptions","email","backendClass","_integrations","_processing","_backend","_options","_dsn","_getBackend","eventFromException","_processEvent","finalEvent","eventFromMessage","getOptions","_isClientProcessing","clearInterval","interval","getTransport","transportFlushed","ready","enabled","_isEnabled","ticked","setInterval","_prepareEvent","environment","dist","maxValueLength","normalizeDepth","prepared","_addIntegrations","sdk","evt","_normalizeEvent","sdkInfo","integrationsArray","beforeSend","sampleRate","sendEvent","beforeSendResult","_handleAsyncBeforeSend","Skipped","_transport","_setupTransport","_limit","_buffer","isReady","task","remove","drain","capturedSetTimeout","_disabledUntil","defaultOptions","headers","onreadystatechange","getResponseHeader","open","setRequestHeader","send","transportOptions","transport","handled","SDK_NAME","SDK_VERSION","platform","packages","async","FunctionToString","DEFAULT_IGNORE_ERRORS","InboundFilters","clientOptions","_mergeOptions","_shouldDropEvent","_isSentryError","_isIgnoredError","_isBlacklistedUrl","_getEventFilterUrl","_isWhitelistedUrl","ignoreInternal","ignoreErrors","_getPossibleEventMessages","blacklistUrls","whitelistUrls","_ignoreOnError","TryCatch","_wrapTimeFunction","originalCallback","_wrapRAF","_wrapEventTarget","_wrapXHR","xmlHttpRequestProps","wrapOptions","Breadcrumbs","_consoleBreadcrumb","handlerData","_domBreadcrumb","_xhrBreadcrumb","_fetchBreadcrumb","filterUrl","_historyBreadcrumb","parsedLoc","parsedFrom","parsedTo","GlobalHandlers","_onErrorHandlerInstalled","_onUnhandledRejectionHandlerInstalled","stackTraceLimit","_installGlobalOnErrorHandler","_installGlobalOnUnhandledRejectionHandler","currentHub","hasIntegration","isFailedOwnDelivery","_eventFromIncompleteOnError","_enhanceEventWithInitialFrame","_eventFromIncompleteRejection","groups","LinkedErrors","limit","_handler","linkedErrors","_walkErrorTree","UserAgent","windowIntegrations","_window","Sentry","Integrations","INTEGRATIONS"],"mappings":"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","file":"bundle.4037e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"route-OttimizzazioneLineare\",\"3\":\"route-apprendimentoSistemiArtificiali\",\"4\":\"route-basiDiDati\",\"5\":\"route-calcoloNumerico\",\"6\":\"route-fisica\",\"7\":\"route-home\",\"8\":\"route-mingwinstall\",\"9\":\"route-statistica\",\"10\":\"route-vldigeometria\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"61616\",\"3\":\"87f5e\",\"4\":\"34329\",\"5\":\"a2e66\",\"6\":\"5cab8\",\"7\":\"a14d6\",\"8\":\"d712b\",\"9\":\"49197\",\"10\":\"9b0c5\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1,\"3\":1,\"4\":1,\"5\":1,\"6\":1,\"7\":1,\"8\":1,\"9\":1,\"10\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"2\":\"route-OttimizzazioneLineare\",\"3\":\"route-apprendimentoSistemiArtificiali\",\"4\":\"route-basiDiDati\",\"5\":\"route-calcoloNumerico\",\"6\":\"route-fisica\",\"7\":\"route-home\",\"8\":\"route-mingwinstall\",\"9\":\"route-statistica\",\"10\":\"route-vldigeometria\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"05781\",\"3\":\"75409\",\"4\":\"d7b86\",\"5\":\"0791e\",\"6\":\"6a691\",\"7\":\"0d277\",\"8\":\"d169e\",\"9\":\"0b8c5\",\"10\":\"0c65e\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./vldigeometria.js\") );\n\t\t\t}, \"route-vldigeometria\");\n\t\t}\n\n\t\texport default Async(load);\n\t","// extracted by mini-css-extract-plugin\nmodule.exports = {\"footer\":\"footer__2wc45\"};","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./apprendimentoSistemiArtificiali.js\") );\n\t\t\t}, \"route-apprendimentoSistemiArtificiali\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./statistica.js\") );\n\t\t\t}, \"route-statistica\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import { Event, Integration, StackFrame, WrappedFunction } from '@sentry/types';\n\nimport { isString } from './is';\nimport { snipLine } from './string';\n\n/** Internal */\ninterface SentryGlobal {\n Sentry?: {\n Integrations?: Integration[];\n };\n SENTRY_ENVIRONMENT?: string;\n SENTRY_DSN?: string;\n SENTRY_RELEASE?: {\n id?: string;\n };\n __SENTRY__: {\n globalEventProcessors: any;\n hub: any;\n logger: any;\n };\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n */\nexport function dynamicRequire(mod: any, request: string): any {\n // tslint:disable-next-line: no-unsafe-any\n return mod.require(request);\n}\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nexport function isNodeEnv(): boolean {\n // tslint:disable:strict-type-predicates\n return Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n}\n\nconst fallbackGlobalObject = {};\n\n/**\n * Safely get global scope object\n *\n * @returns Global scope object\n */\nexport function getGlobalObject(): T & SentryGlobal {\n return (isNodeEnv()\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof self !== 'undefined'\n ? self\n : fallbackGlobalObject) as T & SentryGlobal;\n}\n// tslint:enable:strict-type-predicates\n\n/**\n * Extended Window interface that allows for Crypto API usage in IE browsers\n */\ninterface MsCryptoWindow extends Window {\n msCrypto?: Crypto;\n}\n\n/**\n * UUID4 generator\n *\n * @returns string Generated UUID4.\n */\nexport function uuid4(): string {\n const global = getGlobalObject() as MsCryptoWindow;\n const crypto = global.crypto || global.msCrypto;\n\n if (!(crypto === void 0) && crypto.getRandomValues) {\n // Use window.crypto API if available\n const arr = new Uint16Array(8);\n crypto.getRandomValues(arr);\n\n // set 4 in byte 7\n // tslint:disable-next-line:no-bitwise\n arr[3] = (arr[3] & 0xfff) | 0x4000;\n // set 2 most significant bits of byte 9 to '10'\n // tslint:disable-next-line:no-bitwise\n arr[4] = (arr[4] & 0x3fff) | 0x8000;\n\n const pad = (num: number): string => {\n let v = num.toString(16);\n while (v.length < 4) {\n v = `0${v}`;\n }\n return v;\n };\n\n return (\n pad(arr[0]) + pad(arr[1]) + pad(arr[2]) + pad(arr[3]) + pad(arr[4]) + pad(arr[5]) + pad(arr[6]) + pad(arr[7])\n );\n }\n // http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/2117523#2117523\n return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // tslint:disable-next-line:no-bitwise\n const r = (Math.random() * 16) | 0;\n // tslint:disable-next-line:no-bitwise\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n}\n\n/**\n * Parses string form of URL into an object\n * // borrowed from https://tools.ietf.org/html/rfc3986#appendix-B\n * // intentionally using regex and not href parsing trick because React Native and other\n * // environments where DOM might not be available\n * @returns parsed URL object\n */\nexport function parseUrl(\n url: string,\n): {\n host?: string;\n path?: string;\n protocol?: string;\n relative?: string;\n} {\n if (!url) {\n return {};\n }\n\n const match = url.match(/^(([^:\\/?#]+):)?(\\/\\/([^\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$/);\n\n if (!match) {\n return {};\n }\n\n // coerce to undefined values to empty string so we don't get 'undefined'\n const query = match[6] || '';\n const fragment = match[8] || '';\n return {\n host: match[4],\n path: match[5],\n protocol: match[2],\n relative: match[5] + query + fragment, // everything minus origin\n };\n}\n\n/**\n * Extracts either message or type+value from an event that can be used for user-facing logs\n * @returns event's description\n */\nexport function getEventDescription(event: Event): string {\n if (event.message) {\n return event.message;\n }\n if (event.exception && event.exception.values && event.exception.values[0]) {\n const exception = event.exception.values[0];\n\n if (exception.type && exception.value) {\n return `${exception.type}: ${exception.value}`;\n }\n return exception.type || exception.value || event.event_id || '';\n }\n return event.event_id || '';\n}\n\n/** JSDoc */\ninterface ExtensibleConsole extends Console {\n [key: string]: any;\n}\n\n/** JSDoc */\nexport function consoleSandbox(callback: () => any): any {\n const global = getGlobalObject();\n const levels = ['debug', 'info', 'warn', 'error', 'log', 'assert'];\n\n if (!('console' in global)) {\n return callback();\n }\n\n const originalConsole = global.console as ExtensibleConsole;\n const wrappedLevels: { [key: string]: any } = {};\n\n // Restore all wrapped console methods\n levels.forEach(level => {\n if (level in global.console && (originalConsole[level] as WrappedFunction).__sentry_original__) {\n wrappedLevels[level] = originalConsole[level] as WrappedFunction;\n originalConsole[level] = (originalConsole[level] as WrappedFunction).__sentry_original__;\n }\n });\n\n // Perform callback manipulations\n const result = callback();\n\n // Revert restoration to wrapped state\n Object.keys(wrappedLevels).forEach(level => {\n originalConsole[level] = wrappedLevels[level];\n });\n\n return result;\n}\n\n/**\n * Adds exception values, type and value to an synthetic Exception.\n * @param event The event to modify.\n * @param value Value of the exception.\n * @param type Type of the exception.\n * @hidden\n */\nexport function addExceptionTypeValue(event: Event, value?: string, type?: string): void {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].value = event.exception.values[0].value || value || '';\n event.exception.values[0].type = event.exception.values[0].type || type || 'Error';\n}\n\n/**\n * Adds exception mechanism to a given event.\n * @param event The event to modify.\n * @param mechanism Mechanism of the mechanism.\n * @hidden\n */\nexport function addExceptionMechanism(\n event: Event,\n mechanism: {\n [key: string]: any;\n } = {},\n): void {\n // TODO: Use real type with `keyof Mechanism` thingy and maybe make it better?\n try {\n // @ts-ignore\n // tslint:disable:no-non-null-assertion\n event.exception!.values![0].mechanism = event.exception!.values![0].mechanism || {};\n Object.keys(mechanism).forEach(key => {\n // @ts-ignore\n event.exception!.values![0].mechanism[key] = mechanism[key];\n });\n } catch (_oO) {\n // no-empty\n }\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n try {\n return document.location.href;\n } catch (oO) {\n return '';\n }\n}\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(elem: unknown): string {\n type SimpleNode = {\n parentNode: SimpleNode;\n } | null;\n\n // try/catch both:\n // - accessing event.target (see getsentry/raven-js#838, #768)\n // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n // - can throw an exception in some circumstances.\n try {\n let currentElem = elem as SimpleNode;\n const MAX_TRAVERSE_HEIGHT = 5;\n const MAX_OUTPUT_LEN = 80;\n const out = [];\n let height = 0;\n let len = 0;\n const separator = ' > ';\n const sepLength = separator.length;\n let nextStr;\n\n while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n nextStr = _htmlElementAsString(currentElem);\n // bail out if\n // - nextStr is the 'html' element\n // - the length of the string that would be created exceeds MAX_OUTPUT_LEN\n // (ignore this limit if we are on the first iteration)\n if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= MAX_OUTPUT_LEN)) {\n break;\n }\n\n out.push(nextStr);\n\n len += nextStr.length;\n currentElem = currentElem.parentNode;\n }\n\n return out.reverse().join(separator);\n } catch (_oO) {\n return '';\n }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown): string {\n const elem = el as {\n getAttribute(key: string): string; // tslint:disable-line:completed-docs\n tagName?: string;\n id?: string;\n className?: string;\n };\n\n const out = [];\n let className;\n let classes;\n let key;\n let attr;\n let i;\n\n if (!elem || !elem.tagName) {\n return '';\n }\n\n out.push(elem.tagName.toLowerCase());\n if (elem.id) {\n out.push(`#${elem.id}`);\n }\n\n className = elem.className;\n if (className && isString(className)) {\n classes = className.split(/\\s+/);\n for (i = 0; i < classes.length; i++) {\n out.push(`.${classes[i]}`);\n }\n }\n const attrWhitelist = ['type', 'name', 'title', 'alt'];\n for (i = 0; i < attrWhitelist.length; i++) {\n key = attrWhitelist[i];\n attr = elem.getAttribute(key);\n if (attr) {\n out.push(`[${key}=\"${attr}\"]`);\n }\n }\n return out.join('');\n}\n\nconst INITIAL_TIME = Date.now();\nlet prevNow = 0;\n\n/**\n * Cross platform compatible partial performance implementation\n */\ninterface CrossPlatformPerformance {\n /**\n * Returns the current timestamp in ms\n */\n now(): number;\n timeOrigin: number;\n}\n\nconst performanceFallback: CrossPlatformPerformance = {\n now(): number {\n let now = Date.now() - INITIAL_TIME;\n if (now < prevNow) {\n now = prevNow;\n }\n prevNow = now;\n return now;\n },\n timeOrigin: INITIAL_TIME,\n};\n\nexport const crossPlatformPerformance: CrossPlatformPerformance = (() => {\n if (isNodeEnv()) {\n try {\n const perfHooks = dynamicRequire(module, 'perf_hooks') as { performance: CrossPlatformPerformance };\n return perfHooks.performance;\n } catch (_) {\n return performanceFallback;\n }\n }\n\n if (getGlobalObject().performance) {\n // Polyfill for performance.timeOrigin.\n //\n // While performance.timing.navigationStart is deprecated in favor of performance.timeOrigin, performance.timeOrigin\n // is not as widely supported. Namely, performance.timeOrigin is undefined in Safari as of writing.\n // tslint:disable-next-line:strict-type-predicates\n if (performance.timeOrigin === undefined) {\n // As of writing, performance.timing is not available in Web Workers in mainstream browsers, so it is not always a\n // valid fallback. In the absence of a initial time provided by the browser, fallback to INITIAL_TIME.\n // @ts-ignore\n // tslint:disable-next-line:deprecation\n performance.timeOrigin = (performance.timing && performance.timing.navigationStart) || INITIAL_TIME;\n }\n }\n\n return getGlobalObject().performance || performanceFallback;\n})();\n\n/**\n * Returns a timestamp in seconds with milliseconds precision since the UNIX epoch calculated with the monotonic clock.\n */\nexport function timestampWithMs(): number {\n return (crossPlatformPerformance.timeOrigin + crossPlatformPerformance.now()) / 1000;\n}\n\n// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string\nconst SEMVER_REGEXP = /^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$/;\n\n/**\n * Represents Semantic Versioning object\n */\ninterface SemVer {\n major?: number;\n minor?: number;\n patch?: number;\n prerelease?: string;\n buildmetadata?: string;\n}\n\n/**\n * Parses input into a SemVer interface\n * @param input string representation of a semver version\n */\nexport function parseSemver(input: string): SemVer {\n const match = input.match(SEMVER_REGEXP) || [];\n const major = parseInt(match[1], 10);\n const minor = parseInt(match[2], 10);\n const patch = parseInt(match[3], 10);\n return {\n buildmetadata: match[5],\n major: isNaN(major) ? undefined : major,\n minor: isNaN(minor) ? undefined : minor,\n patch: isNaN(patch) ? undefined : patch,\n prerelease: match[4],\n };\n}\n\nconst defaultRetryAfter = 60 * 1000; // 60 seconds\n\n/**\n * Extracts Retry-After value from the request header or returns default value\n * @param now current unix timestamp\n * @param header string representation of 'Retry-After' header\n */\nexport function parseRetryAfterHeader(now: number, header?: string | number | null): number {\n if (!header) {\n return defaultRetryAfter;\n }\n\n const headerDelay = parseInt(`${header}`, 10);\n if (!isNaN(headerDelay)) {\n return headerDelay * 1000;\n }\n\n const headerDate = Date.parse(`${header}`);\n if (!isNaN(headerDate)) {\n return headerDate - now;\n }\n\n return defaultRetryAfter;\n}\n\nconst defaultFunctionName = '';\n\n/**\n * Safely extract function name from itself\n */\nexport function getFunctionName(fn: unknown): string {\n try {\n if (!fn || typeof fn !== 'function') {\n return defaultFunctionName;\n }\n return fn.name || defaultFunctionName;\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n return defaultFunctionName;\n }\n}\n\n/**\n * This function adds context (pre/post/line) lines to the provided frame\n *\n * @param lines string[] containing all lines\n * @param frame StackFrame that will be mutated\n * @param linesOfContext number of context lines we want to add pre/post\n */\nexport function addContextToFrame(lines: string[], frame: StackFrame, linesOfContext: number = 5): void {\n const lineno = frame.lineno || 0;\n const maxLines = lines.length;\n const sourceLine = Math.max(Math.min(maxLines, lineno - 1), 0);\n\n frame.pre_context = lines\n .slice(Math.max(0, sourceLine - linesOfContext), sourceLine)\n .map((line: string) => snipLine(line, 0));\n\n frame.context_line = snipLine(lines[Math.min(maxLines - 1, sourceLine)], frame.colno || 0);\n\n frame.post_context = lines\n .slice(Math.min(sourceLine + 1, maxLines), sourceLine + 1 + linesOfContext)\n .map((line: string) => snipLine(line, 0));\n}\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","// tslint:disable:no-unsafe-any\n/**\n * Memo class used for decycle json objects. Uses WeakSet if available otherwise array.\n */\nexport class Memo {\n /** Determines if WeakSet is available */\n private readonly _hasWeakSet: boolean;\n /** Either WeakSet or Array */\n private readonly _inner: any;\n\n public constructor() {\n // tslint:disable-next-line\n this._hasWeakSet = typeof WeakSet === 'function';\n this._inner = this._hasWeakSet ? new WeakSet() : [];\n }\n\n /**\n * Sets obj to remember.\n * @param obj Object to remember\n */\n public memoize(obj: any): boolean {\n if (this._hasWeakSet) {\n if (this._inner.has(obj)) {\n return true;\n }\n this._inner.add(obj);\n return false;\n }\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < this._inner.length; i++) {\n const value = this._inner[i];\n if (value === obj) {\n return true;\n }\n }\n this._inner.push(obj);\n return false;\n }\n\n /**\n * Removes object from internal storage.\n * @param obj Object to forget\n */\n public unmemoize(obj: any): void {\n if (this._hasWeakSet) {\n this._inner.delete(obj);\n } else {\n for (let i = 0; i < this._inner.length; i++) {\n if (this._inner[i] === obj) {\n this._inner.splice(i, 1);\n break;\n }\n }\n }\n }\n}\n","import {createContext} from \"preact\";\r\n\r\nexport default createContext(\"White\");\r\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./mingwinstall.js\") );\n\t\t\t}, \"route-mingwinstall\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Checks whether given value's type is one of a few Error or Error-like\n * {@link isError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isError(wat: any): boolean {\n switch (Object.prototype.toString.call(wat)) {\n case '[object Error]':\n return true;\n case '[object Exception]':\n return true;\n case '[object DOMException]':\n return true;\n default:\n return isInstanceOf(wat, Error);\n }\n}\n\n/**\n * Checks whether given value's type is ErrorEvent\n * {@link isErrorEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isErrorEvent(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object ErrorEvent]';\n}\n\n/**\n * Checks whether given value's type is DOMError\n * {@link isDOMError}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMError(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMError]';\n}\n\n/**\n * Checks whether given value's type is DOMException\n * {@link isDOMException}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isDOMException(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object DOMException]';\n}\n\n/**\n * Checks whether given value's type is a string\n * {@link isString}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isString(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object String]';\n}\n\n/**\n * Checks whether given value's is a primitive (undefined, null, number, boolean, string)\n * {@link isPrimitive}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPrimitive(wat: any): boolean {\n return wat === null || (typeof wat !== 'object' && typeof wat !== 'function');\n}\n\n/**\n * Checks whether given value's type is an object literal\n * {@link isPlainObject}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isPlainObject(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object Object]';\n}\n\n/**\n * Checks whether given value's type is an Event instance\n * {@link isEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isEvent(wat: any): boolean {\n // tslint:disable-next-line:strict-type-predicates\n return typeof Event !== 'undefined' && isInstanceOf(wat, Event);\n}\n\n/**\n * Checks whether given value's type is an Element instance\n * {@link isElement}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isElement(wat: any): boolean {\n // tslint:disable-next-line:strict-type-predicates\n return typeof Element !== 'undefined' && isInstanceOf(wat, Element);\n}\n\n/**\n * Checks whether given value's type is an regexp\n * {@link isRegExp}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isRegExp(wat: any): boolean {\n return Object.prototype.toString.call(wat) === '[object RegExp]';\n}\n\n/**\n * Checks whether given value has a then function.\n * @param wat A value to be checked.\n */\nexport function isThenable(wat: any): boolean {\n // tslint:disable:no-unsafe-any\n return Boolean(wat && wat.then && typeof wat.then === 'function');\n // tslint:enable:no-unsafe-any\n}\n\n/**\n * Checks whether given value's type is a SyntheticEvent\n * {@link isSyntheticEvent}.\n *\n * @param wat A value to be checked.\n * @returns A boolean representing the result.\n */\nexport function isSyntheticEvent(wat: any): boolean {\n // tslint:disable-next-line:no-unsafe-any\n return isPlainObject(wat) && 'nativeEvent' in wat && 'preventDefault' in wat && 'stopPropagation' in wat;\n}\n/**\n * Checks whether given value's type is an instance of provided constructor.\n * {@link isInstanceOf}.\n *\n * @param wat A value to be checked.\n * @param base A constructor to be used in a check.\n * @returns A boolean representing the result.\n */\nexport function isInstanceOf(wat: any, base: any): boolean {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return wat instanceof base;\n } catch (_e) {\n return false;\n }\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./OttimizzazioneLineare.js\") );\n\t\t\t}, \"route-OttimizzazioneLineare\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./calcoloNumerico.js\") );\n\t\t\t}, \"route-calcoloNumerico\");\n\t\t}\n\n\t\texport default Async(load);\n\t","module.exports = function(originalModule) {\n\tif (!originalModule.webpackPolyfill) {\n\t\tvar module = Object.create(originalModule);\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"exports\", {\n\t\t\tenumerable: true\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import process from \"process\";\n\nlet Sentry = null;\nif(!process.env.NODE_ENV || process.env.NODE_ENV === \"development\") {\n\tconsole.debug(\"Initializing Preact Debugger...\")\n\trequire(\"preact/debug\");\n}\nelse {\n\tconsole.debug(\"Initializing Sentry...\")\n\tSentry = require(\"@sentry/browser\");\n\tSentry.init({dsn: \"https://9f5089346fd14e04a6f412638474dfec@o40131.ingest.sentry.io/5255500\"});\n}\n\n// noinspection ES6UnusedImports\nimport _style from './index.less';\n// noinspection ES6UnusedImports\nimport _manifest from './meta/manifest.json';\n// noinspection ES6UnusedImports\nimport _cname from './meta/CNAME';\n// noinspection ES6UnusedImports\nimport _nojekyll from './meta/.nojekyll';\n\nimport Router from 'preact-router';\nimport {createHashHistory} from \"history\";\nimport Home from './routes/home';\nimport Fisica from './routes/fisica';\nimport VlDiGeometria from './routes/vldigeometria';\nimport MingwInstall from './routes/mingwinstall';\nimport Footer from './components/Parts/Footer';\nimport Statistica from './routes/statistica';\nimport OttimizzazioneLineare from \"./routes/OttimizzazioneLineare\";\nimport BasiDiDati from './routes/basiDiDati';\nimport CalcoloNumerico from './routes/calcoloNumerico';\nimport ApprendimentoSistemiArtificiali from \"./routes/apprendimentoSistemiArtificiali\";\nimport LatexRenderColor from \"./contexts/LatexRenderColor\";\n\n// noinspection JSUnusedGlobalSymbols\nexport default function(props) {\n\treturn (\n\t\t
\n\t\t\t\n\t\t\t\t

Appuntiweb di Steffo

\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
\n\t\t\t\n\t\t
\n\t);\n}\n","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./basiDiDati.js\") );\n\t\t\t}, \"route-basiDiDati\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./home.js\") );\n\t\t\t}, \"route-home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { isRegExp, isString } from './is';\n\n/**\n * Truncates given string to the maximum characters count\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\nexport function truncate(str: string, max: number = 0): string {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof str !== 'string' || max === 0) {\n return str;\n }\n return str.length <= max ? str : `${str.substr(0, max)}...`;\n}\n\n/**\n * This is basically just `trim_line` from\n * https://github.com/getsentry/sentry/blob/master/src/sentry/lang/javascript/processor.py#L67\n *\n * @param str An object that contains serializable values\n * @param max Maximum number of characters in truncated string\n * @returns string Encoded\n */\n\nexport function snipLine(line: string, colno: number): string {\n let newLine = line;\n const ll = newLine.length;\n if (ll <= 150) {\n return newLine;\n }\n if (colno > ll) {\n colno = ll; // tslint:disable-line:no-parameter-reassignment\n }\n\n let start = Math.max(colno - 60, 0);\n if (start < 5) {\n start = 0;\n }\n\n let end = Math.min(start + 140, ll);\n if (end > ll - 5) {\n end = ll;\n }\n if (end === ll) {\n start = Math.max(end - 140, 0);\n }\n\n newLine = newLine.slice(start, end);\n if (start > 0) {\n newLine = `'{snip} ${newLine}`;\n }\n if (end < ll) {\n newLine += ' {snip}';\n }\n\n return newLine;\n}\n\n/**\n * Join values in array\n * @param input array of values to be joined together\n * @param delimiter string to be placed in-between values\n * @returns Joined values\n */\nexport function safeJoin(input: any[], delimiter?: string): string {\n if (!Array.isArray(input)) {\n return '';\n }\n\n const output = [];\n // tslint:disable-next-line:prefer-for-of\n for (let i = 0; i < input.length; i++) {\n const value = input[i];\n try {\n output.push(String(value));\n } catch (e) {\n output.push('[value cannot be serialized]');\n }\n }\n\n return output.join(delimiter);\n}\n\n/**\n * Checks if the value matches a regex or includes the string\n * @param value The string value to be checked against\n * @param pattern Either a regex or a string that must be contained in value\n */\nexport function isMatchingPattern(value: string, pattern: RegExp | string): boolean {\n if (!isString(value)) {\n return false;\n }\n\n if (isRegExp(pattern)) {\n return (pattern as RegExp).test(value);\n }\n if (typeof pattern === 'string') {\n return value.indexOf(pattern) !== -1;\n }\n return false;\n}\n","import style from './Footer.less';\nimport { Component } from 'preact';\n\nexport default function(props) {\n\treturn (\n\t\t
\n\t\t\t© {new Date().getFullYear()}\n\t\t\t - \n\t\t\tStefano Pigozzi\n\t\t\t - \n\t\t\tCC BY-SA 4.0\n\t\t\t - \n\t\t\tCodice sorgente\n\t\t\t - \n\t\t\tSupportami\n\t\t
\n\t);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\tnewVNode._children = newVNode.props.children;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (!newHtml) {\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\tnewProps.value !== undefined &&\n\t\t\t\tnewProps.value !== dom.value\n\t\t\t) {\n\t\t\t\tdom.value = newProps.value == null ? '' : newProps.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\tnewProps.checked !== undefined &&\n\t\t\t\tnewProps.checked !== dom.checked\n\t\t\t) {\n\t\t\t\tdom.checked = newProps.checked;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\treturn createVNode(\n\t\tvnode.type,\n\t\tprops,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\treturn context;\n}\n","export const ELEMENT_NODE = 1;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\tif (process.env.RHL) {\n\t\t// enable hot loader\n\t\tconst hotLoader = interopDefault(require('react-hot-loader'));\n\t\thotLoader.preact(interopDefault(require('preact')));\n\t}\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(inlineDataElement.innerHTML).preRenderData || preRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === location.pathname;\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","import { ExtendedError, WrappedFunction } from '@sentry/types';\n\nimport { isElement, isError, isEvent, isInstanceOf, isPlainObject, isPrimitive, isSyntheticEvent } from './is';\nimport { Memo } from './memo';\nimport { getFunctionName, htmlTreeAsString } from './misc';\nimport { truncate } from './string';\n\n/**\n * Wrap a given object method with a higher-order function\n *\n * @param source An object that contains a method to be wrapped.\n * @param name A name of method to be wrapped.\n * @param replacement A function that should be used to wrap a given method.\n * @returns void\n */\nexport function fill(source: { [key: string]: any }, name: string, replacement: (...args: any[]) => any): void {\n if (!(name in source)) {\n return;\n }\n\n const original = source[name] as () => any;\n const wrapped = replacement(original) as WrappedFunction;\n\n // Make sure it's a function first, as we need to attach an empty prototype for `defineProperties` to work\n // otherwise it'll throw \"TypeError: Object.defineProperties called on non-object\"\n // tslint:disable-next-line:strict-type-predicates\n if (typeof wrapped === 'function') {\n try {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __sentry_original__: {\n enumerable: false,\n value: original,\n },\n });\n } catch (_Oo) {\n // This can throw if multiple fill happens on a global object like XMLHttpRequest\n // Fixes https://github.com/getsentry/sentry-javascript/issues/2043\n }\n }\n\n source[name] = wrapped;\n}\n\n/**\n * Encodes given object into url-friendly format\n *\n * @param object An object that contains serializable values\n * @returns string Encoded\n */\nexport function urlEncode(object: { [key: string]: any }): string {\n return Object.keys(object)\n .map(\n // tslint:disable-next-line:no-unsafe-any\n key => `${encodeURIComponent(key)}=${encodeURIComponent(object[key])}`,\n )\n .join('&');\n}\n\n/**\n * Transforms any object into an object literal with all it's attributes\n * attached to it.\n *\n * @param value Initial source that we have to transform in order to be usable by the serializer\n */\nfunction getWalkSource(\n value: any,\n): {\n [key: string]: any;\n} {\n if (isError(value)) {\n const error = value as ExtendedError;\n const err: {\n stack: string | undefined;\n message: string;\n name: string;\n [key: string]: any;\n } = {\n message: error.message,\n name: error.name,\n stack: error.stack,\n };\n\n for (const i in error) {\n if (Object.prototype.hasOwnProperty.call(error, i)) {\n err[i] = error[i];\n }\n }\n\n return err;\n }\n\n if (isEvent(value)) {\n /**\n * Event-like interface that's usable in browser and node\n */\n interface SimpleEvent {\n [key: string]: unknown;\n type: string;\n target?: unknown;\n currentTarget?: unknown;\n }\n\n const event = value as SimpleEvent;\n\n const source: {\n [key: string]: any;\n } = {};\n\n source.type = event.type;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n source.target = isElement(event.target)\n ? htmlTreeAsString(event.target)\n : Object.prototype.toString.call(event.target);\n } catch (_oO) {\n source.target = '';\n }\n\n try {\n source.currentTarget = isElement(event.currentTarget)\n ? htmlTreeAsString(event.currentTarget)\n : Object.prototype.toString.call(event.currentTarget);\n } catch (_oO) {\n source.currentTarget = '';\n }\n\n // tslint:disable-next-line:strict-type-predicates\n if (typeof CustomEvent !== 'undefined' && isInstanceOf(value, CustomEvent)) {\n source.detail = event.detail;\n }\n\n for (const i in event) {\n if (Object.prototype.hasOwnProperty.call(event, i)) {\n source[i] = event;\n }\n }\n\n return source;\n }\n\n return value as {\n [key: string]: any;\n };\n}\n\n/** Calculates bytes size of input string */\nfunction utf8Length(value: string): number {\n // tslint:disable-next-line:no-bitwise\n return ~-encodeURI(value).split(/%..|./).length;\n}\n\n/** Calculates bytes size of input object */\nfunction jsonSize(value: any): number {\n return utf8Length(JSON.stringify(value));\n}\n\n/** JSDoc */\nexport function normalizeToSize(\n object: { [key: string]: any },\n // Default Node.js REPL depth\n depth: number = 3,\n // 100kB, as 200kB is max payload size, so half sounds reasonable\n maxSize: number = 100 * 1024,\n): T {\n const serialized = normalize(object, depth);\n\n if (jsonSize(serialized) > maxSize) {\n return normalizeToSize(object, depth - 1, maxSize);\n }\n\n return serialized as T;\n}\n\n/** Transforms any input value into a string form, either primitive value or a type of the input */\nfunction serializeValue(value: any): any {\n const type = Object.prototype.toString.call(value);\n\n // Node.js REPL notation\n if (typeof value === 'string') {\n return value;\n }\n if (type === '[object Object]') {\n return '[Object]';\n }\n if (type === '[object Array]') {\n return '[Array]';\n }\n\n const normalized = normalizeValue(value);\n return isPrimitive(normalized) ? normalized : type;\n}\n\n/**\n * normalizeValue()\n *\n * Takes unserializable input and make it serializable friendly\n *\n * - translates undefined/NaN values to \"[undefined]\"/\"[NaN]\" respectively,\n * - serializes Error objects\n * - filter global objects\n */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction normalizeValue(value: T, key?: any): T | string {\n if (key === 'domain' && value && typeof value === 'object' && ((value as unknown) as { _events: any })._events) {\n return '[Domain]';\n }\n\n if (key === 'domainEmitter') {\n return '[DomainEmitter]';\n }\n\n if (typeof (global as any) !== 'undefined' && (value as unknown) === global) {\n return '[Global]';\n }\n\n if (typeof (window as any) !== 'undefined' && (value as unknown) === window) {\n return '[Window]';\n }\n\n if (typeof (document as any) !== 'undefined' && (value as unknown) === document) {\n return '[Document]';\n }\n\n // React's SyntheticEvent thingy\n if (isSyntheticEvent(value)) {\n return '[SyntheticEvent]';\n }\n\n // tslint:disable-next-line:no-tautology-expression\n if (typeof value === 'number' && value !== value) {\n return '[NaN]';\n }\n\n if (value === void 0) {\n return '[undefined]';\n }\n\n if (typeof value === 'function') {\n return `[Function: ${getFunctionName(value)}]`;\n }\n\n return value;\n}\n\n/**\n * Walks an object to perform a normalization on it\n *\n * @param key of object that's walked in current iteration\n * @param value object to be walked\n * @param depth Optional number indicating how deep should walking be performed\n * @param memo Optional Memo class handling decycling\n */\nexport function walk(key: string, value: any, depth: number = +Infinity, memo: Memo = new Memo()): any {\n // If we reach the maximum depth, serialize whatever has left\n if (depth === 0) {\n return serializeValue(value);\n }\n\n // If value implements `toJSON` method, call it and return early\n // tslint:disable:no-unsafe-any\n if (value !== null && value !== undefined && typeof value.toJSON === 'function') {\n return value.toJSON();\n }\n // tslint:enable:no-unsafe-any\n\n // If normalized value is a primitive, there are no branches left to walk, so we can just bail out, as theres no point in going down that branch any further\n const normalized = normalizeValue(value, key);\n if (isPrimitive(normalized)) {\n return normalized;\n }\n\n // Create source that we will use for next itterations, either objectified error object (Error type with extracted keys:value pairs) or the input itself\n const source = getWalkSource(value);\n\n // Create an accumulator that will act as a parent for all future itterations of that branch\n const acc = Array.isArray(value) ? [] : {};\n\n // If we already walked that branch, bail out, as it's circular reference\n if (memo.memoize(value)) {\n return '[Circular ~]';\n }\n\n // Walk all keys of the source\n for (const innerKey in source) {\n // Avoid iterating over fields in the prototype if they've somehow been exposed to enumeration.\n if (!Object.prototype.hasOwnProperty.call(source, innerKey)) {\n continue;\n }\n // Recursively walk through all the child nodes\n (acc as { [key: string]: any })[innerKey] = walk(innerKey, source[innerKey], depth - 1, memo);\n }\n\n // Once walked through all the branches, remove the parent from memo storage\n memo.unmemoize(value);\n\n // Return accumulated values\n return acc;\n}\n\n/**\n * normalize()\n *\n * - Creates a copy to prevent original input mutation\n * - Skip non-enumerablers\n * - Calls `toJSON` if implemented\n * - Removes circular references\n * - Translates non-serializeable values (undefined/NaN/Functions) to serializable format\n * - Translates known global objects/Classes to a string representations\n * - Takes care of Error objects serialization\n * - Optionally limit depth of final output\n */\nexport function normalize(input: any, depth?: number): any {\n try {\n // tslint:disable-next-line:no-unsafe-any\n return JSON.parse(JSON.stringify(input, (key: string, value: any) => walk(key, value, depth)));\n } catch (_oO) {\n return '**non-serializable**';\n }\n}\n\n/**\n * Given any captured exception, extract its keys and create a sorted\n * and truncated list that will be used inside the event message.\n * eg. `Non-error exception captured with keys: foo, bar, baz`\n */\nexport function extractExceptionKeysForMessage(exception: any, maxLength: number = 40): string {\n // tslint:disable:strict-type-predicates\n const keys = Object.keys(getWalkSource(exception));\n keys.sort();\n\n if (!keys.length) {\n return '[object has no keys]';\n }\n\n if (keys[0].length >= maxLength) {\n return truncate(keys[0], maxLength);\n }\n\n for (let includedKeys = keys.length; includedKeys > 0; includedKeys--) {\n const serialized = keys.slice(0, includedKeys).join(', ');\n if (serialized.length > maxLength) {\n continue;\n }\n if (includedKeys === keys.length) {\n return serialized;\n }\n return truncate(serialized, maxLength);\n }\n\n return '';\n}\n\n/**\n * Given any object, return the new object with removed keys that value was `undefined`.\n * Works recursively on objects and arrays.\n */\nexport function dropUndefinedKeys(val: T): T {\n if (isPlainObject(val)) {\n const obj = val as { [key: string]: any };\n const rv: { [key: string]: any } = {};\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] !== 'undefined') {\n rv[key] = dropUndefinedKeys(obj[key]);\n }\n }\n return rv as T;\n }\n\n if (Array.isArray(val)) {\n return val.map(dropUndefinedKeys) as any;\n }\n\n return val;\n}\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nlet loggedTypeFailures = {};\n\n/**\n * Reset the history of which prop type warnings have been logged.\n */\nexport function resetPropWarnings() {\n\tloggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * Adapted from https://github.com/facebook/prop-types/blob/master/checkPropTypes.js\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n */\nexport function checkPropTypes(\n\ttypeSpecs,\n\tvalues,\n\tlocation,\n\tcomponentName,\n\tgetStack\n) {\n\tObject.keys(typeSpecs).forEach(typeSpecName => {\n\t\tlet error;\n\t\ttry {\n\t\t\terror = typeSpecs[typeSpecName](\n\t\t\t\tvalues,\n\t\t\t\ttypeSpecName,\n\t\t\t\tcomponentName,\n\t\t\t\tlocation,\n\t\t\t\tnull,\n\t\t\t\tReactPropTypesSecret\n\t\t\t);\n\t\t} catch (e) {\n\t\t\terror = e;\n\t\t}\n\t\tif (error && !(error.message in loggedTypeFailures)) {\n\t\t\tloggedTypeFailures[error.message] = true;\n\t\t\tconsole.error(\n\t\t\t\t`Failed ${location} type: ${error.message}${(getStack && getStack()) ||\n\t\t\t\t\t''}`\n\t\t\t);\n\t\t}\n\t});\n}\n","import { options, Fragment } from 'preact';\n\n/**\n * Get human readable name of the component/dom node\n * @param {import('./internal').VNode} vnode\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getDisplayName(vnode) {\n\tif (vnode.type === Fragment) {\n\t\treturn 'Fragment';\n\t} else if (typeof vnode.type == 'function') {\n\t\treturn vnode.type.displayName || vnode.type.name;\n\t} else if (typeof vnode.type == 'string') {\n\t\treturn vnode.type;\n\t}\n\n\treturn '#text';\n}\n\n/**\n * Used to keep track of the currently rendered `vnode` and print it\n * in debug messages.\n */\nlet renderStack = [];\n\n/**\n * Keep track of the current owners. An owner describes a component\n * which was responsible to render a specific `vnode`. This exclude\n * children that are passed via `props.children`, because they belong\n * to the parent owner.\n *\n * ```jsx\n * const Foo = props =>
{props.children}
// div's owner is Foo\n * const Bar = props => {\n * return (\n * // Foo's owner is Bar, span's owner is Bar\n * )\n * }\n * ```\n *\n * Note: A `vnode` may be hoisted to the root scope due to compiler\n * optimiztions. In these cases the `_owner` will be different.\n */\nlet ownerStack = [];\n\n/**\n * Get the currently rendered `vnode`\n * @returns {import('./internal').VNode | null}\n */\nexport function getCurrentVNode() {\n\treturn renderStack.length > 0 ? renderStack[renderStack.length - 1] : null;\n}\n\n/**\n * If the user doesn't have `@babel/plugin-transform-react-jsx-source`\n * somewhere in his tool chain we can't print the filename and source\n * location of a component. In that case we just omit that, but we'll\n * print a helpful message to the console, notifying the user of it.\n */\nlet hasBabelPlugin = false;\n\n/**\n * Check if a `vnode` is a possible owner.\n * @param {import('./internal').VNode} vnode\n */\nfunction isPossibleOwner(vnode) {\n\treturn typeof vnode.type == 'function' && vnode.type != Fragment;\n}\n\n/**\n * Return the component stack that was captured up to this point.\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getOwnerStack(vnode) {\n\tconst stack = [vnode];\n\tlet next = vnode;\n\twhile (next._owner != null) {\n\t\tstack.push(next._owner);\n\t\tnext = next._owner;\n\t}\n\n\treturn stack.reduce((acc, owner) => {\n\t\tacc += ` in ${getDisplayName(owner)}`;\n\n\t\tconst source = owner.__source;\n\t\tif (source) {\n\t\t\tacc += ` (at ${source.fileName}:${source.lineNumber})`;\n\t\t} else if (!hasBabelPlugin) {\n\t\t\thasBabelPlugin = true;\n\t\t\tconsole.warn(\n\t\t\t\t'Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.'\n\t\t\t);\n\t\t}\n\n\t\treturn (acc += '\\n');\n\t}, '');\n}\n\n/**\n * Setup code to capture the component trace while rendering. Note that\n * we cannot simply traverse `vnode._parent` upwards, because we have some\n * debug messages for `this.setState` where the `vnode` is `undefined`.\n */\nexport function setupComponentStack() {\n\tlet oldDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldRoot = options._root;\n\tlet oldVNode = options.vnode;\n\tlet oldRender = options._render;\n\n\toptions.diffed = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.pop();\n\t\t}\n\t\trenderStack.pop();\n\t\tif (oldDiffed) oldDiffed(vnode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\trenderStack.push(vnode);\n\t\t}\n\t\tif (oldDiff) oldDiff(vnode);\n\t};\n\n\toptions._root = (vnode, parent) => {\n\t\townerStack = [];\n\t\tif (oldRoot) oldRoot(vnode, parent);\n\t};\n\n\toptions.vnode = vnode => {\n\t\tvnode._owner =\n\t\t\townerStack.length > 0 ? ownerStack[ownerStack.length - 1] : null;\n\t\tif (oldVNode) oldVNode(vnode);\n\t};\n\n\toptions._render = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.push(vnode);\n\t\t}\n\n\t\tif (oldRender) oldRender(vnode);\n\t};\n}\n","import { checkPropTypes } from './check-props';\nimport { options, Component } from 'preact';\nimport {\n\tELEMENT_NODE,\n\tDOCUMENT_NODE,\n\tDOCUMENT_FRAGMENT_NODE\n} from './constants';\nimport {\n\tgetOwnerStack,\n\tsetupComponentStack,\n\tgetCurrentVNode,\n\tgetDisplayName\n} from './component-stack';\n\nconst isWeakMapSupported = typeof WeakMap == 'function';\n\nfunction getClosestDomNodeParent(parent) {\n\tif (!parent) return {};\n\tif (typeof parent.type == 'function') {\n\t\treturn getClosestDomNodeParent(parent._parent);\n\t}\n\treturn parent;\n}\n\nexport function initDebug() {\n\tsetupComponentStack();\n\n\t/* eslint-disable no-console */\n\tlet oldBeforeDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldVnode = options.vnode;\n\tlet oldCatchError = options._catchError;\n\tlet oldRoot = options._root;\n\tlet oldHook = options._hook;\n\tconst warnedComponents = !isWeakMapSupported\n\t\t? null\n\t\t: {\n\t\t\t\tuseEffect: new WeakMap(),\n\t\t\t\tuseLayoutEffect: new WeakMap(),\n\t\t\t\tlazyPropTypes: new WeakMap()\n\t\t };\n\n\toptions._catchError = (error, vnode, oldVNode) => {\n\t\tlet component = vnode && vnode._component;\n\t\tif (component && typeof error.then == 'function') {\n\t\t\tconst promise = error;\n\t\t\terror = new Error(\n\t\t\t\t`Missing Suspense. The throwing component was: ${getDisplayName(vnode)}`\n\t\t\t);\n\n\t\t\tlet parent = vnode;\n\t\t\tfor (; parent; parent = parent._parent) {\n\t\t\t\tif (parent._component && parent._component._childDidSuspend) {\n\t\t\t\t\terror = promise;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We haven't recovered and we know at this point that there is no\n\t\t\t// Suspense component higher up in the tree\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\toldCatchError(error, vnode, oldVNode);\n\t};\n\n\toptions._root = (vnode, parentNode) => {\n\t\tif (!parentNode) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined parent passed to render(), this is the second argument.\\n' +\n\t\t\t\t\t'Check if the element is available in the DOM/has the correct id.'\n\t\t\t);\n\t\t}\n\t\tlet isValid;\n\t\tswitch (parentNode.nodeType) {\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\tcase DOCUMENT_NODE:\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tisValid = false;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\tthrow new Error(\n\t\t\t\t`Expected a valid HTML node as a second argument to render.\tReceived ${parentNode} instead: render(<${componentName} />, ${parentNode});`\n\t\t\t);\n\t\t}\n\n\t\tif (oldRoot) oldRoot(vnode, parentNode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tlet { type, _parent: parent } = vnode;\n\t\tlet parentVNode = getClosestDomNodeParent(parent);\n\n\t\tif (type === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined component passed to createElement()\\n\\n' +\n\t\t\t\t\t'You likely forgot to export your component or might have mixed up default and named imports' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type != null && typeof type == 'object') {\n\t\t\tif (type._children !== undefined && type._dom !== undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid type passed to createElement(): ${type}\\n\\n` +\n\t\t\t\t\t\t'Did you accidentally pass a JSX literal as JSX twice?\\n\\n' +\n\t\t\t\t\t\t` let My${getDisplayName(vnode)} = ${serializeVNode(type)};\\n` +\n\t\t\t\t\t\t` let vnode = ;\\n\\n` +\n\t\t\t\t\t\t'This usually happens when you export a JSX literal and not the component.' +\n\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t'Invalid type passed to createElement(): ' +\n\t\t\t\t\t(Array.isArray(type) ? 'array' : type)\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\t(type === 'thead' || type === 'tfoot' || type === 'tbody') &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your
should have a
parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (\n\t\t\ttype === 'tr' &&\n\t\t\tparentVNode.type !== 'thead' &&\n\t\t\tparentVNode.type !== 'tfoot' &&\n\t\t\tparentVNode.type !== 'tbody' &&\n\t\t\tparentVNode.type !== 'table'\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your should have a parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'td' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your parent.' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type === 'th' && parentVNode.type !== 'tr') {\n\t\t\tconsole.error(\n\t\t\t\t'Improper nesting of table. Your .' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\tvnode.ref !== undefined &&\n\t\t\ttypeof vnode.ref != 'function' &&\n\t\t\ttypeof vnode.ref != 'object' &&\n\t\t\t!('$$typeof' in vnode) // allow string refs when preact-compat is installed\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`Component's \"ref\" property should be a function, or an object created ` +\n\t\t\t\t\t`by createRef(), but got [${typeof vnode.ref}] instead\\n` +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (typeof vnode.type == 'string') {\n\t\t\tfor (const key in vnode.props) {\n\t\t\t\tif (\n\t\t\t\t\tkey[0] === 'o' &&\n\t\t\t\t\tkey[1] === 'n' &&\n\t\t\t\t\ttypeof vnode.props[key] != 'function' &&\n\t\t\t\t\tvnode.props[key] != null\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Component's \"${key}\" property should be a function, ` +\n\t\t\t\t\t\t\t`but got [${typeof vnode.props[key]}] instead\\n` +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check prop-types if available\n\t\tif (typeof vnode.type == 'function' && vnode.type.propTypes) {\n\t\t\tif (\n\t\t\t\tvnode.type.displayName === 'Lazy' &&\n\t\t\t\twarnedComponents &&\n\t\t\t\t!warnedComponents.lazyPropTypes.has(vnode.type)\n\t\t\t) {\n\t\t\t\tconst m =\n\t\t\t\t\t'PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ';\n\t\t\t\ttry {\n\t\t\t\t\tconst lazyVNode = vnode.type();\n\t\t\t\t\twarnedComponents.lazyPropTypes.set(vnode.type, true);\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + `Component wrapped in lazy() is ${getDisplayName(lazyVNode)}`\n\t\t\t\t\t);\n\t\t\t\t} catch (promise) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + \"We will log the wrapped component's name once it is loaded.\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tcheckPropTypes(\n\t\t\t\tvnode.type.propTypes,\n\t\t\t\tvnode.props,\n\t\t\t\t'prop',\n\t\t\t\tgetDisplayName(vnode)\n\t\t\t);\n\t\t}\n\n\t\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n\t};\n\n\toptions._hook = comp => {\n\t\tif (!comp) {\n\t\t\tthrow new Error('Hook can only be invoked from render methods.');\n\t\t}\n\n\t\tif (oldHook) oldHook(comp);\n\t};\n\n\tconst warn = (property, err) => ({\n\t\tget() {\n\t\t\tthrow new Error(`getting vnode.${property} is deprecated, ${err}`);\n\t\t},\n\t\tset() {\n\t\t\tthrow new Error(`setting vnode.${property} is not allowed, ${err}`);\n\t\t}\n\t});\n\n\tconst deprecatedAttributes = {\n\t\tnodeName: warn('nodeName', 'use vnode.type'),\n\t\tattributes: warn('attributes', 'use vnode.props'),\n\t\tchildren: warn('children', 'use vnode.props.children')\n\t};\n\n\tconst deprecatedProto = Object.create({}, deprecatedAttributes);\n\n\toptions.vnode = vnode => {\n\t\tconst props = vnode.props;\n\t\tif (\n\t\t\tvnode.type !== null &&\n\t\t\tprops != null &&\n\t\t\t('__source' in props || '__self' in props)\n\t\t) {\n\t\t\tconst newProps = (vnode.props = {});\n\t\t\tfor (let i in props) {\n\t\t\t\tconst v = props[i];\n\t\t\t\tif (i === '__source') vnode.__source = v;\n\t\t\t\telse if (i === '__self') vnode.__self = v;\n\t\t\t\telse newProps[i] = v;\n\t\t\t}\n\t\t}\n\t\tObject.setPrototypeOf(vnode, deprecatedProto);\n\t\tif (oldVnode) oldVnode(vnode);\n\t};\n\n\toptions.diffed = vnode => {\n\t\t// Check if the user passed plain objects as children. Note that we cannot\n\t\t// move this check into `options.vnode` because components can receive\n\t\t// children in any shape they want (e.g.\n\t\t// `{{ foo: 123, bar: \"abc\" }}`).\n\t\t// Putting this check in `options.diffed` ensures that\n\t\t// `vnode._children` is set and that we only validate the children\n\t\t// that were actually rendered.\n\t\tif (vnode._children) {\n\t\t\tvnode._children.forEach(child => {\n\t\t\t\tif (child && child.type === undefined) {\n\t\t\t\t\t// Remove internal vnode keys that will always be patched\n\t\t\t\t\tdelete child._parent;\n\t\t\t\t\tdelete child._depth;\n\t\t\t\t\tconst keys = Object.keys(child).join(',');\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Objects are not valid as a child. Encountered an object with the keys {${keys}}.` +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t/** @type {import('./internal').Component} */\n\t\tconst component = vnode._component;\n\t\tif (component && component.__hooks) {\n\t\t\tlet hooks = component.__hooks;\n\t\t\tif (Array.isArray(hooks._list)) {\n\t\t\t\thooks._list.forEach(hook => {\n\t\t\t\t\tif (hook._factory && (!hook._args || !Array.isArray(hook._args))) {\n\t\t\t\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t`In ${componentName} you are calling useMemo/useCallback without passing arguments.\\n` +\n\t\t\t\t\t\t\t\t`This is a noop since it will not be able to memoize, it will execute it every render.` +\n\t\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (oldDiffed) oldDiffed(vnode);\n\n\t\tif (vnode._children != null) {\n\t\t\tconst keys = [];\n\t\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\t\tconst child = vnode._children[i];\n\t\t\t\tif (!child || child.key == null) continue;\n\n\t\t\t\tconst key = child.key;\n\t\t\t\tif (keys.indexOf(key) !== -1) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Following component has two or more children with the ' +\n\t\t\t\t\t\t\t`same key attribute: \"${key}\". This may cause glitches and misbehavior ` +\n\t\t\t\t\t\t\t'in rendering process. Component: \\n\\n' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\n\t\t\t\t\t// Break early to not spam the console\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tkeys.push(key);\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst setState = Component.prototype.setState;\nComponent.prototype.setState = function(update, callback) {\n\tif (this._vnode == null) {\n\t\t// `this._vnode` will be `null` during componentWillMount. But it\n\t\t// is perfectly valid to call `setState` during cWM. So we\n\t\t// need an additional check to verify that we are dealing with a\n\t\t// call inside constructor.\n\t\tif (this.state == null) {\n\t\t\tconsole.warn(\n\t\t\t\t`Calling \"this.setState\" inside the constructor of a component is a ` +\n\t\t\t\t\t`no-op and might be a bug in your application. Instead, set ` +\n\t\t\t\t\t`\"this.state = {}\" directly.\\n\\n${getOwnerStack(getCurrentVNode())}`\n\t\t\t);\n\t\t}\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.setState\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\n\treturn setState.call(this, update, callback);\n};\n\nconst forceUpdate = Component.prototype.forceUpdate;\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode == null) {\n\t\tconsole.warn(\n\t\t\t`Calling \"this.forceUpdate\" inside the constructor of a component is a ` +\n\t\t\t\t`no-op and might be a bug in your application.\\n\\n${getOwnerStack(\n\t\t\t\t\tgetCurrentVNode()\n\t\t\t\t)}`\n\t\t);\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.forceUpdate\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\treturn forceUpdate.call(this, callback);\n};\n\n/**\n * Serialize a vnode tree to a string\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function serializeVNode(vnode) {\n\tlet { props } = vnode;\n\tlet name = getDisplayName(vnode);\n\n\tlet attrs = '';\n\tfor (let prop in props) {\n\t\tif (props.hasOwnProperty(prop) && prop !== 'children') {\n\t\t\tlet value = props[prop];\n\n\t\t\t// If it is an object but doesn't have toString(), use Object.toString\n\t\t\tif (typeof value == 'function') {\n\t\t\t\tvalue = `function ${value.displayName || value.name}() {}`;\n\t\t\t}\n\n\t\t\tvalue =\n\t\t\t\tObject(value) === value && !value.toString\n\t\t\t\t\t? Object.prototype.toString.call(value)\n\t\t\t\t\t: value + '';\n\n\t\t\tattrs += ` ${prop}=${JSON.stringify(value)}`;\n\t\t}\n\t}\n\n\tlet children = props.children;\n\treturn `<${name}${attrs}${\n\t\tchildren && children.length ? '>..' : ' />'\n\t}`;\n}\n","import { options, Fragment } from 'preact';\n\nexport function initDevTools() {\n\tif (typeof window != 'undefined' && window.__PREACT_DEVTOOLS__) {\n\t\twindow.__PREACT_DEVTOOLS__.attachPreact('10.0.5', options, {\n\t\t\tFragment\n\t\t});\n\t}\n}\n","import {\n Breadcrumb,\n Event,\n EventHint,\n EventProcessor,\n Scope as ScopeInterface,\n Severity,\n Span,\n User,\n} from '@sentry/types';\nimport { getGlobalObject, isThenable, SyncPromise, timestampWithMs } from '@sentry/utils';\n\n/**\n * Holds additional event information. {@link Scope.applyToEvent} will be\n * called by the client before an event will be sent.\n */\nexport class Scope implements ScopeInterface {\n /** Flag if notifiying is happening. */\n protected _notifyingListeners: boolean = false;\n\n /** Callback for client to receive scope changes. */\n protected _scopeListeners: Array<(scope: Scope) => void> = [];\n\n /** Callback list that will be called after {@link applyToEvent}. */\n protected _eventProcessors: EventProcessor[] = [];\n\n /** Array of breadcrumbs. */\n protected _breadcrumbs: Breadcrumb[] = [];\n\n /** User */\n protected _user: User = {};\n\n /** Tags */\n protected _tags: { [key: string]: string } = {};\n\n /** Extra */\n protected _extra: { [key: string]: any } = {};\n\n /** Contexts */\n protected _context: { [key: string]: any } = {};\n\n /** Fingerprint */\n protected _fingerprint?: string[];\n\n /** Severity */\n protected _level?: Severity;\n\n /** Transaction */\n protected _transaction?: string;\n\n /** Span */\n protected _span?: Span;\n\n /**\n * Add internal on change listener. Used for sub SDKs that need to store the scope.\n * @hidden\n */\n public addScopeListener(callback: (scope: Scope) => void): void {\n this._scopeListeners.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n public addEventProcessor(callback: EventProcessor): this {\n this._eventProcessors.push(callback);\n return this;\n }\n\n /**\n * This will be called on every set call.\n */\n protected _notifyScopeListeners(): void {\n if (!this._notifyingListeners) {\n this._notifyingListeners = true;\n setTimeout(() => {\n this._scopeListeners.forEach(callback => {\n callback(this);\n });\n this._notifyingListeners = false;\n });\n }\n }\n\n /**\n * This will be called after {@link applyToEvent} is finished.\n */\n protected _notifyEventProcessors(\n processors: EventProcessor[],\n event: Event | null,\n hint?: EventHint,\n index: number = 0,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n const processor = processors[index];\n // tslint:disable-next-line:strict-type-predicates\n if (event === null || typeof processor !== 'function') {\n resolve(event);\n } else {\n const result = processor({ ...event }, hint) as Event | null;\n if (isThenable(result)) {\n (result as PromiseLike)\n .then(final => this._notifyEventProcessors(processors, final, hint, index + 1).then(resolve))\n .then(null, reject);\n } else {\n this._notifyEventProcessors(processors, result, hint, index + 1)\n .then(resolve)\n .then(null, reject);\n }\n }\n });\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): this {\n this._user = user || {};\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: string }): this {\n this._tags = {\n ...this._tags,\n ...tags,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: string): this {\n this._tags = { ...this._tags, [key]: value };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: { [key: string]: any }): this {\n this._extra = {\n ...this._extra,\n ...extras,\n };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: any): this {\n this._extra = { ...this._extra, [key]: extra };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setFingerprint(fingerprint: string[]): this {\n this._fingerprint = fingerprint;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setLevel(level: Severity): this {\n this._level = level;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setTransaction(transaction?: string): this {\n this._transaction = transaction;\n if (this._span) {\n (this._span as any).transaction = transaction;\n }\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setContext(key: string, context: { [key: string]: any } | null): this {\n this._context = { ...this._context, [key]: context };\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public setSpan(span?: Span): this {\n this._span = span;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Internal getter for Span, used in Hub.\n * @hidden\n */\n public getSpan(): Span | undefined {\n return this._span;\n }\n\n /**\n * Inherit values from the parent scope.\n * @param scope to clone.\n */\n public static clone(scope?: Scope): Scope {\n const newScope = new Scope();\n if (scope) {\n newScope._breadcrumbs = [...scope._breadcrumbs];\n newScope._tags = { ...scope._tags };\n newScope._extra = { ...scope._extra };\n newScope._context = { ...scope._context };\n newScope._user = scope._user;\n newScope._level = scope._level;\n newScope._span = scope._span;\n newScope._transaction = scope._transaction;\n newScope._fingerprint = scope._fingerprint;\n newScope._eventProcessors = [...scope._eventProcessors];\n }\n return newScope;\n }\n\n /**\n * @inheritDoc\n */\n public clear(): this {\n this._breadcrumbs = [];\n this._tags = {};\n this._extra = {};\n this._user = {};\n this._context = {};\n this._level = undefined;\n this._transaction = undefined;\n this._fingerprint = undefined;\n this._span = undefined;\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, maxBreadcrumbs?: number): this {\n const mergedBreadcrumb = {\n timestamp: timestampWithMs(),\n ...breadcrumb,\n };\n\n this._breadcrumbs =\n maxBreadcrumbs !== undefined && maxBreadcrumbs >= 0\n ? [...this._breadcrumbs, mergedBreadcrumb].slice(-maxBreadcrumbs)\n : [...this._breadcrumbs, mergedBreadcrumb];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * @inheritDoc\n */\n public clearBreadcrumbs(): this {\n this._breadcrumbs = [];\n this._notifyScopeListeners();\n return this;\n }\n\n /**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\n private _applyFingerprint(event: Event): void {\n // Make sure it's an array first and we actually have something in place\n event.fingerprint = event.fingerprint\n ? Array.isArray(event.fingerprint)\n ? event.fingerprint\n : [event.fingerprint]\n : [];\n\n // If we have something on the scope, then merge it with event\n if (this._fingerprint) {\n event.fingerprint = event.fingerprint.concat(this._fingerprint);\n }\n\n // If we have no data at all, remove empty array default\n if (event.fingerprint && !event.fingerprint.length) {\n delete event.fingerprint;\n }\n }\n\n /**\n * Applies the current context and fingerprint to the event.\n * Note that breadcrumbs will be added by the client.\n * Also if the event has already breadcrumbs on it, we do not merge them.\n * @param event Event\n * @param hint May contain additional informartion about the original exception.\n * @hidden\n */\n public applyToEvent(event: Event, hint?: EventHint): PromiseLike {\n if (this._extra && Object.keys(this._extra).length) {\n event.extra = { ...this._extra, ...event.extra };\n }\n if (this._tags && Object.keys(this._tags).length) {\n event.tags = { ...this._tags, ...event.tags };\n }\n if (this._user && Object.keys(this._user).length) {\n event.user = { ...this._user, ...event.user };\n }\n if (this._context && Object.keys(this._context).length) {\n event.contexts = { ...this._context, ...event.contexts };\n }\n if (this._level) {\n event.level = this._level;\n }\n if (this._transaction) {\n event.transaction = this._transaction;\n }\n if (this._span) {\n event.contexts = { trace: this._span.getTraceContext(), ...event.contexts };\n }\n\n this._applyFingerprint(event);\n\n event.breadcrumbs = [...(event.breadcrumbs || []), ...this._breadcrumbs];\n event.breadcrumbs = event.breadcrumbs.length > 0 ? event.breadcrumbs : undefined;\n\n return this._notifyEventProcessors([...getGlobalEventProcessors(), ...this._eventProcessors], event, hint);\n }\n}\n\n/**\n * Retruns the global event processors.\n */\nfunction getGlobalEventProcessors(): EventProcessor[] {\n const global = getGlobalObject();\n global.__SENTRY__ = global.__SENTRY__ || {};\n global.__SENTRY__.globalEventProcessors = global.__SENTRY__.globalEventProcessors || [];\n return global.__SENTRY__.globalEventProcessors;\n}\n\n/**\n * Add a EventProcessor to be kept globally.\n * @param callback EventProcessor to add\n */\nexport function addGlobalEventProcessor(callback: EventProcessor): void {\n getGlobalEventProcessors().push(callback);\n}\n","import {\n Breadcrumb,\n BreadcrumbHint,\n Client,\n Event,\n EventHint,\n Hub as HubInterface,\n Integration,\n IntegrationClass,\n Severity,\n Span,\n SpanContext,\n User,\n} from '@sentry/types';\nimport { consoleSandbox, getGlobalObject, isNodeEnv, logger, timestampWithMs, uuid4 } from '@sentry/utils';\n\nimport { Carrier, Layer } from './interfaces';\nimport { Scope } from './scope';\n\n/**\n * API compatibility version of this hub.\n *\n * WARNING: This number should only be incresed when the global interface\n * changes a and new methods are introduced.\n *\n * @hidden\n */\nexport const API_VERSION = 3;\n\n/**\n * Default maximum number of breadcrumbs added to an event. Can be overwritten\n * with {@link Options.maxBreadcrumbs}.\n */\nconst DEFAULT_BREADCRUMBS = 100;\n\n/**\n * Absolute maximum number of breadcrumbs added to an event. The\n * `maxBreadcrumbs` option cannot be higher than this value.\n */\nconst MAX_BREADCRUMBS = 100;\n\n/**\n * @inheritDoc\n */\nexport class Hub implements HubInterface {\n /** Is a {@link Layer}[] containing the client and scope */\n private readonly _stack: Layer[] = [];\n\n /** Contains the last event id of a captured event. */\n private _lastEventId?: string;\n\n /**\n * Creates a new instance of the hub, will push one {@link Layer} into the\n * internal stack on creation.\n *\n * @param client bound to the hub.\n * @param scope bound to the hub.\n * @param version number, higher number means higher priority.\n */\n public constructor(client?: Client, scope: Scope = new Scope(), private readonly _version: number = API_VERSION) {\n this._stack.push({ client, scope });\n }\n\n /**\n * Internal helper function to call a method on the top client if it exists.\n *\n * @param method The method to call on the client.\n * @param args Arguments to pass to the client function.\n */\n private _invokeClient(method: M, ...args: any[]): void {\n const top = this.getStackTop();\n if (top && top.client && top.client[method]) {\n (top.client as any)[method](...args, top.scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public isOlderThan(version: number): boolean {\n return this._version < version;\n }\n\n /**\n * @inheritDoc\n */\n public bindClient(client?: Client): void {\n const top = this.getStackTop();\n top.client = client;\n if (client && client.setupIntegrations) {\n client.setupIntegrations();\n }\n }\n\n /**\n * @inheritDoc\n */\n public pushScope(): Scope {\n // We want to clone the content of prev scope\n const stack = this.getStack();\n const parentScope = stack.length > 0 ? stack[stack.length - 1].scope : undefined;\n const scope = Scope.clone(parentScope);\n this.getStack().push({\n client: this.getClient(),\n scope,\n });\n return scope;\n }\n\n /**\n * @inheritDoc\n */\n public popScope(): boolean {\n return this.getStack().pop() !== undefined;\n }\n\n /**\n * @inheritDoc\n */\n public withScope(callback: (scope: Scope) => void): void {\n const scope = this.pushScope();\n try {\n callback(scope);\n } finally {\n this.popScope();\n }\n }\n\n /**\n * @inheritDoc\n */\n public getClient(): C | undefined {\n return this.getStackTop().client as C;\n }\n\n /** Returns the scope of the top stack. */\n public getScope(): Scope | undefined {\n return this.getStackTop().scope;\n }\n\n /** Returns the scope stack for domains or the process. */\n public getStack(): Layer[] {\n return this._stack;\n }\n\n /** Returns the topmost scope layer in the order domain > local > process. */\n public getStackTop(): Layer {\n return this._stack[this._stack.length - 1];\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: any, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error('Sentry syntheticException');\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: exception,\n syntheticException,\n };\n }\n\n this._invokeClient('captureException', exception, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n let finalHint = hint;\n\n // If there's no explicit hint provided, mimick the same thing that would happen\n // in the minimal itself to create a consistent behavior.\n // We don't do this in the client, as it's the lowest level API, and doing this,\n // would prevent user from having full control over direct calls.\n if (!hint) {\n let syntheticException: Error;\n try {\n throw new Error(message);\n } catch (exception) {\n syntheticException = exception as Error;\n }\n finalHint = {\n originalException: message,\n syntheticException,\n };\n }\n\n this._invokeClient('captureMessage', message, level, {\n ...finalHint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint): string {\n const eventId = (this._lastEventId = uuid4());\n this._invokeClient('captureEvent', event, {\n ...hint,\n event_id: eventId,\n });\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public lastEventId(): string | undefined {\n return this._lastEventId;\n }\n\n /**\n * @inheritDoc\n */\n public addBreadcrumb(breadcrumb: Breadcrumb, hint?: BreadcrumbHint): void {\n const top = this.getStackTop();\n\n if (!top.scope || !top.client) {\n return;\n }\n\n const { beforeBreadcrumb = null, maxBreadcrumbs = DEFAULT_BREADCRUMBS } =\n (top.client.getOptions && top.client.getOptions()) || {};\n\n if (maxBreadcrumbs <= 0) {\n return;\n }\n\n const timestamp = timestampWithMs();\n const mergedBreadcrumb = { timestamp, ...breadcrumb };\n const finalBreadcrumb = beforeBreadcrumb\n ? (consoleSandbox(() => beforeBreadcrumb(mergedBreadcrumb, hint)) as Breadcrumb | null)\n : mergedBreadcrumb;\n\n if (finalBreadcrumb === null) {\n return;\n }\n\n top.scope.addBreadcrumb(finalBreadcrumb, Math.min(maxBreadcrumbs, MAX_BREADCRUMBS));\n }\n\n /**\n * @inheritDoc\n */\n public setUser(user: User | null): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setUser(user);\n }\n\n /**\n * @inheritDoc\n */\n public setTags(tags: { [key: string]: string }): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTags(tags);\n }\n\n /**\n * @inheritDoc\n */\n public setExtras(extras: { [key: string]: any }): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtras(extras);\n }\n\n /**\n * @inheritDoc\n */\n public setTag(key: string, value: string): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setTag(key, value);\n }\n\n /**\n * @inheritDoc\n */\n public setExtra(key: string, extra: any): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setExtra(key, extra);\n }\n\n /**\n * @inheritDoc\n */\n public setContext(name: string, context: { [key: string]: any } | null): void {\n const top = this.getStackTop();\n if (!top.scope) {\n return;\n }\n top.scope.setContext(name, context);\n }\n\n /**\n * @inheritDoc\n */\n public configureScope(callback: (scope: Scope) => void): void {\n const top = this.getStackTop();\n if (top.scope && top.client) {\n callback(top.scope);\n }\n }\n\n /**\n * @inheritDoc\n */\n public run(callback: (hub: Hub) => void): void {\n const oldHub = makeMain(this);\n try {\n callback(this);\n } finally {\n makeMain(oldHub);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n const client = this.getClient();\n if (!client) {\n return null;\n }\n try {\n return client.getIntegration(integration);\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Hub`);\n return null;\n }\n }\n\n /**\n * @inheritDoc\n */\n public startSpan(spanOrSpanContext?: Span | SpanContext, forceNoChild: boolean = false): Span {\n return this._callExtensionMethod('startSpan', spanOrSpanContext, forceNoChild);\n }\n\n /**\n * @inheritDoc\n */\n public traceHeaders(): { [key: string]: string } {\n return this._callExtensionMethod<{ [key: string]: string }>('traceHeaders');\n }\n\n /**\n * Calls global extension method and binding current instance to the function call\n */\n // @ts-ignore\n private _callExtensionMethod(method: string, ...args: any[]): T {\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n // tslint:disable-next-line: strict-type-predicates\n if (sentry && sentry.extensions && typeof sentry.extensions[method] === 'function') {\n return sentry.extensions[method].apply(this, args);\n }\n logger.warn(`Extension method ${method} couldn't be found, doing nothing.`);\n }\n}\n\n/** Returns the global shim registry. */\nexport function getMainCarrier(): Carrier {\n const carrier = getGlobalObject();\n carrier.__SENTRY__ = carrier.__SENTRY__ || {\n extensions: {},\n hub: undefined,\n };\n return carrier;\n}\n\n/**\n * Replaces the current main hub with the passed one on the global object\n *\n * @returns The old replaced hub\n */\nexport function makeMain(hub: Hub): Hub {\n const registry = getMainCarrier();\n const oldHub = getHubFromCarrier(registry);\n setHubOnCarrier(registry, hub);\n return oldHub;\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n */\nexport function getCurrentHub(): Hub {\n // Get main carrier (global for every environment)\n const registry = getMainCarrier();\n\n // If there's no hub, or its an old API, assign a new one\n if (!hasHubOnCarrier(registry) || getHubFromCarrier(registry).isOlderThan(API_VERSION)) {\n setHubOnCarrier(registry, new Hub());\n }\n\n // Prefer domains over global if they are there (applicable only to Node environment)\n if (isNodeEnv()) {\n return getHubFromActiveDomain(registry);\n }\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n}\n\n/**\n * Try to read the hub from an active domain, fallback to the registry if one doesnt exist\n * @returns discovered hub\n */\nfunction getHubFromActiveDomain(registry: Carrier): Hub {\n try {\n const property = 'domain';\n const carrier = getMainCarrier();\n const sentry = carrier.__SENTRY__;\n // tslint:disable-next-line: strict-type-predicates\n if (!sentry || !sentry.extensions || !sentry.extensions[property]) {\n return getHubFromCarrier(registry);\n }\n const domain = sentry.extensions[property] as any;\n const activeDomain = domain.active;\n\n // If there no active domain, just return global hub\n if (!activeDomain) {\n return getHubFromCarrier(registry);\n }\n\n // If there's no hub on current domain, or its an old API, assign a new one\n if (!hasHubOnCarrier(activeDomain) || getHubFromCarrier(activeDomain).isOlderThan(API_VERSION)) {\n const registryHubTopStack = getHubFromCarrier(registry).getStackTop();\n setHubOnCarrier(activeDomain, new Hub(registryHubTopStack.client, Scope.clone(registryHubTopStack.scope)));\n }\n\n // Return hub that lives on a domain\n return getHubFromCarrier(activeDomain);\n } catch (_Oo) {\n // Return hub that lives on a global object\n return getHubFromCarrier(registry);\n }\n}\n\n/**\n * This will tell whether a carrier has a hub on it or not\n * @param carrier object\n */\nfunction hasHubOnCarrier(carrier: Carrier): boolean {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return true;\n }\n return false;\n}\n\n/**\n * This will create a new {@link Hub} and add to the passed object on\n * __SENTRY__.hub.\n * @param carrier object\n * @hidden\n */\nexport function getHubFromCarrier(carrier: Carrier): Hub {\n if (carrier && carrier.__SENTRY__ && carrier.__SENTRY__.hub) {\n return carrier.__SENTRY__.hub;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = new Hub();\n return carrier.__SENTRY__.hub;\n}\n\n/**\n * This will set passed {@link Hub} on the passed object's __SENTRY__.hub attribute\n * @param carrier object\n * @param hub Hub\n */\nexport function setHubOnCarrier(carrier: Carrier, hub: Hub): boolean {\n if (!carrier) {\n return false;\n }\n carrier.__SENTRY__ = carrier.__SENTRY__ || {};\n carrier.__SENTRY__.hub = hub;\n return true;\n}\n","export * from './exports';\n\nimport { Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject } from '@sentry/utils';\n\nimport * as BrowserIntegrations from './integrations';\nimport * as Transports from './transports';\n\nlet windowIntegrations = {};\n\n// This block is needed to add compatibility with the integrations packages when used with a CDN\n// tslint:disable: no-unsafe-any\nconst _window = getGlobalObject();\nif (_window.Sentry && _window.Sentry.Integrations) {\n windowIntegrations = _window.Sentry.Integrations;\n}\n// tslint:enable: no-unsafe-any\n\nconst INTEGRATIONS = {\n ...windowIntegrations,\n ...CoreIntegrations,\n ...BrowserIntegrations,\n};\n\nexport { INTEGRATIONS as Integrations, Transports };\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Integration, Options } from '@sentry/types';\nimport { logger } from '@sentry/utils';\n\nexport const installedIntegrations: string[] = [];\n\n/** Map of integrations assigned to a client */\nexport interface IntegrationIndex {\n [key: string]: Integration;\n}\n\n/** Gets integration to install */\nexport function getIntegrationsToSetup(options: Options): Integration[] {\n const defaultIntegrations = (options.defaultIntegrations && [...options.defaultIntegrations]) || [];\n const userIntegrations = options.integrations;\n let integrations: Integration[] = [];\n if (Array.isArray(userIntegrations)) {\n const userIntegrationsNames = userIntegrations.map(i => i.name);\n const pickedIntegrationsNames: string[] = [];\n\n // Leave only unique default integrations, that were not overridden with provided user integrations\n defaultIntegrations.forEach(defaultIntegration => {\n if (\n userIntegrationsNames.indexOf(defaultIntegration.name) === -1 &&\n pickedIntegrationsNames.indexOf(defaultIntegration.name) === -1\n ) {\n integrations.push(defaultIntegration);\n pickedIntegrationsNames.push(defaultIntegration.name);\n }\n });\n\n // Don't add same user integration twice\n userIntegrations.forEach(userIntegration => {\n if (pickedIntegrationsNames.indexOf(userIntegration.name) === -1) {\n integrations.push(userIntegration);\n pickedIntegrationsNames.push(userIntegration.name);\n }\n });\n } else if (typeof userIntegrations === 'function') {\n integrations = userIntegrations(defaultIntegrations);\n integrations = Array.isArray(integrations) ? integrations : [integrations];\n } else {\n integrations = [...defaultIntegrations];\n }\n\n // Make sure that if present, `Debug` integration will always run last\n const integrationsNames = integrations.map(i => i.name);\n const alwaysLastToRun = 'Debug';\n if (integrationsNames.indexOf(alwaysLastToRun) !== -1) {\n integrations.push(...integrations.splice(integrationsNames.indexOf(alwaysLastToRun), 1));\n }\n\n return integrations;\n}\n\n/** Setup given integration */\nexport function setupIntegration(integration: Integration): void {\n if (installedIntegrations.indexOf(integration.name) !== -1) {\n return;\n }\n integration.setupOnce(addGlobalEventProcessor, getCurrentHub);\n installedIntegrations.push(integration.name);\n logger.log(`Integration installed: ${integration.name}`);\n}\n\n/**\n * Given a list of integration instances this installs them all. When `withDefaults` is set to `true` then all default\n * integrations are added unless they were already provided before.\n * @param integrations array of integration instances\n * @param withDefault should enable default integrations\n */\nexport function setupIntegrations(options: O): IntegrationIndex {\n const integrations: IntegrationIndex = {};\n getIntegrationsToSetup(options).forEach(integration => {\n integrations[integration.name] = integration;\n setupIntegration(integration);\n });\n return integrations;\n}\n","import { logger } from './logger';\nimport { getGlobalObject } from './misc';\n\n/**\n * Tells whether current environment supports ErrorEvent objects\n * {@link supportsErrorEvent}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsErrorEvent(): boolean {\n try {\n // tslint:disable:no-unused-expression\n new ErrorEvent('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMError objects\n * {@link supportsDOMError}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMError(): boolean {\n try {\n // It really needs 1 argument, not 0.\n // Chrome: VM89:1 Uncaught TypeError: Failed to construct 'DOMError':\n // 1 argument required, but only 0 present.\n // @ts-ignore\n // tslint:disable:no-unused-expression\n new DOMError('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports DOMException objects\n * {@link supportsDOMException}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsDOMException(): boolean {\n try {\n // tslint:disable:no-unused-expression\n new DOMException('');\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports Fetch API\n * {@link supportsFetch}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsFetch(): boolean {\n if (!('fetch' in getGlobalObject())) {\n return false;\n }\n\n try {\n // tslint:disable-next-line:no-unused-expression\n new Headers();\n // tslint:disable-next-line:no-unused-expression\n new Request('');\n // tslint:disable-next-line:no-unused-expression\n new Response();\n return true;\n } catch (e) {\n return false;\n }\n}\n/**\n * isNativeFetch checks if the given function is a native implementation of fetch()\n */\nfunction isNativeFetch(func: Function): boolean {\n return func && /^function fetch\\(\\)\\s+\\{\\s+\\[native code\\]\\s+\\}$/.test(func.toString());\n}\n\n/**\n * Tells whether current environment supports Fetch API natively\n * {@link supportsNativeFetch}.\n *\n * @returns true if `window.fetch` is natively implemented, false otherwise\n */\nexport function supportsNativeFetch(): boolean {\n if (!supportsFetch()) {\n return false;\n }\n\n const global = getGlobalObject();\n\n // Fast path to avoid DOM I/O\n // tslint:disable-next-line:no-unbound-method\n if (isNativeFetch(global.fetch)) {\n return true;\n }\n\n // window.fetch is implemented, but is polyfilled or already wrapped (e.g: by a chrome extension)\n // so create a \"pure\" iframe to see if that has native fetch\n let result = false;\n const doc = global.document;\n // tslint:disable-next-line:no-unbound-method deprecation\n if (doc && typeof (doc.createElement as unknown) === `function`) {\n try {\n const sandbox = doc.createElement('iframe');\n sandbox.hidden = true;\n doc.head.appendChild(sandbox);\n if (sandbox.contentWindow && sandbox.contentWindow.fetch) {\n // tslint:disable-next-line:no-unbound-method\n result = isNativeFetch(sandbox.contentWindow.fetch);\n }\n doc.head.removeChild(sandbox);\n } catch (err) {\n logger.warn('Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ', err);\n }\n }\n\n return result;\n}\n\n/**\n * Tells whether current environment supports ReportingObserver API\n * {@link supportsReportingObserver}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReportingObserver(): boolean {\n // tslint:disable-next-line: no-unsafe-any\n return 'ReportingObserver' in getGlobalObject();\n}\n\n/**\n * Tells whether current environment supports Referrer Policy API\n * {@link supportsReferrerPolicy}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsReferrerPolicy(): boolean {\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n\n if (!supportsFetch()) {\n return false;\n }\n\n try {\n // tslint:disable:no-unused-expression\n new Request('_', {\n referrerPolicy: 'origin' as ReferrerPolicy,\n });\n return true;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nexport function supportsHistory(): boolean {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n const global = getGlobalObject();\n const chrome = (global as any).chrome;\n // tslint:disable-next-line:no-unsafe-any\n const isChromePackagedApp = chrome && chrome.app && chrome.app.runtime;\n const hasHistoryApi = 'history' in global && !!global.history.pushState && !!global.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n","// tslint:disable:object-literal-sort-keys\n\n/**\n * This was originally forked from https://github.com/occ/TraceKit, but has since been\n * largely modified and is now maintained as part of Sentry JS SDK.\n */\n\n/**\n * An object representing a single stack frame.\n * {Object} StackFrame\n * {string} url The JavaScript or HTML file URL.\n * {string} func The function name, or empty for anonymous functions (if guessing did not work).\n * {string[]?} args The arguments passed to the function, if known.\n * {number=} line The line number, if known.\n * {number=} column The column number, if known.\n * {string[]} context An array of source code lines; the middle element corresponds to the correct line#.\n */\nexport interface StackFrame {\n url: string;\n func: string;\n args: string[];\n line: number | null;\n column: number | null;\n}\n\n/**\n * An object representing a JavaScript stack trace.\n * {Object} StackTrace\n * {string} name The name of the thrown exception.\n * {string} message The exception error message.\n * {TraceKit.StackFrame[]} stack An array of stack frames.\n */\nexport interface StackTrace {\n name: string;\n message: string;\n mechanism?: string;\n stack: StackFrame[];\n failed?: boolean;\n}\n\n// global reference to slice\nconst UNKNOWN_FUNCTION = '?';\n\n// Chromium based browsers: Chrome, Brave, new Opera, new Edge\nconst chrome = /^\\s*at (?:(.*?) ?\\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\\/).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i;\n// gecko regex: `(?:bundle|\\d+\\.js)`: `bundle` is for react native, `\\d+\\.js` also but specifically for ram bundles because it\n// generates filenames without a prefix like `file://` the filenames in the stacktrace are just 42.js\n// We need this specific case for now because we want no other regex to match.\nconst gecko = /^\\s*(.*?)(?:\\((.*?)\\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\\/.*?|\\[native code\\]|[^@]*(?:bundle|\\d+\\.js))(?::(\\d+))?(?::(\\d+))?\\s*$/i;\nconst winjs = /^\\s*at (?:((?:\\[object object\\])?.+) )?\\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\\d+)(?::(\\d+))?\\)?\\s*$/i;\nconst geckoEval = /(\\S+) line (\\d+)(?: > eval line \\d+)* > eval/i;\nconst chromeEval = /\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/;\n\n/** JSDoc */\nexport function computeStackTrace(ex: any): StackTrace {\n // tslint:disable:no-unsafe-any\n\n let stack = null;\n const popSize: number = ex && ex.framesToPop;\n\n try {\n // This must be tried first because Opera 10 *destroys*\n // its stacktrace property if you try to access the stack\n // property first!!\n stack = computeStackTraceFromStacktraceProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n } catch (e) {\n // no-empty\n }\n\n try {\n stack = computeStackTraceFromStackProp(ex);\n if (stack) {\n return popFrames(stack, popSize);\n }\n } catch (e) {\n // no-empty\n }\n\n return {\n message: extractMessage(ex),\n name: ex && ex.name,\n stack: [],\n failed: true,\n };\n}\n\n/** JSDoc */\n// tslint:disable-next-line:cyclomatic-complexity\nfunction computeStackTraceFromStackProp(ex: any): StackTrace | null {\n // tslint:disable:no-conditional-assignment\n if (!ex || !ex.stack) {\n return null;\n }\n\n const stack = [];\n const lines = ex.stack.split('\\n');\n let isEval;\n let submatch;\n let parts;\n let element;\n\n for (let i = 0; i < lines.length; ++i) {\n if ((parts = chrome.exec(lines[i]))) {\n const isNative = parts[2] && parts[2].indexOf('native') === 0; // start of line\n isEval = parts[2] && parts[2].indexOf('eval') === 0; // start of line\n if (isEval && (submatch = chromeEval.exec(parts[2]))) {\n // throw out eval line/column and use top-most line/column number\n parts[2] = submatch[1]; // url\n parts[3] = submatch[2]; // line\n parts[4] = submatch[3]; // column\n }\n element = {\n // working with the regexp above is super painful. it is quite a hack, but just stripping the `address at `\n // prefix here seems like the quickest solution for now.\n url: parts[2] && parts[2].indexOf('address at ') === 0 ? parts[2].substr('address at '.length) : parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: isNative ? [parts[2]] : [],\n line: parts[3] ? +parts[3] : null,\n column: parts[4] ? +parts[4] : null,\n };\n } else if ((parts = winjs.exec(lines[i]))) {\n element = {\n url: parts[2],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: [],\n line: +parts[3],\n column: parts[4] ? +parts[4] : null,\n };\n } else if ((parts = gecko.exec(lines[i]))) {\n isEval = parts[3] && parts[3].indexOf(' > eval') > -1;\n if (isEval && (submatch = geckoEval.exec(parts[3]))) {\n // throw out eval line/column and use top-most line number\n parts[1] = parts[1] || `eval`;\n parts[3] = submatch[1];\n parts[4] = submatch[2];\n parts[5] = ''; // no column when eval\n } else if (i === 0 && !parts[5] && ex.columnNumber !== void 0) {\n // FireFox uses this awesome columnNumber property for its top frame\n // Also note, Firefox's column number is 0-based and everything else expects 1-based,\n // so adding 1\n // NOTE: this hack doesn't work if top-most frame is eval\n stack[0].column = (ex.columnNumber as number) + 1;\n }\n element = {\n url: parts[3],\n func: parts[1] || UNKNOWN_FUNCTION,\n args: parts[2] ? parts[2].split(',') : [],\n line: parts[4] ? +parts[4] : null,\n column: parts[5] ? +parts[5] : null,\n };\n } else {\n continue;\n }\n\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n\n stack.push(element);\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack,\n };\n}\n\n/** JSDoc */\nfunction computeStackTraceFromStacktraceProp(ex: any): StackTrace | null {\n if (!ex || !ex.stacktrace) {\n return null;\n }\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace;\n const opera10Regex = / line (\\d+).*script (?:in )?(\\S+)(?:: in function (\\S+))?$/i;\n const opera11Regex = / line (\\d+), column (\\d+)\\s*(?:in (?:]+)>|([^\\)]+))\\((.*)\\))? in (.*):\\s*$/i;\n const lines = stacktrace.split('\\n');\n const stack = [];\n let parts;\n\n for (let line = 0; line < lines.length; line += 2) {\n // tslint:disable:no-conditional-assignment\n let element = null;\n if ((parts = opera10Regex.exec(lines[line]))) {\n element = {\n url: parts[2],\n func: parts[3],\n args: [],\n line: +parts[1],\n column: null,\n };\n } else if ((parts = opera11Regex.exec(lines[line]))) {\n element = {\n url: parts[6],\n func: parts[3] || parts[4],\n args: parts[5] ? parts[5].split(',') : [],\n line: +parts[1],\n column: +parts[2],\n };\n }\n\n if (element) {\n if (!element.func && element.line) {\n element.func = UNKNOWN_FUNCTION;\n }\n stack.push(element);\n }\n }\n\n if (!stack.length) {\n return null;\n }\n\n return {\n message: extractMessage(ex),\n name: ex.name,\n stack,\n };\n}\n\n/** Remove N number of frames from the stack */\nfunction popFrames(stacktrace: StackTrace, popSize: number): StackTrace {\n try {\n return {\n ...stacktrace,\n stack: stacktrace.stack.slice(popSize),\n };\n } catch (e) {\n return stacktrace;\n }\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex: any): string {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n","import { Event, Exception, StackFrame } from '@sentry/types';\nimport { extractExceptionKeysForMessage, isEvent, normalizeToSize } from '@sentry/utils';\n\nimport { computeStackTrace, StackFrame as TraceKitStackFrame, StackTrace as TraceKitStackTrace } from './tracekit';\n\nconst STACKTRACE_LIMIT = 50;\n\n/**\n * This function creates an exception from an TraceKitStackTrace\n * @param stacktrace TraceKitStackTrace that will be converted to an exception\n * @hidden\n */\nexport function exceptionFromStacktrace(stacktrace: TraceKitStackTrace): Exception {\n const frames = prepareFramesForEvent(stacktrace.stack);\n\n const exception: Exception = {\n type: stacktrace.name,\n value: stacktrace.message,\n };\n\n if (frames && frames.length) {\n exception.stacktrace = { frames };\n }\n\n // tslint:disable-next-line:strict-type-predicates\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nexport function eventFromPlainObject(exception: {}, syntheticException?: Error, rejection?: boolean): Event {\n const event: Event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : rejection ? 'UnhandledRejection' : 'Error',\n value: `Non-Error ${\n rejection ? 'promise rejection' : 'exception'\n } captured with keys: ${extractExceptionKeysForMessage(exception)}`,\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception),\n },\n };\n\n if (syntheticException) {\n const stacktrace = computeStackTrace(syntheticException);\n const frames = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames,\n };\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nexport function eventFromStacktrace(stacktrace: TraceKitStackTrace): Event {\n const exception = exceptionFromStacktrace(stacktrace);\n\n return {\n exception: {\n values: [exception],\n },\n };\n}\n\n/**\n * @hidden\n */\nexport function prepareFramesForEvent(stack: TraceKitStackFrame[]): StackFrame[] {\n if (!stack || !stack.length) {\n return [];\n }\n\n let localStack = stack;\n\n const firstFrameFunction = localStack[0].func || '';\n const lastFrameFunction = localStack[localStack.length - 1].func || '';\n\n // If stack starts with one of our API calls, remove it (starts, meaning it's the top of the stack - aka last call)\n if (firstFrameFunction.indexOf('captureMessage') !== -1 || firstFrameFunction.indexOf('captureException') !== -1) {\n localStack = localStack.slice(1);\n }\n\n // If stack ends with one of our internal API calls, remove it (ends, meaning it's the bottom of the stack - aka top-most call)\n if (lastFrameFunction.indexOf('sentryWrapped') !== -1) {\n localStack = localStack.slice(0, -1);\n }\n\n // The frame where the crash happened, should be the last entry in the array\n return localStack\n .map(\n (frame: TraceKitStackFrame): StackFrame => ({\n colno: frame.column === null ? undefined : frame.column,\n filename: frame.url || localStack[0].url,\n function: frame.func || '?',\n in_app: true,\n lineno: frame.line === null ? undefined : frame.line,\n }),\n )\n .slice(0, STACKTRACE_LIMIT)\n .reverse();\n}\n","import { Event } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addExceptionTypeValue,\n isDOMError,\n isDOMException,\n isError,\n isErrorEvent,\n isEvent,\n isPlainObject,\n} from '@sentry/utils';\n\nimport { eventFromPlainObject, eventFromStacktrace, prepareFramesForEvent } from './parsers';\nimport { computeStackTrace } from './tracekit';\n\n/** JSDoc */\nexport function eventFromUnknownInput(\n exception: unknown,\n syntheticException?: Error,\n options: {\n rejection?: boolean;\n attachStacktrace?: boolean;\n } = {},\n): Event {\n let event: Event;\n\n if (isErrorEvent(exception as ErrorEvent) && (exception as ErrorEvent).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception as ErrorEvent;\n exception = errorEvent.error; // tslint:disable-line:no-parameter-reassignment\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n return event;\n }\n if (isDOMError(exception as DOMError) || isDOMException(exception as DOMException)) {\n // If it is a DOMError or DOMException (which are legacy APIs, but still supported in some browsers)\n // then we just extract the name and message, as they don't provide anything else\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n const domException = exception as DOMException;\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n\n event = eventFromString(message, syntheticException, options);\n addExceptionTypeValue(event, message);\n return event;\n }\n if (isError(exception as Error)) {\n // we have a real Error object, do nothing\n event = eventFromStacktrace(computeStackTrace(exception as Error));\n return event;\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it is plain Object or Event, serialize it manually and extract options\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n const objectException = exception as {};\n event = eventFromPlainObject(objectException, syntheticException, options.rejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(exception as string, syntheticException, options);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n// this._options.attachStacktrace\n/** JSDoc */\nexport function eventFromString(\n input: string,\n syntheticException?: Error,\n options: {\n attachStacktrace?: boolean;\n } = {},\n): Event {\n const event: Event = {\n message: input,\n };\n\n if (options.attachStacktrace && syntheticException) {\n const stacktrace = computeStackTrace(syntheticException);\n const frames = prepareFramesForEvent(stacktrace.stack);\n event.stacktrace = {\n frames,\n };\n }\n\n return event;\n}\n","import { captureException, withScope } from '@sentry/core';\nimport { Event as SentryEvent, Mechanism, Scope, WrappedFunction } from '@sentry/types';\nimport { addExceptionMechanism, addExceptionTypeValue } from '@sentry/utils';\n\nlet ignoreOnError: number = 0;\n\n/**\n * @hidden\n */\nexport function shouldIgnoreOnError(): boolean {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nexport function ignoreNextOnError(): void {\n // onerror should trigger before setTimeout\n ignoreOnError += 1;\n setTimeout(() => {\n ignoreOnError -= 1;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap.\n * @returns The wrapped function.\n * @hidden\n */\nexport function wrap(\n fn: WrappedFunction,\n options: {\n mechanism?: Mechanism;\n } = {},\n before?: WrappedFunction,\n): any {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // We don't wanna wrap it twice\n if (fn.__sentry__) {\n return fn;\n }\n\n // If this has already been wrapped in the past, return that wrapped function\n if (fn.__sentry_wrapped__) {\n return fn.__sentry_wrapped__;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n const sentryWrapped: WrappedFunction = function(this: any): void {\n const args = Array.prototype.slice.call(arguments);\n\n // tslint:disable:no-unsafe-any\n try {\n // tslint:disable-next-line:strict-type-predicates\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n const wrappedArguments = args.map((arg: any) => wrap(arg, options));\n\n if (fn.handleEvent) {\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.handleEvent.apply(this, wrappedArguments);\n }\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n // tslint:enable:no-unsafe-any\n } catch (ex) {\n ignoreNextOnError();\n\n withScope((scope: Scope) => {\n scope.addEventProcessor((event: SentryEvent) => {\n const processedEvent = { ...event };\n\n if (options.mechanism) {\n addExceptionTypeValue(processedEvent, undefined, undefined);\n addExceptionMechanism(processedEvent, options.mechanism);\n }\n\n processedEvent.extra = {\n ...processedEvent.extra,\n arguments: args,\n };\n\n return processedEvent;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // tslint:disable-line:no-empty\n\n fn.prototype = fn.prototype || {};\n sentryWrapped.prototype = fn.prototype;\n\n Object.defineProperty(fn, '__sentry_wrapped__', {\n enumerable: false,\n value: sentryWrapped,\n });\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n Object.defineProperties(sentryWrapped, {\n __sentry__: {\n enumerable: false,\n value: true,\n },\n __sentry_original__: {\n enumerable: false,\n value: fn,\n },\n });\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') as PropertyDescriptor;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get(): string {\n return fn.name;\n },\n });\n }\n } catch (_oO) {\n /*no-empty*/\n }\n\n return sentryWrapped;\n}\n","/* tslint:disable:only-arrow-functions no-unsafe-any */\n\nimport { WrappedFunction } from '@sentry/types';\n\nimport { isInstanceOf, isString } from './is';\nimport { logger } from './logger';\nimport { getFunctionName, getGlobalObject } from './misc';\nimport { fill } from './object';\nimport { supportsHistory, supportsNativeFetch } from './supports';\n\nconst global = getGlobalObject();\n\n/** Object describing handler that will be triggered for a given `type` of instrumentation */\ninterface InstrumentHandler {\n type: InstrumentHandlerType;\n callback: InstrumentHandlerCallback;\n}\ntype InstrumentHandlerType =\n | 'console'\n | 'dom'\n | 'fetch'\n | 'history'\n | 'sentry'\n | 'xhr'\n | 'error'\n | 'unhandledrejection';\ntype InstrumentHandlerCallback = (data: any) => void;\n\n/**\n * Instrument native APIs to call handlers that can be used to create breadcrumbs, APM spans etc.\n * - Console API\n * - Fetch API\n * - XHR API\n * - History API\n * - DOM API (click/typing)\n * - Error API\n * - UnhandledRejection API\n */\n\nconst handlers: { [key in InstrumentHandlerType]?: InstrumentHandlerCallback[] } = {};\nconst instrumented: { [key in InstrumentHandlerType]?: boolean } = {};\n\n/** Instruments given API */\nfunction instrument(type: InstrumentHandlerType): void {\n if (instrumented[type]) {\n return;\n }\n\n instrumented[type] = true;\n\n switch (type) {\n case 'console':\n instrumentConsole();\n break;\n case 'dom':\n instrumentDOM();\n break;\n case 'xhr':\n instrumentXHR();\n break;\n case 'fetch':\n instrumentFetch();\n break;\n case 'history':\n instrumentHistory();\n break;\n case 'error':\n instrumentError();\n break;\n case 'unhandledrejection':\n instrumentUnhandledRejection();\n break;\n default:\n logger.warn('unknown instrumentation type:', type);\n }\n}\n\n/**\n * Add handler that will be called when given type of instrumentation triggers.\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nexport function addInstrumentationHandler(handler: InstrumentHandler): void {\n // tslint:disable-next-line:strict-type-predicates\n if (!handler || typeof handler.type !== 'string' || typeof handler.callback !== 'function') {\n return;\n }\n handlers[handler.type] = handlers[handler.type] || [];\n (handlers[handler.type] as InstrumentHandlerCallback[]).push(handler.callback);\n instrument(handler.type);\n}\n\n/** JSDoc */\nfunction triggerHandlers(type: InstrumentHandlerType, data: any): void {\n if (!type || !handlers[type]) {\n return;\n }\n\n for (const handler of handlers[type] || []) {\n try {\n handler(data);\n } catch (e) {\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(\n handler,\n )}\\nError: ${e}`,\n );\n }\n }\n}\n\n/** JSDoc */\nfunction instrumentConsole(): void {\n if (!('console' in global)) {\n return;\n }\n\n ['debug', 'info', 'warn', 'error', 'log', 'assert'].forEach(function(level: string): void {\n if (!(level in global.console)) {\n return;\n }\n\n fill(global.console, level, function(originalConsoleLevel: () => any): Function {\n return function(...args: any[]): void {\n triggerHandlers('console', { args, level });\n\n // this fails for some browsers. :(\n if (originalConsoleLevel) {\n Function.prototype.apply.call(originalConsoleLevel, global.console, args);\n }\n };\n });\n });\n}\n\n/** JSDoc */\nfunction instrumentFetch(): void {\n if (!supportsNativeFetch()) {\n return;\n }\n\n fill(global, 'fetch', function(originalFetch: () => void): () => void {\n return function(...args: any[]): void {\n const commonHandlerData = {\n args,\n fetchData: {\n method: getFetchMethod(args),\n url: getFetchUrl(args),\n },\n startTimestamp: Date.now(),\n };\n\n triggerHandlers('fetch', {\n ...commonHandlerData,\n });\n\n return originalFetch.apply(global, args).then(\n (response: Response) => {\n triggerHandlers('fetch', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n response,\n });\n return response;\n },\n (error: Error) => {\n triggerHandlers('fetch', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n error,\n });\n throw error;\n },\n );\n };\n });\n}\n\n/** JSDoc */\ninterface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n };\n}\n\n/** Extract `method` from fetch call arguments */\nfunction getFetchMethod(fetchArgs: any[] = []): string {\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request) && fetchArgs[0].method) {\n return String(fetchArgs[0].method).toUpperCase();\n }\n if (fetchArgs[1] && fetchArgs[1].method) {\n return String(fetchArgs[1].method).toUpperCase();\n }\n return 'GET';\n}\n\n/** Extract `url` from fetch call arguments */\nfunction getFetchUrl(fetchArgs: any[] = []): string {\n if (typeof fetchArgs[0] === 'string') {\n return fetchArgs[0];\n }\n if ('Request' in global && isInstanceOf(fetchArgs[0], Request)) {\n return fetchArgs[0].url;\n }\n return String(fetchArgs[0]);\n}\n\n/** JSDoc */\nfunction instrumentXHR(): void {\n if (!('XMLHttpRequest' in global)) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n fill(xhrproto, 'open', function(originalOpen: () => void): () => void {\n return function(this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const url = args[1];\n this.__sentry_xhr__ = {\n method: isString(args[0]) ? args[0].toUpperCase() : args[0],\n url: args[1],\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n if (isString(url) && this.__sentry_xhr__.method === 'POST' && url.match(/sentry_key/)) {\n this.__sentry_own_request__ = true;\n }\n\n return originalOpen.apply(this, args);\n };\n });\n\n fill(xhrproto, 'send', function(originalSend: () => void): () => void {\n return function(this: SentryWrappedXMLHttpRequest, ...args: any[]): void {\n const xhr = this; // tslint:disable-line:no-this-assignment\n const commonHandlerData = {\n args,\n startTimestamp: Date.now(),\n xhr,\n };\n\n triggerHandlers('xhr', {\n ...commonHandlerData,\n });\n\n xhr.addEventListener('readystatechange', function(): void {\n if (xhr.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n if (xhr.__sentry_xhr__) {\n xhr.__sentry_xhr__.status_code = xhr.status;\n }\n } catch (e) {\n /* do nothing */\n }\n triggerHandlers('xhr', {\n ...commonHandlerData,\n endTimestamp: Date.now(),\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n });\n}\n\nlet lastHref: string;\n\n/** JSDoc */\nfunction instrumentHistory(): void {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = global.onpopstate;\n global.onpopstate = function(this: WindowEventHandlers, ...args: any[]): any {\n const to = global.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n if (oldOnPopState) {\n return oldOnPopState.apply(this, args);\n }\n };\n\n /** @hidden */\n function historyReplacementFunction(originalHistoryFunction: () => void): () => void {\n return function(this: History, ...args: any[]): void {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n triggerHandlers('history', {\n from,\n to,\n });\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(global.history, 'pushState', historyReplacementFunction);\n fill(global.history, 'replaceState', historyReplacementFunction);\n}\n\n/** JSDoc */\nfunction instrumentDOM(): void {\n if (!('document' in global)) {\n return;\n }\n\n // Capture breadcrumbs from any click that is unhandled / bubbled up all the way\n // to the document. Do this before we instrument addEventListener.\n global.document.addEventListener('click', domEventHandler('click', triggerHandlers.bind(null, 'dom')), false);\n global.document.addEventListener('keypress', keypressEventHandler(triggerHandlers.bind(null, 'dom')), false);\n\n // After hooking into document bubbled up click and keypresses events, we also hook into user handled click & keypresses.\n ['EventTarget', 'Node'].forEach((target: string) => {\n const proto = (global as any)[target] && (global as any)[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function(\n original: () => void,\n ): (\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ) => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerOrEventListenerObject, capture?: boolean, secure?: boolean) => void {\n if (fn && (fn as EventListenerObject).handleEvent) {\n if (eventName === 'click') {\n fill(fn, 'handleEvent', function(innerOriginal: () => void): (caughtEvent: Event) => void {\n return function(this: any, event: Event): (event: Event) => void {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n if (eventName === 'keypress') {\n fill(fn, 'handleEvent', function(innerOriginal: () => void): (caughtEvent: Event) => void {\n return function(this: any, event: Event): (event: Event) => void {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(event);\n return innerOriginal.call(this, event);\n };\n });\n }\n } else {\n if (eventName === 'click') {\n domEventHandler('click', triggerHandlers.bind(null, 'dom'), true)(this);\n }\n if (eventName === 'keypress') {\n keypressEventHandler(triggerHandlers.bind(null, 'dom'))(this);\n }\n }\n\n return original.call(this, eventName, fn, options);\n };\n });\n\n fill(proto, 'removeEventListener', function(\n original: () => void,\n ): (\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ) => () => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n let callback = fn as WrappedFunction;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n });\n}\n\nconst debounceDuration: number = 1000;\nlet debounceTimer: number = 0;\nlet keypressTimeout: number | undefined;\nlet lastCapturedEvent: Event | undefined;\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n * @param name the event name (e.g. \"click\")\n * @param handler function that will be triggered\n * @param debounce decides whether it should wait till another event loop\n * @returns wrapped breadcrumb events handler\n * @hidden\n */\nfunction domEventHandler(name: string, handler: Function, debounce: boolean = false): (event: Event) => void {\n return (event: Event) => {\n // reset keypress timeout; e.g. triggering a 'click' after\n // a 'keypress' will reset the keypress debounce so that a new\n // set of keypresses can be recorded\n keypressTimeout = undefined;\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors). Ignore if we've\n // already captured the event.\n if (!event || lastCapturedEvent === event) {\n return;\n }\n\n lastCapturedEvent = event;\n\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n if (debounce) {\n debounceTimer = setTimeout(() => {\n handler({ event, name });\n });\n } else {\n handler({ event, name });\n }\n };\n}\n\n/**\n * Wraps addEventListener to capture keypress UI events\n * @param handler function that will be triggered\n * @returns wrapped keypress events handler\n * @hidden\n */\nfunction keypressEventHandler(handler: Function): (event: Event) => void {\n // TODO: if somehow user switches keypress target before\n // debounce timeout is triggered, we will only capture\n // a single breadcrumb from the FIRST target (acceptable?)\n return (event: Event) => {\n let target;\n\n try {\n target = event.target;\n } catch (e) {\n // just accessing event properties can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/raven-js/issues/838\n return;\n }\n\n const tagName = target && (target as HTMLElement).tagName;\n\n // only consider keypress events on actual input elements\n // this will disregard keypresses targeting body (e.g. tabbing\n // through elements, hotkeys, etc)\n if (!tagName || (tagName !== 'INPUT' && tagName !== 'TEXTAREA' && !(target as HTMLElement).isContentEditable)) {\n return;\n }\n\n // record first keypress in a series, but ignore subsequent\n // keypresses until debounce clears\n if (!keypressTimeout) {\n domEventHandler('input', handler)(event);\n }\n clearTimeout(keypressTimeout);\n\n keypressTimeout = (setTimeout(() => {\n keypressTimeout = undefined;\n }, debounceDuration) as any) as number;\n };\n}\n\nlet _oldOnErrorHandler: OnErrorEventHandler = null;\n/** JSDoc */\nfunction instrumentError(): void {\n _oldOnErrorHandler = global.onerror;\n\n global.onerror = function(msg: any, url: any, line: any, column: any, error: any): boolean {\n triggerHandlers('error', {\n column,\n error,\n line,\n msg,\n url,\n });\n\n if (_oldOnErrorHandler) {\n return _oldOnErrorHandler.apply(this, arguments);\n }\n\n return false;\n };\n}\n\nlet _oldOnUnhandledRejectionHandler: ((e: any) => void) | null = null;\n/** JSDoc */\nfunction instrumentUnhandledRejection(): void {\n _oldOnUnhandledRejectionHandler = global.onunhandledrejection;\n\n global.onunhandledrejection = function(e: any): boolean {\n triggerHandlers('unhandledrejection', e);\n\n if (_oldOnUnhandledRejectionHandler) {\n return _oldOnUnhandledRejectionHandler.apply(this, arguments);\n }\n\n return true;\n };\n}\n","import { API, getCurrentHub } from '@sentry/core';\nimport { Integration, Severity } from '@sentry/types';\nimport {\n addInstrumentationHandler,\n getEventDescription,\n getGlobalObject,\n htmlTreeAsString,\n logger,\n parseUrl,\n safeJoin,\n} from '@sentry/utils';\n\nimport { BrowserClient } from '../client';\n\n/**\n * @hidden\n */\nexport interface SentryWrappedXMLHttpRequest extends XMLHttpRequest {\n [key: string]: any;\n __sentry_xhr__?: {\n method?: string;\n url?: string;\n status_code?: number;\n };\n}\n\n/** JSDoc */\ninterface BreadcrumbIntegrations {\n console?: boolean;\n dom?: boolean;\n fetch?: boolean;\n history?: boolean;\n sentry?: boolean;\n xhr?: boolean;\n}\n\n/**\n * Default Breadcrumbs instrumentations\n * TODO: Deprecated - with v6, this will be renamed to `Instrument`\n */\nexport class Breadcrumbs implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = Breadcrumbs.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'Breadcrumbs';\n\n /** JSDoc */\n private readonly _options: BreadcrumbIntegrations;\n\n /**\n * @inheritDoc\n */\n public constructor(options?: BreadcrumbIntegrations) {\n this._options = {\n console: true,\n dom: true,\n fetch: true,\n history: true,\n sentry: true,\n xhr: true,\n ...options,\n };\n }\n\n /**\n * Creates breadcrumbs from console API calls\n */\n private _consoleBreadcrumb(handlerData: { [key: string]: any }): void {\n const breadcrumb = {\n category: 'console',\n data: {\n arguments: handlerData.args,\n logger: 'console',\n },\n level: Severity.fromString(handlerData.level),\n message: safeJoin(handlerData.args, ' '),\n };\n\n if (handlerData.level === 'assert') {\n if (handlerData.args[0] === false) {\n breadcrumb.message = `Assertion failed: ${safeJoin(handlerData.args.slice(1), ' ') || 'console.assert'}`;\n breadcrumb.data.arguments = handlerData.args.slice(1);\n } else {\n // Don't capture a breadcrumb for passed assertions\n return;\n }\n }\n\n getCurrentHub().addBreadcrumb(breadcrumb, {\n input: handlerData.args,\n level: handlerData.level,\n });\n }\n\n /**\n * Creates breadcrumbs from DOM API calls\n */\n private _domBreadcrumb(handlerData: { [key: string]: any }): void {\n let target;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = handlerData.event.target\n ? htmlTreeAsString(handlerData.event.target as Node)\n : htmlTreeAsString((handlerData.event as unknown) as Node);\n } catch (e) {\n target = '';\n }\n\n if (target.length === 0) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: `ui.${handlerData.name}`,\n message: target,\n },\n {\n event: handlerData.event,\n name: handlerData.name,\n },\n );\n }\n\n /**\n * Creates breadcrumbs from XHR API calls\n */\n private _xhrBreadcrumb(handlerData: { [key: string]: any }): void {\n if (handlerData.endTimestamp) {\n // We only capture complete, non-sentry requests\n if (handlerData.xhr.__sentry_own_request__) {\n return;\n }\n\n getCurrentHub().addBreadcrumb(\n {\n category: 'xhr',\n data: handlerData.xhr.__sentry_xhr__,\n type: 'http',\n },\n {\n xhr: handlerData.xhr,\n },\n );\n\n return;\n }\n\n // We only capture issued sentry requests\n if (this._options.sentry && handlerData.xhr.__sentry_own_request__) {\n addSentryBreadcrumb(handlerData.args[0]);\n }\n }\n\n /**\n * Creates breadcrumbs from fetch API calls\n */\n private _fetchBreadcrumb(handlerData: { [key: string]: any }): void {\n // We only capture complete fetch requests\n if (!handlerData.endTimestamp) {\n return;\n }\n\n const client = getCurrentHub().getClient();\n const dsn = client && client.getDsn();\n if (this._options.sentry && dsn) {\n const filterUrl = new API(dsn).getStoreEndpoint();\n // if Sentry key appears in URL, don't capture it as a request\n // but rather as our own 'sentry' type breadcrumb\n if (\n filterUrl &&\n handlerData.fetchData.url.indexOf(filterUrl) !== -1 &&\n handlerData.fetchData.method === 'POST' &&\n handlerData.args[1] &&\n handlerData.args[1].body\n ) {\n addSentryBreadcrumb(handlerData.args[1].body);\n return;\n }\n }\n\n if (handlerData.error) {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n level: Severity.Error,\n type: 'http',\n },\n {\n data: handlerData.error,\n input: handlerData.args,\n },\n );\n } else {\n getCurrentHub().addBreadcrumb(\n {\n category: 'fetch',\n data: {\n ...handlerData.fetchData,\n status_code: handlerData.response.status,\n },\n type: 'http',\n },\n {\n input: handlerData.args,\n response: handlerData.response,\n },\n );\n }\n }\n\n /**\n * Creates breadcrumbs from history API calls\n */\n private _historyBreadcrumb(handlerData: { [key: string]: any }): void {\n const global = getGlobalObject();\n let from = handlerData.from;\n let to = handlerData.to;\n const parsedLoc = parseUrl(global.location.href);\n let parsedFrom = parseUrl(from);\n const parsedTo = parseUrl(to);\n\n // Initial pushState doesn't provide `from` information\n if (!parsedFrom.path) {\n parsedFrom = parsedLoc;\n }\n\n // Use only the path component of the URL if the URL matches the current\n // document (almost all the time when using pushState)\n if (parsedLoc.protocol === parsedTo.protocol && parsedLoc.host === parsedTo.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n to = parsedTo.relative;\n }\n if (parsedLoc.protocol === parsedFrom.protocol && parsedLoc.host === parsedFrom.host) {\n // tslint:disable-next-line:no-parameter-reassignment\n from = parsedFrom.relative;\n }\n\n getCurrentHub().addBreadcrumb({\n category: 'navigation',\n data: {\n from,\n to,\n },\n });\n }\n\n /**\n * Instrument browser built-ins w/ breadcrumb capturing\n * - Console API\n * - DOM API (click/typing)\n * - XMLHttpRequest API\n * - Fetch API\n * - History API\n */\n public setupOnce(): void {\n if (this._options.console) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._consoleBreadcrumb(...args);\n },\n type: 'console',\n });\n }\n if (this._options.dom) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._domBreadcrumb(...args);\n },\n type: 'dom',\n });\n }\n if (this._options.xhr) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._xhrBreadcrumb(...args);\n },\n type: 'xhr',\n });\n }\n if (this._options.fetch) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._fetchBreadcrumb(...args);\n },\n type: 'fetch',\n });\n }\n if (this._options.history) {\n addInstrumentationHandler({\n callback: (...args) => {\n this._historyBreadcrumb(...args);\n },\n type: 'history',\n });\n }\n }\n}\n\n/**\n * Create a breadcrumb of `sentry` from the events themselves\n */\nfunction addSentryBreadcrumb(serializedData: string): void {\n // There's always something that can go wrong with deserialization...\n try {\n const event = JSON.parse(serializedData);\n getCurrentHub().addBreadcrumb(\n {\n category: `sentry.${event.type === 'transaction' ? 'transaction' : 'event'}`,\n event_id: event.event_id,\n level: event.level || Severity.fromString('error'),\n message: getEventDescription(event),\n },\n {\n event,\n },\n );\n } catch (_oO) {\n logger.error('Error while adding sentry type breadcrumb');\n }\n}\n","import { getCurrentHub, initAndBind, Integrations as CoreIntegrations } from '@sentry/core';\nimport { getGlobalObject, SyncPromise } from '@sentry/utils';\n\nimport { BrowserOptions } from './backend';\nimport { BrowserClient, ReportDialogOptions } from './client';\nimport { wrap as internalWrap } from './helpers';\nimport { Breadcrumbs, GlobalHandlers, LinkedErrors, TryCatch, UserAgent } from './integrations';\n\nexport const defaultIntegrations = [\n new CoreIntegrations.InboundFilters(),\n new CoreIntegrations.FunctionToString(),\n new TryCatch(),\n new Breadcrumbs(),\n new GlobalHandlers(),\n new LinkedErrors(),\n new UserAgent(),\n];\n\n/**\n * The Sentry Browser SDK Client.\n *\n * To use this SDK, call the {@link init} function as early as possible when\n * loading the web page. To set context information or send manual events, use\n * the provided methods.\n *\n * @example\n *\n * ```\n *\n * import { init } from '@sentry/browser';\n *\n * init({\n * dsn: '__DSN__',\n * // ...\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { configureScope } from '@sentry/browser';\n * configureScope((scope: Scope) => {\n * scope.setExtra({ battery: 0.7 });\n * scope.setTag({ user_mode: 'admin' });\n * scope.setUser({ id: '4711' });\n * });\n * ```\n *\n * @example\n * ```\n *\n * import { addBreadcrumb } from '@sentry/browser';\n * addBreadcrumb({\n * message: 'My Breadcrumb',\n * // ...\n * });\n * ```\n *\n * @example\n *\n * ```\n *\n * import * as Sentry from '@sentry/browser';\n * Sentry.captureMessage('Hello, world!');\n * Sentry.captureException(new Error('Good bye'));\n * Sentry.captureEvent({\n * message: 'Manual',\n * stacktrace: [\n * // ...\n * ],\n * });\n * ```\n *\n * @see {@link BrowserOptions} for documentation on configuration options.\n */\nexport function init(options: BrowserOptions = {}): void {\n if (options.defaultIntegrations === undefined) {\n options.defaultIntegrations = defaultIntegrations;\n }\n if (options.release === undefined) {\n const window = getGlobalObject();\n // This supports the variable that sentry-webpack-plugin injects\n if (window.SENTRY_RELEASE && window.SENTRY_RELEASE.id) {\n options.release = window.SENTRY_RELEASE.id;\n }\n }\n initAndBind(BrowserClient, options);\n}\n\n/**\n * Present the user with a report dialog.\n *\n * @param options Everything is optional, we try to fetch all info need from the global scope.\n */\nexport function showReportDialog(options: ReportDialogOptions = {}): void {\n if (!options.eventId) {\n options.eventId = getCurrentHub().lastEventId();\n }\n const client = getCurrentHub().getClient();\n if (client) {\n client.showReportDialog(options);\n }\n}\n\n/**\n * This is the getter for lastEventId.\n *\n * @returns The last event id of a captured event.\n */\nexport function lastEventId(): string | undefined {\n return getCurrentHub().lastEventId();\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function forceLoad(): void {\n // Noop\n}\n\n/**\n * This function is here to be API compatible with the loader.\n * @hidden\n */\nexport function onLoad(callback: () => void): void {\n callback();\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function flush(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.flush(timeout);\n }\n return SyncPromise.reject(false);\n}\n\n/**\n * A promise that resolves when all current events have been sent.\n * If you provide a timeout and the queue takes longer to drain the promise returns false.\n *\n * @param timeout Maximum time in ms the client should wait.\n */\nexport function close(timeout?: number): PromiseLike {\n const client = getCurrentHub().getClient();\n if (client) {\n return client.close(timeout);\n }\n return SyncPromise.reject(false);\n}\n\n/**\n * Wrap code within a try/catch block so the SDK is able to capture errors.\n *\n * @param fn A function to wrap.\n *\n * @returns The result of wrapped function call.\n */\nexport function wrap(fn: Function): any {\n return internalWrap(fn)(); // tslint:disable-line:no-unsafe-any\n}\n","/** JSDoc */\nexport enum Severity {\n /** JSDoc */\n Fatal = 'fatal',\n /** JSDoc */\n Error = 'error',\n /** JSDoc */\n Warning = 'warning',\n /** JSDoc */\n Log = 'log',\n /** JSDoc */\n Info = 'info',\n /** JSDoc */\n Debug = 'debug',\n /** JSDoc */\n Critical = 'critical',\n}\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\nexport namespace Severity {\n /**\n * Converts a string-based level into a {@link Severity}.\n *\n * @param level string representation of Severity\n * @returns Severity\n */\n export function fromString(level: string): Severity {\n switch (level) {\n case 'debug':\n return Severity.Debug;\n case 'info':\n return Severity.Info;\n case 'warn':\n case 'warning':\n return Severity.Warning;\n case 'error':\n return Severity.Error;\n case 'fatal':\n return Severity.Fatal;\n case 'critical':\n return Severity.Critical;\n case 'log':\n default:\n return Severity.Log;\n }\n }\n}\n","/** The status of an event. */\nexport enum Status {\n /** The status could not be determined. */\n Unknown = 'unknown',\n /** The event was skipped due to configuration or callbacks. */\n Skipped = 'skipped',\n /** The event was sent to Sentry successfully. */\n Success = 'success',\n /** The client is currently rate limited and will try again later. */\n RateLimit = 'rate_limit',\n /** The event could not be processed. */\n Invalid = 'invalid',\n /** A server-side error ocurred during submission. */\n Failed = 'failed',\n}\n// tslint:disable:completed-docs\n// tslint:disable:no-unnecessary-qualifier no-namespace\nexport namespace Status {\n /**\n * Converts a HTTP status code into a {@link Status}.\n *\n * @param code The HTTP response status code.\n * @returns The send status or {@link Status.Unknown}.\n */\n export function fromHttpCode(code: number): Status {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n\n if (code === 429) {\n return Status.RateLimit;\n }\n\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n\n if (code >= 500) {\n return Status.Failed;\n }\n\n return Status.Unknown;\n }\n}\n","import { isThenable } from './is';\n\n/** SyncPromise internal states */\nenum States {\n /** Pending */\n PENDING = 'PENDING',\n /** Resolved / OK */\n RESOLVED = 'RESOLVED',\n /** Rejected / Error */\n REJECTED = 'REJECTED',\n}\n\n/**\n * Thenable class that behaves like a Promise and follows it's interface\n * but is not async internally\n */\nclass SyncPromise implements PromiseLike {\n private _state: States = States.PENDING;\n private _handlers: Array<{\n done: boolean;\n onfulfilled?: ((value: T) => T | PromiseLike) | null;\n onrejected?: ((reason: any) => any) | null;\n }> = [];\n private _value: any;\n\n public constructor(\n executor: (resolve: (value?: T | PromiseLike | null) => void, reject: (reason?: any) => void) => void,\n ) {\n try {\n executor(this._resolve, this._reject);\n } catch (e) {\n this._reject(e);\n }\n }\n\n /** JSDoc */\n public toString(): string {\n return '[object SyncPromise]';\n }\n\n /** JSDoc */\n public static resolve(value: T | PromiseLike): PromiseLike {\n return new SyncPromise(resolve => {\n resolve(value);\n });\n }\n\n /** JSDoc */\n public static reject(reason?: any): PromiseLike {\n return new SyncPromise((_, reject) => {\n reject(reason);\n });\n }\n\n /** JSDoc */\n public static all(collection: Array>): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n if (!Array.isArray(collection)) {\n reject(new TypeError(`Promise.all requires an array as input.`));\n return;\n }\n\n if (collection.length === 0) {\n resolve([]);\n return;\n }\n\n let counter = collection.length;\n const resolvedCollection: U[] = [];\n\n collection.forEach((item, index) => {\n SyncPromise.resolve(item)\n .then(value => {\n resolvedCollection[index] = value;\n counter -= 1;\n\n if (counter !== 0) {\n return;\n }\n resolve(resolvedCollection);\n })\n .then(null, reject);\n });\n });\n }\n\n /** JSDoc */\n public then(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike) | null,\n onrejected?: ((reason: any) => TResult2 | PromiseLike) | null,\n ): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n this._attachHandler({\n done: false,\n onfulfilled: result => {\n if (!onfulfilled) {\n // TODO: ¯\\_(ツ)_/¯\n // TODO: FIXME\n resolve(result as any);\n return;\n }\n try {\n resolve(onfulfilled(result));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n onrejected: reason => {\n if (!onrejected) {\n reject(reason);\n return;\n }\n try {\n resolve(onrejected(reason));\n return;\n } catch (e) {\n reject(e);\n return;\n }\n },\n });\n });\n }\n\n /** JSDoc */\n public catch(\n onrejected?: ((reason: any) => TResult | PromiseLike) | null,\n ): PromiseLike {\n return this.then(val => val, onrejected);\n }\n\n /** JSDoc */\n public finally(onfinally?: (() => void) | null): PromiseLike {\n return new SyncPromise((resolve, reject) => {\n let val: TResult | any;\n let isRejected: boolean;\n\n return this.then(\n value => {\n isRejected = false;\n val = value;\n if (onfinally) {\n onfinally();\n }\n },\n reason => {\n isRejected = true;\n val = reason;\n if (onfinally) {\n onfinally();\n }\n },\n ).then(() => {\n if (isRejected) {\n reject(val);\n return;\n }\n\n resolve((val as unknown) as any);\n });\n });\n }\n\n /** JSDoc */\n private readonly _resolve = (value?: T | PromiseLike | null) => {\n this._setResult(States.RESOLVED, value);\n };\n\n /** JSDoc */\n private readonly _reject = (reason?: any) => {\n this._setResult(States.REJECTED, reason);\n };\n\n /** JSDoc */\n private readonly _setResult = (state: States, value?: T | PromiseLike | any) => {\n if (this._state !== States.PENDING) {\n return;\n }\n\n if (isThenable(value)) {\n (value as PromiseLike).then(this._resolve, this._reject);\n return;\n }\n\n this._state = state;\n this._value = value;\n\n this._executeHandlers();\n };\n\n // TODO: FIXME\n /** JSDoc */\n private readonly _attachHandler = (handler: {\n /** JSDoc */\n done: boolean;\n /** JSDoc */\n onfulfilled?(value: T): any;\n /** JSDoc */\n onrejected?(reason: any): any;\n }) => {\n this._handlers = this._handlers.concat(handler);\n this._executeHandlers();\n };\n\n /** JSDoc */\n private readonly _executeHandlers = () => {\n if (this._state === States.PENDING) {\n return;\n }\n\n const cachedHandlers = this._handlers.slice();\n this._handlers = [];\n\n cachedHandlers.forEach(handler => {\n if (handler.done) {\n return;\n }\n\n if (this._state === States.RESOLVED) {\n if (handler.onfulfilled) {\n handler.onfulfilled((this._value as unknown) as any);\n }\n }\n\n if (this._state === States.REJECTED) {\n if (handler.onrejected) {\n handler.onrejected(this._value);\n }\n }\n\n handler.done = true;\n });\n };\n}\n\nexport { SyncPromise };\n","import { consoleSandbox, getGlobalObject } from './misc';\n\n// TODO: Implement different loggers for different environments\nconst global = getGlobalObject();\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** JSDoc */\nclass Logger {\n /** JSDoc */\n private _enabled: boolean;\n\n /** JSDoc */\n public constructor() {\n this._enabled = false;\n }\n\n /** JSDoc */\n public disable(): void {\n this._enabled = false;\n }\n\n /** JSDoc */\n public enable(): void {\n this._enabled = true;\n }\n\n /** JSDoc */\n public log(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.log(`${PREFIX}[Log]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n\n /** JSDoc */\n public warn(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.warn(`${PREFIX}[Warn]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n\n /** JSDoc */\n public error(...args: any[]): void {\n if (!this._enabled) {\n return;\n }\n consoleSandbox(() => {\n global.console.error(`${PREFIX}[Error]: ${args.join(' ')}`); // tslint:disable-line:no-console\n });\n }\n}\n\n// Ensure we only have a single logger instance, even if multiple versions of @sentry/utils are being used\nglobal.__SENTRY__ = global.__SENTRY__ || {};\nconst logger = (global.__SENTRY__.logger as Logger) || (global.__SENTRY__.logger = new Logger());\n\nexport { logger };\n","import { Integration, WrappedFunction } from '@sentry/types';\n\nlet originalFunctionToString: () => void;\n\n/** Patch toString calls to return proper name for wrapped functions */\nexport class FunctionToString implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = FunctionToString.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'FunctionToString';\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n originalFunctionToString = Function.prototype.toString;\n\n Function.prototype.toString = function(this: WrappedFunction, ...args: any[]): string {\n const context = this.__sentry_original__ || this;\n // tslint:disable-next-line:no-unsafe-any\n return originalFunctionToString.apply(context, args);\n };\n }\n}\n","export const setPrototypeOf =\n Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); // tslint:disable-line:no-unbound-method\n\n/**\n * setPrototypeOf polyfill using __proto__\n */\nfunction setProtoOf(obj: TTarget, proto: TProto): TTarget & TProto {\n // @ts-ignore\n obj.__proto__ = proto;\n return obj as TTarget & TProto;\n}\n\n/**\n * setPrototypeOf polyfill using mixin\n */\nfunction mixinProperties(obj: TTarget, proto: TProto): TTarget & TProto {\n for (const prop in proto) {\n if (!obj.hasOwnProperty(prop)) {\n // @ts-ignore\n obj[prop] = proto[prop];\n }\n }\n\n return obj as TTarget & TProto;\n}\n","import { setPrototypeOf } from './polyfill';\n\n/** An error emitted by Sentry SDKs and related utilities. */\nexport class SentryError extends Error {\n /** Display name of this error instance. */\n public name: string;\n\n public constructor(public message: string) {\n super(message);\n\n // tslint:disable:no-unsafe-any\n this.name = new.target.prototype.constructor.name;\n setPrototypeOf(this, new.target.prototype);\n }\n}\n","import { DsnComponents, DsnLike, DsnProtocol } from '@sentry/types';\n\nimport { SentryError } from './error';\n\n/** Regular expression used to parse a Dsn. */\nconst DSN_REGEX = /^(?:(\\w+):)\\/\\/(?:(\\w+)(?::(\\w+))?@)([\\w\\.-]+)(?::(\\d+))?\\/(.+)/;\n\n/** Error message */\nconst ERROR_MESSAGE = 'Invalid Dsn';\n\n/** The Sentry Dsn, identifying a Sentry instance and project. */\nexport class Dsn implements DsnComponents {\n /** Protocol used to connect to Sentry. */\n public protocol!: DsnProtocol;\n /** Public authorization key. */\n public user!: string;\n /** Private authorization key (deprecated, optional). */\n public pass!: string;\n /** Hostname of the Sentry instance. */\n public host!: string;\n /** Port of the Sentry instance. */\n public port!: string;\n /** Path */\n public path!: string;\n /** Project ID */\n public projectId!: string;\n\n /** Creates a new Dsn component */\n public constructor(from: DsnLike) {\n if (typeof from === 'string') {\n this._fromString(from);\n } else {\n this._fromComponents(from);\n }\n\n this._validate();\n }\n\n /**\n * Renders the string representation of this Dsn.\n *\n * By default, this will render the public representation without the password\n * component. To get the deprecated private representation, set `withPassword`\n * to true.\n *\n * @param withPassword When set to true, the password will be included.\n */\n public toString(withPassword: boolean = false): string {\n // tslint:disable-next-line:no-this-assignment\n const { host, path, pass, port, projectId, protocol, user } = this;\n return (\n `${protocol}://${user}${withPassword && pass ? `:${pass}` : ''}` +\n `@${host}${port ? `:${port}` : ''}/${path ? `${path}/` : path}${projectId}`\n );\n }\n\n /** Parses a string into this Dsn. */\n private _fromString(str: string): void {\n const match = DSN_REGEX.exec(str);\n\n if (!match) {\n throw new SentryError(ERROR_MESSAGE);\n }\n\n const [protocol, user, pass = '', host, port = '', lastPath] = match.slice(1);\n let path = '';\n let projectId = lastPath;\n\n const split = projectId.split('/');\n if (split.length > 1) {\n path = split.slice(0, -1).join('/');\n projectId = split.pop() as string;\n }\n\n this._fromComponents({ host, pass, path, projectId, port, protocol: protocol as DsnProtocol, user });\n }\n\n /** Maps Dsn components into this instance. */\n private _fromComponents(components: DsnComponents): void {\n this.protocol = components.protocol;\n this.user = components.user;\n this.pass = components.pass || '';\n this.host = components.host;\n this.port = components.port || '';\n this.path = components.path || '';\n this.projectId = components.projectId;\n }\n\n /** Validates this Dsn and throws on error. */\n private _validate(): void {\n ['protocol', 'user', 'host', 'projectId'].forEach(component => {\n if (!this[component as keyof DsnComponents]) {\n throw new SentryError(ERROR_MESSAGE);\n }\n });\n\n if (this.protocol !== 'http' && this.protocol !== 'https') {\n throw new SentryError(ERROR_MESSAGE);\n }\n\n if (this.port && isNaN(parseInt(this.port, 10))) {\n throw new SentryError(ERROR_MESSAGE);\n }\n }\n}\n","import { DsnLike } from '@sentry/types';\nimport { Dsn, urlEncode } from '@sentry/utils';\n\nconst SENTRY_API_VERSION = '7';\n\n/** Helper class to provide urls to different Sentry endpoints. */\nexport class API {\n /** The internally used Dsn object. */\n private readonly _dsnObject: Dsn;\n /** Create a new instance of API */\n public constructor(public dsn: DsnLike) {\n this._dsnObject = new Dsn(dsn);\n }\n\n /** Returns the Dsn object. */\n public getDsn(): Dsn {\n return this._dsnObject;\n }\n\n /** Returns a string with auth headers in the url to the store endpoint. */\n public getStoreEndpoint(): string {\n return `${this._getBaseUrl()}${this.getStoreEndpointPath()}`;\n }\n\n /** Returns the store endpoint with auth added in url encoded. */\n public getStoreEndpointWithUrlEncodedAuth(): string {\n const dsn = this._dsnObject;\n const auth = {\n sentry_key: dsn.user, // sentry_key is currently used in tracing integration to identify internal sentry requests\n sentry_version: SENTRY_API_VERSION,\n };\n // Auth is intentionally sent as part of query string (NOT as custom HTTP header)\n // to avoid preflight CORS requests\n return `${this.getStoreEndpoint()}?${urlEncode(auth)}`;\n }\n\n /** Returns the base path of the url including the port. */\n private _getBaseUrl(): string {\n const dsn = this._dsnObject;\n const protocol = dsn.protocol ? `${dsn.protocol}:` : '';\n const port = dsn.port ? `:${dsn.port}` : '';\n return `${protocol}//${dsn.host}${port}`;\n }\n\n /** Returns only the path component for the store endpoint. */\n public getStoreEndpointPath(): string {\n const dsn = this._dsnObject;\n return `${dsn.path ? `/${dsn.path}` : ''}/api/${dsn.projectId}/store/`;\n }\n\n /** Returns an object that can be used in request headers. */\n public getRequestHeaders(clientName: string, clientVersion: string): { [key: string]: string } {\n const dsn = this._dsnObject;\n const header = [`Sentry sentry_version=${SENTRY_API_VERSION}`];\n header.push(`sentry_client=${clientName}/${clientVersion}`);\n header.push(`sentry_key=${dsn.user}`);\n if (dsn.pass) {\n header.push(`sentry_secret=${dsn.pass}`);\n }\n return {\n 'Content-Type': 'application/json',\n 'X-Sentry-Auth': header.join(', '),\n };\n }\n\n /** Returns the url to the report dialog endpoint. */\n public getReportDialogEndpoint(\n dialogOptions: {\n [key: string]: any;\n user?: { name?: string; email?: string };\n } = {},\n ): string {\n const dsn = this._dsnObject;\n const endpoint = `${this._getBaseUrl()}${dsn.path ? `/${dsn.path}` : ''}/api/embed/error-page/`;\n\n const encodedOptions = [];\n encodedOptions.push(`dsn=${dsn.toString()}`);\n for (const key in dialogOptions) {\n if (key === 'user') {\n if (!dialogOptions.user) {\n continue;\n }\n if (dialogOptions.user.name) {\n encodedOptions.push(`name=${encodeURIComponent(dialogOptions.user.name)}`);\n }\n if (dialogOptions.user.email) {\n encodedOptions.push(`email=${encodeURIComponent(dialogOptions.user.email)}`);\n }\n } else {\n encodedOptions.push(`${encodeURIComponent(key)}=${encodeURIComponent(dialogOptions[key] as string)}`);\n }\n }\n if (encodedOptions.length) {\n return `${endpoint}?${encodedOptions.join('&')}`;\n }\n\n return endpoint;\n }\n}\n","import { Scope } from '@sentry/hub';\nimport { Client, Event, EventHint, Integration, IntegrationClass, Options, SdkInfo, Severity } from '@sentry/types';\nimport { Dsn, isPrimitive, isThenable, logger, normalize, SyncPromise, truncate, uuid4 } from '@sentry/utils';\n\nimport { Backend, BackendClass } from './basebackend';\nimport { IntegrationIndex, setupIntegrations } from './integration';\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding backend constructor and options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}. Also, the Backend instance is available via\n * {@link Client.getBackend}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event via the backend, it is passed through\n * {@link BaseClient.prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(NodeBackend, options);\n * }\n *\n * // ...\n * }\n */\nexport abstract class BaseClient implements Client {\n /**\n * The backend used to physically interact in the enviornment. Usually, this\n * will correspond to the client. When composing SDKs, however, the Backend\n * from the root SDK will be used.\n */\n protected readonly _backend: B;\n\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n protected readonly _dsn?: Dsn;\n\n /** Array of used integrations. */\n protected _integrations: IntegrationIndex = {};\n\n /** Is the client still processing a call? */\n protected _processing: boolean = false;\n\n /**\n * Initializes this client instance.\n *\n * @param backendClass A constructor function to create the backend.\n * @param options Options for the client.\n */\n protected constructor(backendClass: BackendClass, options: O) {\n this._backend = new backendClass(options);\n this._options = options;\n\n if (options.dsn) {\n this._dsn = new Dsn(options.dsn);\n }\n }\n\n /**\n * @inheritDoc\n */\n public captureException(exception: any, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n this._processing = true;\n\n this._getBackend()\n .eventFromException(exception, hint)\n .then(event => this._processEvent(event, hint, scope))\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureMessage(message: string, level?: Severity, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n\n this._processing = true;\n\n const promisedEvent = isPrimitive(message)\n ? this._getBackend().eventFromMessage(`${message}`, level, hint)\n : this._getBackend().eventFromException(message, hint);\n\n promisedEvent\n .then(event => this._processEvent(event, hint, scope))\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public captureEvent(event: Event, hint?: EventHint, scope?: Scope): string | undefined {\n let eventId: string | undefined = hint && hint.event_id;\n this._processing = true;\n\n this._processEvent(event, hint, scope)\n .then(finalEvent => {\n // We need to check for finalEvent in case beforeSend returned null\n eventId = finalEvent && finalEvent.event_id;\n this._processing = false;\n })\n .then(null, reason => {\n logger.error(reason);\n this._processing = false;\n });\n\n return eventId;\n }\n\n /**\n * @inheritDoc\n */\n public getDsn(): Dsn | undefined {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n public getOptions(): O {\n return this._options;\n }\n\n /**\n * @inheritDoc\n */\n public flush(timeout?: number): PromiseLike {\n return this._isClientProcessing(timeout).then(status => {\n clearInterval(status.interval);\n return this._getBackend()\n .getTransport()\n .close(timeout)\n .then(transportFlushed => status.ready && transportFlushed);\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n return result;\n });\n }\n\n /**\n * Sets up the integrations\n */\n public setupIntegrations(): void {\n if (this._isEnabled()) {\n this._integrations = setupIntegrations(this._options);\n }\n }\n\n /**\n * @inheritDoc\n */\n public getIntegration(integration: IntegrationClass): T | null {\n try {\n return (this._integrations[integration.id] as T) || null;\n } catch (_oO) {\n logger.warn(`Cannot retrieve integration ${integration.id} from the current Client`);\n return null;\n }\n }\n\n /** Waits for the client to be done with processing. */\n protected _isClientProcessing(timeout?: number): PromiseLike<{ ready: boolean; interval: number }> {\n return new SyncPromise<{ ready: boolean; interval: number }>(resolve => {\n let ticked: number = 0;\n const tick: number = 1;\n\n let interval = 0;\n clearInterval(interval);\n\n interval = (setInterval(() => {\n if (!this._processing) {\n resolve({\n interval,\n ready: true,\n });\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n resolve({\n interval,\n ready: false,\n });\n }\n }\n }, tick) as unknown) as number;\n });\n }\n\n /** Returns the current backend. */\n protected _getBackend(): B {\n return this._backend;\n }\n\n /** Determines whether this SDK is enabled and a valid Dsn is present. */\n protected _isEnabled(): boolean {\n return this.getOptions().enabled !== false && this._dsn !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A new event with more information.\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n const { environment, release, dist, maxValueLength = 250, normalizeDepth = 3 } = this.getOptions();\n\n const prepared: Event = { ...event };\n if (prepared.environment === undefined && environment !== undefined) {\n prepared.environment = environment;\n }\n if (prepared.release === undefined && release !== undefined) {\n prepared.release = release;\n }\n\n if (prepared.dist === undefined && dist !== undefined) {\n prepared.dist = dist;\n }\n\n if (prepared.message) {\n prepared.message = truncate(prepared.message, maxValueLength);\n }\n\n const exception = prepared.exception && prepared.exception.values && prepared.exception.values[0];\n if (exception && exception.value) {\n exception.value = truncate(exception.value, maxValueLength);\n }\n\n const request = prepared.request;\n if (request && request.url) {\n request.url = truncate(request.url, maxValueLength);\n }\n\n if (prepared.event_id === undefined) {\n prepared.event_id = hint && hint.event_id ? hint.event_id : uuid4();\n }\n\n this._addIntegrations(prepared.sdk);\n\n // We prepare the result here with a resolved Event.\n let result = SyncPromise.resolve(prepared);\n\n // This should be the last thing called, since we want that\n // {@link Hub.addEventProcessor} gets the finished prepared event.\n if (scope) {\n // In case we have a hub we reassign it.\n result = scope.applyToEvent(prepared, hint);\n }\n\n return result.then(evt => {\n // tslint:disable-next-line:strict-type-predicates\n if (typeof normalizeDepth === 'number' && normalizeDepth > 0) {\n return this._normalizeEvent(evt, normalizeDepth);\n }\n return evt;\n });\n }\n\n /**\n * Applies `normalize` function on necessary `Event` attributes to make them safe for serialization.\n * Normalized keys:\n * - `breadcrumbs.data`\n * - `user`\n * - `contexts`\n * - `extra`\n * @param event Event\n * @returns Normalized event\n */\n protected _normalizeEvent(event: Event | null, depth: number): Event | null {\n if (!event) {\n return null;\n }\n\n // tslint:disable:no-unsafe-any\n return {\n ...event,\n ...(event.breadcrumbs && {\n breadcrumbs: event.breadcrumbs.map(b => ({\n ...b,\n ...(b.data && {\n data: normalize(b.data, depth),\n }),\n })),\n }),\n ...(event.user && {\n user: normalize(event.user, depth),\n }),\n ...(event.contexts && {\n contexts: normalize(event.contexts, depth),\n }),\n ...(event.extra && {\n extra: normalize(event.extra, depth),\n }),\n };\n }\n\n /**\n * This function adds all used integrations to the SDK info in the event.\n * @param sdkInfo The sdkInfo of the event that will be filled with all integrations.\n */\n protected _addIntegrations(sdkInfo?: SdkInfo): void {\n const integrationsArray = Object.keys(this._integrations);\n if (sdkInfo && integrationsArray.length > 0) {\n sdkInfo.integrations = integrationsArray;\n }\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional informartion about the original exception.\n * @param scope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n protected _processEvent(event: Event, hint?: EventHint, scope?: Scope): PromiseLike {\n const { beforeSend, sampleRate } = this.getOptions();\n\n if (!this._isEnabled()) {\n return SyncPromise.reject('SDK not enabled, will not send event.');\n }\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n if (typeof sampleRate === 'number' && Math.random() > sampleRate) {\n return SyncPromise.reject('This event has been sampled, will not send event.');\n }\n\n return new SyncPromise((resolve, reject) => {\n this._prepareEvent(event, scope, hint)\n .then(prepared => {\n if (prepared === null) {\n reject('An event processor returned null, will not send event.');\n return;\n }\n\n let finalEvent: Event | null = prepared;\n\n const isInternalException = hint && hint.data && (hint.data as { [key: string]: any }).__sentry__ === true;\n if (isInternalException || !beforeSend) {\n this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n return;\n }\n\n const beforeSendResult = beforeSend(prepared, hint);\n // tslint:disable-next-line:strict-type-predicates\n if (typeof beforeSendResult === 'undefined') {\n logger.error('`beforeSend` method has to return `null` or a valid event.');\n } else if (isThenable(beforeSendResult)) {\n this._handleAsyncBeforeSend(beforeSendResult as PromiseLike, resolve, reject);\n } else {\n finalEvent = beforeSendResult as Event | null;\n\n if (finalEvent === null) {\n logger.log('`beforeSend` returned `null`, will not send event.');\n resolve(null);\n return;\n }\n\n // From here on we are really async\n this._getBackend().sendEvent(finalEvent);\n resolve(finalEvent);\n }\n })\n .then(null, reason => {\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason as Error,\n });\n reject(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n });\n }\n\n /**\n * Resolves before send Promise and calls resolve/reject on parent SyncPromise.\n */\n private _handleAsyncBeforeSend(\n beforeSend: PromiseLike,\n resolve: (event: Event) => void,\n reject: (reason: string) => void,\n ): void {\n beforeSend\n .then(processedEvent => {\n if (processedEvent === null) {\n reject('`beforeSend` returned `null`, will not send event.');\n return;\n }\n // From here on we are really async\n this._getBackend().sendEvent(processedEvent);\n resolve(processedEvent);\n })\n .then(null, e => {\n reject(`beforeSend rejected with ${e}`);\n });\n }\n}\n","import { Event, Response, Status, Transport } from '@sentry/types';\nimport { SyncPromise } from '@sentry/utils';\n\n/** Noop transport */\nexport class NoopTransport implements Transport {\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n return SyncPromise.resolve({\n reason: `NoopTransport: Event has been skipped because no Dsn is configured.`,\n status: Status.Skipped,\n });\n }\n\n /**\n * @inheritDoc\n */\n public close(_?: number): PromiseLike {\n return SyncPromise.resolve(true);\n }\n}\n","import { Event, EventHint, Options, Severity, Transport } from '@sentry/types';\nimport { logger, SentryError } from '@sentry/utils';\n\nimport { NoopTransport } from './transports/noop';\n\n/**\n * Internal platform-dependent Sentry SDK Backend.\n *\n * While {@link Client} contains business logic specific to an SDK, the\n * Backend offers platform specific implementations for low-level operations.\n * These are persisting and loading information, sending events, and hooking\n * into the environment.\n *\n * Backends receive a handle to the Client in their constructor. When a\n * Backend automatically generates events, it must pass them to\n * the Client for validation and processing first.\n *\n * Usually, the Client will be of corresponding type, e.g. NodeBackend\n * receives NodeClient. However, higher-level SDKs can choose to instanciate\n * multiple Backends and delegate tasks between them. In this case, an event\n * generated by one backend might very well be sent by another one.\n *\n * The client also provides access to options via {@link Client.getOptions}.\n * @hidden\n */\nexport interface Backend {\n /** Creates a {@link Event} from an exception. */\n eventFromException(exception: any, hint?: EventHint): PromiseLike;\n\n /** Creates a {@link Event} from a plain message. */\n eventFromMessage(message: string, level?: Severity, hint?: EventHint): PromiseLike;\n\n /** Submits the event to Sentry */\n sendEvent(event: Event): void;\n\n /**\n * Returns the transport that is used by the backend.\n * Please note that the transport gets lazy initialized so it will only be there once the first event has been sent.\n *\n * @returns The transport.\n */\n getTransport(): Transport;\n}\n\n/**\n * A class object that can instanciate Backend objects.\n * @hidden\n */\nexport type BackendClass = new (options: O) => B;\n\n/**\n * This is the base implemention of a Backend.\n * @hidden\n */\nexport abstract class BaseBackend implements Backend {\n /** Options passed to the SDK. */\n protected readonly _options: O;\n\n /** Cached transport used internally. */\n protected _transport: Transport;\n\n /** Creates a new backend instance. */\n public constructor(options: O) {\n this._options = options;\n if (!this._options.dsn) {\n logger.warn('No DSN provided, backend will not do anything.');\n }\n this._transport = this._setupTransport();\n }\n\n /**\n * Sets up the transport so it can be used later to send requests.\n */\n protected _setupTransport(): Transport {\n return new NoopTransport();\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(_exception: any, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromException` method');\n }\n\n /**\n * @inheritDoc\n */\n public eventFromMessage(_message: string, _level?: Severity, _hint?: EventHint): PromiseLike {\n throw new SentryError('Backend has to implement `eventFromMessage` method');\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): void {\n this._transport.sendEvent(event).then(null, reason => {\n logger.error(`Error while sending event: ${reason}`);\n });\n }\n\n /**\n * @inheritDoc\n */\n public getTransport(): Transport {\n return this._transport;\n }\n}\n","import { SentryError } from './error';\nimport { SyncPromise } from './syncpromise';\n\n/** A simple queue that holds promises. */\nexport class PromiseBuffer {\n public constructor(protected _limit?: number) {}\n\n /** Internal set of queued Promises */\n private readonly _buffer: Array> = [];\n\n /**\n * Says if the buffer is ready to take more requests\n */\n public isReady(): boolean {\n return this._limit === undefined || this.length() < this._limit;\n }\n\n /**\n * Add a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns The original promise.\n */\n public add(task: PromiseLike): PromiseLike {\n if (!this.isReady()) {\n return SyncPromise.reject(new SentryError('Not adding Promise due to buffer limit reached.'));\n }\n if (this._buffer.indexOf(task) === -1) {\n this._buffer.push(task);\n }\n task\n .then(() => this.remove(task))\n .then(null, () =>\n this.remove(task).then(null, () => {\n // We have to add this catch here otherwise we have an unhandledPromiseRejection\n // because it's a new Promise chain.\n }),\n );\n return task;\n }\n\n /**\n * Remove a promise to the queue.\n *\n * @param task Can be any PromiseLike\n * @returns Removed promise.\n */\n public remove(task: PromiseLike): PromiseLike {\n const removedTask = this._buffer.splice(this._buffer.indexOf(task), 1)[0];\n return removedTask;\n }\n\n /**\n * This function returns the number of unresolved promises in the queue.\n */\n public length(): number {\n return this._buffer.length;\n }\n\n /**\n * This will drain the whole queue, returns true if queue is empty or drained.\n * If timeout is provided and the queue takes longer to drain, the promise still resolves but with false.\n *\n * @param timeout Number in ms to wait until it resolves with false.\n */\n public drain(timeout?: number): PromiseLike {\n return new SyncPromise(resolve => {\n const capturedSetTimeout = setTimeout(() => {\n if (timeout && timeout > 0) {\n resolve(false);\n }\n }, timeout);\n SyncPromise.all(this._buffer)\n .then(() => {\n clearTimeout(capturedSetTimeout);\n resolve(true);\n })\n .then(null, () => {\n resolve(true);\n });\n });\n }\n}\n","import { API } from '@sentry/core';\nimport { Event, Response, Transport, TransportOptions } from '@sentry/types';\nimport { PromiseBuffer, SentryError } from '@sentry/utils';\n\n/** Base Transport class implementation */\nexport abstract class BaseTransport implements Transport {\n /**\n * @inheritDoc\n */\n public url: string;\n\n /** A simple buffer holding all requests. */\n protected readonly _buffer: PromiseBuffer = new PromiseBuffer(30);\n\n public constructor(public options: TransportOptions) {\n this.url = new API(this.options.dsn).getStoreEndpointWithUrlEncodedAuth();\n }\n\n /**\n * @inheritDoc\n */\n public sendEvent(_: Event): PromiseLike {\n throw new SentryError('Transport Class has to implement `sendEvent` method');\n }\n\n /**\n * @inheritDoc\n */\n public close(timeout?: number): PromiseLike {\n return this._buffer.drain(timeout);\n }\n}\n","import { Event, Response, Status } from '@sentry/types';\nimport { getGlobalObject, logger, parseRetryAfterHeader, supportsReferrerPolicy, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\nconst global = getGlobalObject();\n\n/** `fetch` based transport */\nexport class FetchTransport extends BaseTransport {\n /** Locks transport after receiving 429 response */\n private _disabledUntil: Date = new Date(Date.now());\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event,\n reason: `Transport locked till ${this._disabledUntil} due to too many requests.`,\n status: 429,\n });\n }\n\n const defaultOptions: RequestInit = {\n body: JSON.stringify(event),\n method: 'POST',\n // Despite all stars in the sky saying that Edge supports old draft syntax, aka 'never', 'always', 'origin' and 'default\n // https://caniuse.com/#feat=referrer-policy\n // It doesn't. And it throw exception instead of ignoring this parameter...\n // REF: https://github.com/getsentry/raven-js/issues/1233\n referrerPolicy: (supportsReferrerPolicy() ? 'origin' : '') as ReferrerPolicy,\n };\n\n if (this.options.headers !== undefined) {\n defaultOptions.headers = this.options.headers;\n }\n\n return this._buffer.add(\n new SyncPromise((resolve, reject) => {\n global\n .fetch(this.url, defaultOptions)\n .then(response => {\n const status = Status.fromHttpCode(response.status);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n if (status === Status.RateLimit) {\n const now = Date.now();\n this._disabledUntil = new Date(now + parseRetryAfterHeader(now, response.headers.get('Retry-After')));\n logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);\n }\n\n reject(response);\n })\n .catch(reject);\n }),\n );\n }\n}\n","import { Event, Response, Status } from '@sentry/types';\nimport { logger, parseRetryAfterHeader, SyncPromise } from '@sentry/utils';\n\nimport { BaseTransport } from './base';\n\n/** `XHR` based transport */\nexport class XHRTransport extends BaseTransport {\n /** Locks transport after receiving 429 response */\n private _disabledUntil: Date = new Date(Date.now());\n\n /**\n * @inheritDoc\n */\n public sendEvent(event: Event): PromiseLike {\n if (new Date(Date.now()) < this._disabledUntil) {\n return Promise.reject({\n event,\n reason: `Transport locked till ${this._disabledUntil} due to too many requests.`,\n status: 429,\n });\n }\n\n return this._buffer.add(\n new SyncPromise((resolve, reject) => {\n const request = new XMLHttpRequest();\n\n request.onreadystatechange = () => {\n if (request.readyState !== 4) {\n return;\n }\n\n const status = Status.fromHttpCode(request.status);\n\n if (status === Status.Success) {\n resolve({ status });\n return;\n }\n\n if (status === Status.RateLimit) {\n const now = Date.now();\n this._disabledUntil = new Date(now + parseRetryAfterHeader(now, request.getResponseHeader('Retry-After')));\n logger.warn(`Too many requests, backing off till: ${this._disabledUntil}`);\n }\n\n reject(request);\n };\n\n request.open('POST', this.url);\n for (const header in this.options.headers) {\n if (this.options.headers.hasOwnProperty(header)) {\n request.setRequestHeader(header, this.options.headers[header]);\n }\n }\n request.send(JSON.stringify(event));\n }),\n );\n }\n}\n","import { BaseBackend } from '@sentry/core';\nimport { Event, EventHint, Options, Severity, Transport } from '@sentry/types';\nimport { addExceptionMechanism, supportsFetch, SyncPromise } from '@sentry/utils';\n\nimport { eventFromString, eventFromUnknownInput } from './eventbuilder';\nimport { FetchTransport, XHRTransport } from './transports';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see BrowserClient for more information.\n */\nexport interface BrowserOptions extends Options {\n /**\n * A pattern for error URLs which should not be sent to Sentry.\n * To whitelist certain errors instead, use {@link Options.whitelistUrls}.\n * By default, all errors will be sent.\n */\n blacklistUrls?: Array;\n\n /**\n * A pattern for error URLs which should exclusively be sent to Sentry.\n * This is the opposite of {@link Options.blacklistUrls}.\n * By default, all errors will be sent.\n */\n whitelistUrls?: Array;\n}\n\n/**\n * The Sentry Browser SDK Backend.\n * @hidden\n */\nexport class BrowserBackend extends BaseBackend {\n /**\n * @inheritDoc\n */\n protected _setupTransport(): Transport {\n if (!this._options.dsn) {\n // We return the noop transport here in case there is no Dsn.\n return super._setupTransport();\n }\n\n const transportOptions = {\n ...this._options.transportOptions,\n dsn: this._options.dsn,\n };\n\n if (this._options.transport) {\n return new this._options.transport(transportOptions);\n }\n if (supportsFetch()) {\n return new FetchTransport(transportOptions);\n }\n return new XHRTransport(transportOptions);\n }\n\n /**\n * @inheritDoc\n */\n public eventFromException(exception: any, hint?: EventHint): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(exception, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n addExceptionMechanism(event, {\n handled: true,\n type: 'generic',\n });\n event.level = Severity.Error;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n }\n /**\n * @inheritDoc\n */\n public eventFromMessage(message: string, level: Severity = Severity.Info, hint?: EventHint): PromiseLike {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(message, syntheticException, {\n attachStacktrace: this._options.attachStacktrace,\n });\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return SyncPromise.resolve(event);\n }\n}\n","export const SDK_NAME = 'sentry.javascript.browser';\nexport const SDK_VERSION = '5.15.5';\n","import { API, BaseClient, Scope } from '@sentry/core';\nimport { DsnLike, Event, EventHint } from '@sentry/types';\nimport { getGlobalObject, logger } from '@sentry/utils';\n\nimport { BrowserBackend, BrowserOptions } from './backend';\nimport { SDK_NAME, SDK_VERSION } from './version';\n\n/**\n * All properties the report dialog supports\n */\nexport interface ReportDialogOptions {\n [key: string]: any;\n eventId?: string;\n dsn?: DsnLike;\n user?: {\n email?: string;\n name?: string;\n };\n lang?: string;\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n labelName?: string;\n labelEmail?: string;\n labelComments?: string;\n labelClose?: string;\n labelSubmit?: string;\n errorGeneric?: string;\n errorFormEntry?: string;\n successMessage?: string;\n /** Callback after reportDialog showed up */\n onLoad?(): void;\n}\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nexport class BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n public constructor(options: BrowserOptions = {}) {\n super(BrowserBackend, options);\n }\n\n /**\n * @inheritDoc\n */\n protected _prepareEvent(event: Event, scope?: Scope, hint?: EventHint): PromiseLike {\n event.platform = event.platform || 'javascript';\n event.sdk = {\n ...event.sdk,\n name: SDK_NAME,\n packages: [\n ...((event.sdk && event.sdk.packages) || []),\n {\n name: 'npm:@sentry/browser',\n version: SDK_VERSION,\n },\n ],\n version: SDK_VERSION,\n };\n\n return super._prepareEvent(event, scope, hint);\n }\n\n /**\n * Show a report dialog to the user to send feedback to a specific event.\n *\n * @param options Set individual options for the dialog\n */\n public showReportDialog(options: ReportDialogOptions = {}): void {\n // doesn't work without a document (React Native)\n const document = getGlobalObject().document;\n if (!document) {\n return;\n }\n\n if (!this._isEnabled()) {\n logger.error('Trying to call showReportDialog with Sentry Client is disabled');\n return;\n }\n\n const dsn = options.dsn || this.getDsn();\n\n if (!options.eventId) {\n logger.error('Missing `eventId` option in showReportDialog call');\n return;\n }\n\n if (!dsn) {\n logger.error('Missing `Dsn` option in showReportDialog call');\n return;\n }\n\n const script = document.createElement('script');\n script.async = true;\n script.src = new API(dsn).getReportDialogEndpoint(options);\n\n if (options.onLoad) {\n script.onload = options.onLoad;\n }\n\n (document.head || document.body).appendChild(script);\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/hub';\nimport { Event, Integration } from '@sentry/types';\nimport { getEventDescription, isMatchingPattern, logger } from '@sentry/utils';\n\n// \"Script error.\" is hard coded into browsers for errors that it can't read.\n// this is the result of a script being pulled in from an external domain and CORS.\nconst DEFAULT_IGNORE_ERRORS = [/^Script error\\.?$/, /^Javascript error: Script error\\.? on line 0$/];\n\n/** JSDoc */\ninterface InboundFiltersOptions {\n blacklistUrls?: Array;\n ignoreErrors?: Array;\n ignoreInternal?: boolean;\n whitelistUrls?: Array;\n}\n\n/** Inbound filters configurable by the user */\nexport class InboundFilters implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = InboundFilters.id;\n /**\n * @inheritDoc\n */\n public static id: string = 'InboundFilters';\n\n public constructor(private readonly _options: InboundFiltersOptions = {}) {}\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n const hub = getCurrentHub();\n if (!hub) {\n return event;\n }\n const self = hub.getIntegration(InboundFilters);\n if (self) {\n const client = hub.getClient();\n const clientOptions = client ? client.getOptions() : {};\n const options = self._mergeOptions(clientOptions);\n if (self._shouldDropEvent(event, options)) {\n return null;\n }\n }\n return event;\n });\n }\n\n /** JSDoc */\n private _shouldDropEvent(event: Event, options: InboundFiltersOptions): boolean {\n if (this._isSentryError(event, options)) {\n logger.warn(`Event dropped due to being internal Sentry Error.\\nEvent: ${getEventDescription(event)}`);\n return true;\n }\n if (this._isIgnoredError(event, options)) {\n logger.warn(\n `Event dropped due to being matched by \\`ignoreErrors\\` option.\\nEvent: ${getEventDescription(event)}`,\n );\n return true;\n }\n if (this._isBlacklistedUrl(event, options)) {\n logger.warn(\n `Event dropped due to being matched by \\`blacklistUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${this._getEventFilterUrl(event)}`,\n );\n return true;\n }\n if (!this._isWhitelistedUrl(event, options)) {\n logger.warn(\n `Event dropped due to not being matched by \\`whitelistUrls\\` option.\\nEvent: ${getEventDescription(\n event,\n )}.\\nUrl: ${this._getEventFilterUrl(event)}`,\n );\n return true;\n }\n return false;\n }\n\n /** JSDoc */\n private _isSentryError(event: Event, options: InboundFiltersOptions = {}): boolean {\n if (!options.ignoreInternal) {\n return false;\n }\n\n try {\n return (\n (event &&\n event.exception &&\n event.exception.values &&\n event.exception.values[0] &&\n event.exception.values[0].type === 'SentryError') ||\n false\n );\n } catch (_oO) {\n return false;\n }\n }\n\n /** JSDoc */\n private _isIgnoredError(event: Event, options: InboundFiltersOptions = {}): boolean {\n if (!options.ignoreErrors || !options.ignoreErrors.length) {\n return false;\n }\n\n return this._getPossibleEventMessages(event).some(message =>\n // Not sure why TypeScript complains here...\n (options.ignoreErrors as Array).some(pattern => isMatchingPattern(message, pattern)),\n );\n }\n\n /** JSDoc */\n private _isBlacklistedUrl(event: Event, options: InboundFiltersOptions = {}): boolean {\n // TODO: Use Glob instead?\n if (!options.blacklistUrls || !options.blacklistUrls.length) {\n return false;\n }\n const url = this._getEventFilterUrl(event);\n return !url ? false : options.blacklistUrls.some(pattern => isMatchingPattern(url, pattern));\n }\n\n /** JSDoc */\n private _isWhitelistedUrl(event: Event, options: InboundFiltersOptions = {}): boolean {\n // TODO: Use Glob instead?\n if (!options.whitelistUrls || !options.whitelistUrls.length) {\n return true;\n }\n const url = this._getEventFilterUrl(event);\n return !url ? true : options.whitelistUrls.some(pattern => isMatchingPattern(url, pattern));\n }\n\n /** JSDoc */\n private _mergeOptions(clientOptions: InboundFiltersOptions = {}): InboundFiltersOptions {\n return {\n blacklistUrls: [...(this._options.blacklistUrls || []), ...(clientOptions.blacklistUrls || [])],\n ignoreErrors: [\n ...(this._options.ignoreErrors || []),\n ...(clientOptions.ignoreErrors || []),\n ...DEFAULT_IGNORE_ERRORS,\n ],\n ignoreInternal: typeof this._options.ignoreInternal !== 'undefined' ? this._options.ignoreInternal : true,\n whitelistUrls: [...(this._options.whitelistUrls || []), ...(clientOptions.whitelistUrls || [])],\n };\n }\n\n /** JSDoc */\n private _getPossibleEventMessages(event: Event): string[] {\n if (event.message) {\n return [event.message];\n }\n if (event.exception) {\n try {\n const { type = '', value = '' } = (event.exception.values && event.exception.values[0]) || {};\n return [`${value}`, `${type}: ${value}`];\n } catch (oO) {\n logger.error(`Cannot extract message for event ${getEventDescription(event)}`);\n return [];\n }\n }\n return [];\n }\n\n /** JSDoc */\n private _getEventFilterUrl(event: Event): string | null {\n try {\n if (event.stacktrace) {\n const frames = event.stacktrace.frames;\n return (frames && frames[frames.length - 1].filename) || null;\n }\n if (event.exception) {\n const frames =\n event.exception.values && event.exception.values[0].stacktrace && event.exception.values[0].stacktrace.frames;\n return (frames && frames[frames.length - 1].filename) || null;\n }\n return null;\n } catch (oO) {\n logger.error(`Cannot extract url for event ${getEventDescription(event)}`);\n return null;\n }\n }\n}\n","import { Integration, WrappedFunction } from '@sentry/types';\nimport { fill, getFunctionName, getGlobalObject } from '@sentry/utils';\n\nimport { wrap } from '../helpers';\n\ntype XMLHttpRequestProp = 'onload' | 'onerror' | 'onprogress' | 'onreadystatechange';\n\n/** Wrap timer functions and event targets to catch errors and provide better meta data */\nexport class TryCatch implements Integration {\n /** JSDoc */\n private _ignoreOnError: number = 0;\n\n /**\n * @inheritDoc\n */\n public name: string = TryCatch.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'TryCatch';\n\n /** JSDoc */\n private _wrapTimeFunction(original: () => void): () => number {\n return function(this: any, ...args: any[]): number {\n const originalCallback = args[0];\n args[0] = wrap(originalCallback, {\n mechanism: {\n data: { function: getFunctionName(original) },\n handled: true,\n type: 'instrument',\n },\n });\n return original.apply(this, args);\n };\n }\n\n /** JSDoc */\n private _wrapRAF(original: any): (callback: () => void) => any {\n return function(this: any, callback: () => void): () => void {\n return original(\n wrap(callback, {\n mechanism: {\n data: {\n function: 'requestAnimationFrame',\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n }),\n );\n };\n }\n\n /** JSDoc */\n private _wrapEventTarget(target: string): void {\n const global = getGlobalObject() as { [key: string]: any };\n const proto = global[target] && global[target].prototype;\n\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function(\n original: () => void,\n ): (eventName: string, fn: EventListenerObject, options?: boolean | AddEventListenerOptions) => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): (eventName: string, fn: EventListenerObject, capture?: boolean, secure?: boolean) => void {\n try {\n // tslint:disable-next-line:no-unbound-method strict-type-predicates\n if (typeof fn.handleEvent === 'function') {\n fn.handleEvent = wrap(fn.handleEvent.bind(fn), {\n mechanism: {\n data: {\n function: 'handleEvent',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n });\n }\n } catch (err) {\n // can sometimes get 'Permission denied to access property \"handle Event'\n }\n\n return original.call(\n this,\n eventName,\n wrap((fn as any) as WrappedFunction, {\n mechanism: {\n data: {\n function: 'addEventListener',\n handler: getFunctionName(fn),\n target,\n },\n handled: true,\n type: 'instrument',\n },\n }),\n options,\n );\n };\n });\n\n fill(proto, 'removeEventListener', function(\n original: () => void,\n ): (this: any, eventName: string, fn: EventListenerObject, options?: boolean | EventListenerOptions) => () => void {\n return function(\n this: any,\n eventName: string,\n fn: EventListenerObject,\n options?: boolean | EventListenerOptions,\n ): () => void {\n let callback = (fn as any) as WrappedFunction;\n try {\n callback = callback && (callback.__sentry_wrapped__ || callback);\n } catch (e) {\n // ignore, accessing __sentry_wrapped__ will throw in some Selenium environments\n }\n return original.call(this, eventName, callback, options);\n };\n });\n }\n\n /** JSDoc */\n private _wrapXHR(originalSend: () => void): () => void {\n return function(this: XMLHttpRequest, ...args: any[]): void {\n const xhr = this; // tslint:disable-line:no-this-assignment\n const xmlHttpRequestProps: XMLHttpRequestProp[] = ['onload', 'onerror', 'onprogress', 'onreadystatechange'];\n\n xmlHttpRequestProps.forEach(prop => {\n if (prop in xhr && typeof xhr[prop] === 'function') {\n fill(xhr, prop, function(original: WrappedFunction): Function {\n const wrapOptions = {\n mechanism: {\n data: {\n function: prop,\n handler: getFunctionName(original),\n },\n handled: true,\n type: 'instrument',\n },\n };\n\n // If Instrument integration has been called before TryCatch, get the name of original function\n if (original.__sentry_original__) {\n wrapOptions.mechanism.data.handler = getFunctionName(original.__sentry_original__);\n }\n\n // Otherwise wrap directly\n return wrap(original, wrapOptions);\n });\n }\n });\n\n return originalSend.apply(this, args);\n };\n }\n\n /**\n * Wrap timer functions and event targets to catch errors\n * and provide better metadata.\n */\n public setupOnce(): void {\n this._ignoreOnError = this._ignoreOnError;\n\n const global = getGlobalObject();\n\n fill(global, 'setTimeout', this._wrapTimeFunction.bind(this));\n fill(global, 'setInterval', this._wrapTimeFunction.bind(this));\n fill(global, 'requestAnimationFrame', this._wrapRAF.bind(this));\n\n if ('XMLHttpRequest' in global) {\n fill(XMLHttpRequest.prototype, 'send', this._wrapXHR.bind(this));\n }\n\n [\n 'EventTarget',\n 'Window',\n 'Node',\n 'ApplicationCache',\n 'AudioTrackList',\n 'ChannelMergerNode',\n 'CryptoOperation',\n 'EventSource',\n 'FileReader',\n 'HTMLUnknownElement',\n 'IDBDatabase',\n 'IDBRequest',\n 'IDBTransaction',\n 'KeyOperation',\n 'MediaController',\n 'MessagePort',\n 'ModalWindow',\n 'Notification',\n 'SVGElementInstance',\n 'Screen',\n 'TextTrack',\n 'TextTrackCue',\n 'TextTrackList',\n 'WebSocket',\n 'WebSocketWorker',\n 'Worker',\n 'XMLHttpRequest',\n 'XMLHttpRequestEventTarget',\n 'XMLHttpRequestUpload',\n ].forEach(this._wrapEventTarget.bind(this));\n }\n}\n","import { getCurrentHub } from '@sentry/core';\nimport { Event, Integration, Severity } from '@sentry/types';\nimport {\n addExceptionMechanism,\n addInstrumentationHandler,\n getLocationHref,\n isErrorEvent,\n isPrimitive,\n isString,\n logger,\n} from '@sentry/utils';\n\nimport { eventFromUnknownInput } from '../eventbuilder';\nimport { shouldIgnoreOnError } from '../helpers';\n\n/** JSDoc */\ninterface GlobalHandlersIntegrations {\n onerror: boolean;\n onunhandledrejection: boolean;\n}\n\n/** Global handlers */\nexport class GlobalHandlers implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = GlobalHandlers.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'GlobalHandlers';\n\n /** JSDoc */\n private readonly _options: GlobalHandlersIntegrations;\n\n /** JSDoc */\n private _onErrorHandlerInstalled: boolean = false;\n\n /** JSDoc */\n private _onUnhandledRejectionHandlerInstalled: boolean = false;\n\n /** JSDoc */\n public constructor(options?: GlobalHandlersIntegrations) {\n this._options = {\n onerror: true,\n onunhandledrejection: true,\n ...options,\n };\n }\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n Error.stackTraceLimit = 50;\n\n if (this._options.onerror) {\n logger.log('Global Handler attached: onerror');\n this._installGlobalOnErrorHandler();\n }\n\n if (this._options.onunhandledrejection) {\n logger.log('Global Handler attached: onunhandledrejection');\n this._installGlobalOnUnhandledRejectionHandler();\n }\n }\n\n /** JSDoc */\n private _installGlobalOnErrorHandler(): void {\n if (this._onErrorHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n callback: (data: { msg: any; url: any; line: any; column: any; error: any }) => {\n const error = data.error;\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteOnError(data.msg, data.url, data.line, data.column)\n : this._enhanceEventWithInitialFrame(\n eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: false,\n }),\n data.url,\n data.line,\n data.column,\n );\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onerror',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n },\n type: 'error',\n });\n\n this._onErrorHandlerInstalled = true;\n }\n\n /** JSDoc */\n private _installGlobalOnUnhandledRejectionHandler(): void {\n if (this._onUnhandledRejectionHandlerInstalled) {\n return;\n }\n\n addInstrumentationHandler({\n callback: (e: any) => {\n let error = e;\n\n // dig the object of the rejection out of known event types\n try {\n // PromiseRejectionEvents store the object of the rejection under 'reason'\n // see https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent\n if ('reason' in e) {\n error = e.reason;\n }\n // something, somewhere, (likely a browser extension) effectively casts PromiseRejectionEvents\n // to CustomEvents, moving the `promise` and `reason` attributes of the PRE into\n // the CustomEvent's `detail` attribute, since they're not part of CustomEvent's spec\n // see https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent and\n // https://github.com/getsentry/sentry-javascript/issues/2380\n else if ('detail' in e && 'reason' in e.detail) {\n error = e.detail.reason;\n }\n } catch (_oO) {\n // no-empty\n }\n\n const currentHub = getCurrentHub();\n const hasIntegration = currentHub.getIntegration(GlobalHandlers);\n const isFailedOwnDelivery = error && error.__sentry_own_request__ === true;\n\n if (!hasIntegration || shouldIgnoreOnError() || isFailedOwnDelivery) {\n return true;\n }\n\n const client = currentHub.getClient();\n const event = isPrimitive(error)\n ? this._eventFromIncompleteRejection(error)\n : eventFromUnknownInput(error, undefined, {\n attachStacktrace: client && client.getOptions().attachStacktrace,\n rejection: true,\n });\n\n event.level = Severity.Error;\n\n addExceptionMechanism(event, {\n handled: false,\n type: 'onunhandledrejection',\n });\n\n currentHub.captureEvent(event, {\n originalException: error,\n });\n\n return;\n },\n type: 'unhandledrejection',\n });\n\n this._onUnhandledRejectionHandlerInstalled = true;\n }\n\n /**\n * This function creates a stack from an old, error-less onerror handler.\n */\n private _eventFromIncompleteOnError(msg: any, url: any, line: any, column: any): Event {\n const ERROR_TYPES_RE = /^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i;\n\n // If 'message' is ErrorEvent, get real message from inside\n let message = isErrorEvent(msg) ? msg.message : msg;\n let name;\n\n if (isString(message)) {\n const groups = message.match(ERROR_TYPES_RE);\n if (groups) {\n name = groups[1];\n message = groups[2];\n }\n }\n\n const event = {\n exception: {\n values: [\n {\n type: name || 'Error',\n value: message,\n },\n ],\n },\n };\n\n return this._enhanceEventWithInitialFrame(event, url, line, column);\n }\n\n /**\n * This function creates an Event from an TraceKitStackTrace that has part of it missing.\n */\n private _eventFromIncompleteRejection(error: any): Event {\n return {\n exception: {\n values: [\n {\n type: 'UnhandledRejection',\n value: `Non-Error promise rejection captured with value: ${error}`,\n },\n ],\n },\n };\n }\n\n /** JSDoc */\n private _enhanceEventWithInitialFrame(event: Event, url: any, line: any, column: any): Event {\n event.exception = event.exception || {};\n event.exception.values = event.exception.values || [];\n event.exception.values[0] = event.exception.values[0] || {};\n event.exception.values[0].stacktrace = event.exception.values[0].stacktrace || {};\n event.exception.values[0].stacktrace.frames = event.exception.values[0].stacktrace.frames || [];\n\n const colno = isNaN(parseInt(column, 10)) ? undefined : column;\n const lineno = isNaN(parseInt(line, 10)) ? undefined : line;\n const filename = isString(url) && url.length > 0 ? url : getLocationHref();\n\n if (event.exception.values[0].stacktrace.frames.length === 0) {\n event.exception.values[0].stacktrace.frames.push({\n colno,\n filename,\n function: '?',\n in_app: true,\n lineno,\n });\n }\n\n return event;\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, EventHint, Exception, ExtendedError, Integration } from '@sentry/types';\nimport { isInstanceOf } from '@sentry/utils';\n\nimport { exceptionFromStacktrace } from '../parsers';\nimport { computeStackTrace } from '../tracekit';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\n/** Adds SDK info to an event. */\nexport class LinkedErrors implements Integration {\n /**\n * @inheritDoc\n */\n public readonly name: string = LinkedErrors.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'LinkedErrors';\n\n /**\n * @inheritDoc\n */\n private readonly _key: string;\n\n /**\n * @inheritDoc\n */\n private readonly _limit: number;\n\n /**\n * @inheritDoc\n */\n public constructor(options: { key?: string; limit?: number } = {}) {\n this._key = options.key || DEFAULT_KEY;\n this._limit = options.limit || DEFAULT_LIMIT;\n }\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event, hint?: EventHint) => {\n const self = getCurrentHub().getIntegration(LinkedErrors);\n if (self) {\n return self._handler(event, hint);\n }\n return event;\n });\n }\n\n /**\n * @inheritDoc\n */\n private _handler(event: Event, hint?: EventHint): Event | null {\n if (!event.exception || !event.exception.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n return event;\n }\n const linkedErrors = this._walkErrorTree(hint.originalException as ExtendedError, this._key);\n event.exception.values = [...linkedErrors, ...event.exception.values];\n return event;\n }\n\n /**\n * @inheritDoc\n */\n private _walkErrorTree(error: ExtendedError, key: string, stack: Exception[] = []): Exception[] {\n if (!isInstanceOf(error[key], Error) || stack.length + 1 >= this._limit) {\n return stack;\n }\n const stacktrace = computeStackTrace(error[key]);\n const exception = exceptionFromStacktrace(stacktrace);\n return this._walkErrorTree(error[key], key, [exception, ...stack]);\n }\n}\n","import { addGlobalEventProcessor, getCurrentHub } from '@sentry/core';\nimport { Event, Integration } from '@sentry/types';\nimport { getGlobalObject } from '@sentry/utils';\n\nconst global = getGlobalObject();\n\n/** UserAgent */\nexport class UserAgent implements Integration {\n /**\n * @inheritDoc\n */\n public name: string = UserAgent.id;\n\n /**\n * @inheritDoc\n */\n public static id: string = 'UserAgent';\n\n /**\n * @inheritDoc\n */\n public setupOnce(): void {\n addGlobalEventProcessor((event: Event) => {\n if (getCurrentHub().getIntegration(UserAgent)) {\n if (!global.navigator || !global.location) {\n return event;\n }\n\n // Request Interface: https://docs.sentry.io/development/sdk-dev/event-payloads/request/\n const request = event.request || {};\n request.url = request.url || global.location.href;\n request.headers = request.headers || {};\n request.headers['User-Agent'] = global.navigator.userAgent;\n\n return {\n ...event,\n request,\n };\n }\n return event;\n });\n }\n}\n","\n\t\timport Async from \"../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../node_modules/babel-loader/lib/index.js??ref--4!./fisica.js\") );\n\t\t\t}, \"route-fisica\");\n\t\t}\n\n\t\texport default Async(load);\n\t"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/bundle.bc132.esm.js b/docs/bundle.bc132.esm.js new file mode 100644 index 0000000..a551cf6 --- /dev/null +++ b/docs/bundle.bc132.esm.js @@ -0,0 +1,3 @@ +/*! For license information please see bundle.bc132.esm.js.LICENSE.txt */ +!function(t){function e(e){for(var n,r,o=e[0],a=e[1],c=0,s=[];c"}return t.event_id||""}function u(t){var e=i();if(!("console"in e))return t();var n=e.console,r={};["debug","info","warn","error","log","assert"].forEach((function(t){t in e.console&&n[t].__sentry_original__&&(r[t]=n[t],n[t]=n[t].__sentry_original__)}));var o=t();return Object.keys(r).forEach((function(t){n[t]=r[t]})),o}function l(t,e,n){t.exception=t.exception||{},t.exception.values=t.exception.values||[],t.exception.values[0]=t.exception.values[0]||{},t.exception.values[0].value=t.exception.values[0].value||e||"",t.exception.values[0].type=t.exception.values[0].type||n||"Error"}function f(t,e){void 0===e&&(e={});try{t.exception.values[0].mechanism=t.exception.values[0].mechanism||{},Object.keys(e).forEach((function(n){t.exception.values[0].mechanism[n]=e[n]}))}catch(t){}}function p(){try{return document.location.href}catch(t){return""}}function h(t){try{for(var e=t,n=[],r=0,o=0,i=" > ".length,a=void 0;e&&r++<5&&!("html"===(a=d(e))||r>1&&o+n.length*i+a.length>=80);)n.push(a),o+=a.length,e=e.parentNode;return n.reverse().join(" > ")}catch(t){return""}}function d(t){var e,n,r,o,i,a=t,c=[];if(!a||!a.tagName)return"";if(c.push(a.tagName.toLowerCase()),a.id&&c.push("#"+a.id),(e=a.className)&&Object(g.k)(e))for(n=e.split(/\s+/),i=0;i"}catch(t){return""}}n.d(e,"i",(function(){return o})),n.d(e,"f",(function(){return i})),n.d(e,"m",(function(){return a})),n.d(e,"k",(function(){return c})),n.d(e,"d",(function(){return s})),n.d(e,"c",(function(){return u})),n.d(e,"b",(function(){return l})),n.d(e,"a",(function(){return f})),n.d(e,"g",(function(){return p})),n.d(e,"h",(function(){return h})),n.d(e,"l",(function(){return _})),n.d(e,"j",(function(){return v})),n.d(e,"e",(function(){return y}));var g=n("E6vx"),m=(n("dbjm"),{}),b=Date.now(),E=0,O={now:function(){var t=Date.now()-b;return t{e=this.base=this.nextBase||this.__b,t(t=>{this.setState({child:t.default||t})})},this.shouldComponentUpdate=(t,o)=>(n=(o=void 0===o.child)&&void 0===n&&e?3===e.nodeType?e.data:Object(r.h)(e.nodeName,{dangerouslySetInnerHTML:{__html:e.innerHTML}}):"",!o),this.render=(t,e)=>e.child?Object(r.h)(e.child,t):n}return(e.prototype=new r.Component).constructor=e,e}},Vh2B:function(t,e,n){"use strict";var r=n("SdNZ");e.a=Object(r.a)((function(t){n.e(4).then(function(){t(n("HmML"))}.bind(null,n)).catch(n.oe)}))},WC2o:function(t,e,n){"use strict";var r=n("SdNZ");e.a=Object(r.a)((function(t){n.e(7).then(function(){t(n("EIZr"))}.bind(null,n)).catch(n.oe)}))},Y3FI:function(t,e,n){"use strict";function r(t,e){for(var n in e)t[n]=e[n];return t}function o(t,e,n){var r,o=/(?:\?([^#]*))?(#.*)?$/,i=t.match(o),a={};if(i&&i[1])for(var s=i[1].split("&"),u=0;ue.rank?-1:t.index-e.index}function a(t,e){return t.index=e,t.rank=function(t){return t.props.default?0:c(t.props.path).map(s).join("")}(t),t.props}function c(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function s(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function u(){var t;return""+((t=g&&g.location?g.location:g&&g.getCurrentLocation?g.getCurrentLocation():"undefined"!=typeof location?location:E).pathname||"")+(t.search||"")}function l(t,e){return void 0===e&&(e=!1),"string"!=typeof t&&t.url&&(e=t.replace,t=t.url),function(t){for(var e=m.length;e--;)if(m[e].canRoute(t))return!0;return!1}(t)&&function(t,e){void 0===e&&(e="push"),g&&g[e]?g[e](t):"undefined"!=typeof history&&history[e+"State"]&&history[e+"State"](null,null,t)}(t,e?"replace":"push"),f(t)}function f(t){for(var e=!1,n=0;n0},e.prototype.routeTo=function(t){this.setState({url:t});var e=this.canRoute(t);return this.updating||this.forceUpdate(),e},e.prototype.componentWillMount=function(){m.push(this),this.updating=!0},e.prototype.componentDidMount=function(){var t=this;g&&(this.unlisten=g.listen((function(e){t.routeTo(""+(e.pathname||"")+(e.search||""))}))),this.updating=!1},e.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),m.splice(m.indexOf(this),1)},e.prototype.componentWillUpdate=function(){this.updating=!0},e.prototype.componentDidUpdate=function(){this.updating=!1},e.prototype.getMatchingChildren=function(t,e,n){return t.filter(a).sort(i).map((function(t){var i=o(e,t.props.path,t.props);if(i){if(!1!==n){var a={url:e,matches:i};return r(a,i),delete a.ref,delete a.key,Object(v.cloneElement)(t,a)}return t}})).filter(Boolean)},e.prototype.render=function(t,e){var n=t.children,r=t.onChange,o=e.url,i=this.getMatchingChildren(Object(v.toChildArray)(n),o,!0),a=i[0]||null,c=this.previousUrl;return o!==c&&(this.previousUrl=o,"function"==typeof r&&r({router:this,url:o,previous:c,active:i,current:a})),a},e}(v.Component);w.subscribers=b,w.getCurrentUrl=u,w.route=l,w.Router=w,w.Route=function(t){return Object(v.createElement)(t.component,t)},w.Link=function(t){return Object(v.createElement)("a",r({onClick:h},t))},w.exec=o,e.a=w},afj4:function(){},bb6g:function(t,e,n){"use strict";function r(t,e){function n(){this.constructor=t}c(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function o(t){var e="function"==typeof Symbol&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&"number"==typeof t.length)return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function i(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var r,o,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(r=i.next()).done;)a.push(r.value)}catch(t){o={error:t}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(o)throw o.error}}return a}function a(){for(var t=[],e=0;er&&(e=r);var o=Math.max(e-60,0);o<5&&(o=0);var i=Math.min(o+140,r);return i>r-5&&(i=r),i===r&&(o=Math.max(i-140,0)),n=n.slice(o,i),o>0&&(n="'{snip} "+n),i3)for(n=[n],r=3;r2&&(e.children=B.slice.call(arguments,2)),a(t.type,e,e.key||t.key,e.ref||t.ref,null)}function T(t){var e={},n={__c:"__cC"+D++,__:t,Consumer:function(t,e){return t.children(e)},Provider:function(t){var r,o=this;return this.getChildContext||(r=[],this.getChildContext=function(){return e[n.__c]=o,e},this.shouldComponentUpdate=function(t){o.props.value!==t.value&&r.some((function(e){e.context=t.value,p(e)}))},this.sub=function(t){r.push(t);var e=t.componentWillUnmount;t.componentWillUnmount=function(){r.splice(r.indexOf(t),1),e&&e.call(t)}}),t.children}};return n.Consumer.contextType=n,n}n.r(e),n.d(e,"render",(function(){return j})),n.d(e,"hydrate",(function(){return k})),n.d(e,"createElement",(function(){return i})),n.d(e,"h",(function(){return i})),n.d(e,"Fragment",(function(){return s})),n.d(e,"createRef",(function(){return c})),n.d(e,"isValidElement",(function(){return R})),n.d(e,"Component",(function(){return u})),n.d(e,"cloneElement",(function(){return S})),n.d(e,"createContext",(function(){return T})),n.d(e,"toChildArray",(function(){return _})),n.d(e,"_unmount",(function(){return w})),n.d(e,"options",(function(){return C}));var C,R,I,P,L,N,U,D,A={},B=[],M=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;C={__e:function(t,e){for(var n,r;e=e.__;)if((n=e.__c)&&!n.__)try{if(n.constructor&&null!=n.constructor.getDerivedStateFromError&&(r=!0,n.setState(n.constructor.getDerivedStateFromError(t))),null!=n.componentDidCatch&&(r=!0,n.componentDidCatch(t)),r)return p(n.__E=n)}catch(e){t=e}throw t}},R=function(t){return null!=t&&void 0===t.constructor},u.prototype.setState=function(t,e){var n;n=this.__s!==this.state?this.__s:this.__s=r({},this.state),"function"==typeof t&&(t=t(n,this.props)),t&&r(n,t),null!=t&&this.__v&&(e&&this.__h.push(e),p(this))},u.prototype.forceUpdate=function(t){this.__v&&(this.__e=!0,t&&this.__h.push(t),p(this))},u.prototype.render=s,I=[],P=0,L="function"==typeof Promise?Promise.prototype.then.bind(Promise.resolve()):setTimeout,U=A,D=0},mdyV:function(t,e,n){"use strict";n.r(e);var r=n("hosL");const{h:o,render:i}=r,a=t=>t&&t.default?t.default:t;if("serviceWorker"in navigator&&navigator.serviceWorker.register(n.p+"sw-esm.js"),"function"==typeof a(n("QfWi"))){let t=document.getElementById("preact_root")||document.body.firstElementChild;(()=>{let e=a(n("QfWi")),r={};const c=document.querySelector('[type="__PREACT_CLI_DATA__"]');c&&(r=JSON.parse(c.innerHTML).preRenderData||r),t=i(o(e,{CLI_DATA:{preRenderData:r}}),document.body,t)})()}},pCvA:function(t){var e;e=function(){return this}();try{e=e||new Function("return this")()}catch(t){"object"==typeof window&&(e=window)}t.exports=e},tZ4O:function(t,e,n){"use strict";(function(t){function r(t,e,n){if(e in t){var r=t[e],o=n(r);if("function"==typeof o)try{o.prototype=o.prototype||{},Object.defineProperties(o,{__sentry_original__:{enumerable:!1,value:r}})}catch(t){}t[e]=o}}function o(t){return Object.keys(t).map((function(e){return encodeURIComponent(e)+"="+encodeURIComponent(t[e])})).join("&")}function i(t){if(Object(l.d)(t)){var e=t,n={message:e.message,name:e.name,stack:e.stack};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}if(Object(l.f)(t)){var o=t,i={};i.type=o.type;try{i.target=Object(l.c)(o.target)?Object(p.h)(o.target):Object.prototype.toString.call(o.target)}catch(t){i.target=""}try{i.currentTarget=Object(l.c)(o.currentTarget)?Object(p.h)(o.currentTarget):Object.prototype.toString.call(o.currentTarget)}catch(t){i.currentTarget=""}for(var r in"undefined"!=typeof CustomEvent&&Object(l.g)(t,CustomEvent)&&(i.detail=o.detail),o)Object.prototype.hasOwnProperty.call(o,r)&&(i[r]=o);return i}return t}function a(t,e,n){void 0===e&&(e=3),void 0===n&&(n=102400);var r=s(t,e);return function(t){return function(t){return~-encodeURI(t).split(/%..|./).length}(JSON.stringify(t))}(r)>n?a(t,e-1,n):r}function c(e,n){return"domain"===n&&e&&"object"==typeof e&&e._events?"[Domain]":"domainEmitter"===n?"[DomainEmitter]":void 0!==t&&e===t?"[Global]":"undefined"!=typeof window&&e===window?"[Window]":"undefined"!=typeof document&&e===document?"[Document]":Object(l.l)(e)?"[SyntheticEvent]":"number"==typeof e&&e!=e?"[NaN]":void 0===e?"[undefined]":"function"==typeof e?"[Function: "+Object(p.e)(e)+"]":e}function s(t,e){try{return JSON.parse(JSON.stringify(t,(function(t,n){return function t(e,n,r,o){if(void 0===r&&(r=1/0),void 0===o&&(o=new f.a),0===r)return function(t){var e=Object.prototype.toString.call(t);if("string"==typeof t)return t;if("[object Object]"===e)return"[Object]";if("[object Array]"===e)return"[Array]";var n=c(t);return Object(l.i)(n)?n:e}(n);if(null!=n&&"function"==typeof n.toJSON)return n.toJSON();var a=c(n,e);if(Object(l.i)(a))return a;var s=i(n),u=Array.isArray(n)?[]:{};if(o.memoize(n))return"[Circular ~]";for(var p in s)Object.prototype.hasOwnProperty.call(s,p)&&(u[p]=t(p,s[p],r-1,o));return o.unmemoize(n),u}(t,n,e)})))}catch(t){return"**non-serializable**"}}function u(t,e){void 0===e&&(e=40);var n=Object.keys(i(t));if(n.sort(),!n.length)return"[object has no keys]";if(n[0].length>=e)return Object(h.d)(n[0],e);for(var r=n.length;r>0;r--){var o=n.slice(0,r).join(", ");if(!(o.length>e))return r===n.length?o:Object(h.d)(o,e)}return""}n.d(e,"b",(function(){return r})),n.d(e,"e",(function(){return o})),n.d(e,"d",(function(){return a})),n.d(e,"c",(function(){return s})),n.d(e,"a",(function(){return u})),n("bb6g");var l=n("E6vx"),f=n("7UEW"),p=n("3ZRO"),h=n("dbjm")}).call(this,n("pCvA"))},ve3R:function(t,e,n){"use strict";function r(){return(r=Object.assign||function(t){for(var e=1;e=0;p--){var h=a[p];"."===h?i(a,p):".."===h?(i(a,p),f++):f&&(i(a,p),f--)}if(!u)for(;f--;f)a.unshift("..");!u||""===a[0]||a[0]&&o(a[0])||a.unshift("");var d=a.join("/");return n&&"/"!==d.substr(-1)&&(d+="/"),d},v=function(t){if(!t)throw new Error("Invariant failed")},y=!("undefined"==typeof window||!window.document||!window.document.createElement),g={hashbang:{encodePath:function(t){return"!"===t.charAt(0)?t:"!/"+c(t)},decodePath:function(t){return"!"===t.charAt(0)?t.substr(1):t}},noslash:{encodePath:c,decodePath:a},slash:{encodePath:a,decodePath:a}}},z8zl:function(t,e,n){"use strict";function r(){var t=Object(st.f)();return t.__SENTRY__=t.__SENTRY__||{},t.__SENTRY__.globalEventProcessors=t.__SENTRY__.globalEventProcessors||[],t.__SENTRY__.globalEventProcessors}function o(t){r().push(t)}function i(){var t=Object(st.f)();return t.__SENTRY__=t.__SENTRY__||{extensions:{},hub:void 0},t}function a(t){var e=i(),n=u(e);return l(e,t),n}function c(){var t=i();return s(t)&&!u(t).isOlderThan(3)||l(t,new gt),Object(st.i)()?function(t){try{var e=i().__SENTRY__;if(!e||!e.extensions||!e.extensions.domain)return u(t);var n=e.extensions.domain.active;if(!n)return u(t);if(!s(n)||u(n).isOlderThan(3)){var r=u(t).getStackTop();l(n,new gt(r.client,ut.clone(r.scope)))}return u(n)}catch(e){return u(t)}}(t):u(t)}function s(t){return!!(t&&t.__SENTRY__&&t.__SENTRY__.hub)}function u(t){return t&&t.__SENTRY__&&t.__SENTRY__.hub||(t.__SENTRY__=t.__SENTRY__||{},t.__SENTRY__.hub=new gt),t.__SENTRY__.hub}function l(t,e){return!!t&&(t.__SENTRY__=t.__SENTRY__||{},t.__SENTRY__.hub=e,!0)}function f(t){for(var e=[],n=1;n]+)>|([^\)]+))\((.*)\))? in (.*):\s*$/i,o=t.stacktrace.split("\n"),i=[],a=0;a eval")>-1&&(e=Lt.exec(n[3]))?(n[1]=n[1]||"eval",n[3]=e[1],n[4]=e[2],n[5]=""):0!==a||n[5]||void 0===t.columnNumber||(o[0].column=t.columnNumber+1),r={url:n[3],func:n[1]||"?",args:n[2]?n[2].split(","):[],line:n[4]?+n[4]:null,column:n[5]?+n[5]:null}}!r.func&&r.line&&(r.func="?"),o.push(r)}return o.length?{message:C(t),name:t.name,stack:o}:null}(t))return T(e,n)}catch(t){}return{message:C(t),name:t&&t.name,stack:[],failed:!0}}function T(t,e){try{return ot.a({},t,{stack:t.stack.slice(e)})}catch(e){return t}}function C(t){var e=t&&t.message;return e?e.error&&"string"==typeof e.error.message?e.error.message:e:"No error message"}function R(t){var e=P(t.stack),n={type:t.name,value:t.message};return e&&e.length&&(n.stacktrace={frames:e}),void 0===n.type&&""===n.value&&(n.value="Unrecoverable error caught"),n}function I(t){return{exception:{values:[R(t)]}}}function P(t){if(!t||!t.length)return[];var e=t,n=e[0].func||"",r=e[e.length-1].func||"";return-1===n.indexOf("captureMessage")&&-1===n.indexOf("captureException")||(e=e.slice(1)),-1!==r.indexOf("sentryWrapped")&&(e=e.slice(0,-1)),e.map((function(t){return{colno:null===t.column?void 0:t.column,filename:t.url||e[0].url,function:t.func||"?",in_app:!0,lineno:null===t.line?void 0:t.line}})).slice(0,50).reverse()}function L(t,e,n){var r;if(void 0===n&&(n={}),Object(at.e)(t)&&t.error)return I(S(t=t.error));if(Object(at.a)(t)||Object(at.b)(t)){var o=t,i=o.name||(Object(at.a)(o)?"DOMError":"DOMException"),a=o.message?i+": "+o.message:i;return r=N(a,e,n),Object(st.b)(r,a),r}return Object(at.d)(t)?r=I(S(t)):Object(at.h)(t)||Object(at.f)(t)?(r=function(t,e,n){var r={exception:{values:[{type:Object(at.f)(t)?t.constructor.name:n?"UnhandledRejection":"Error",value:"Non-Error "+(n?"promise rejection":"exception")+" captured with keys: "+Object(wt.a)(t)}]},extra:{__serialized__:Object(wt.d)(t)}};if(e){var o=P(S(e).stack);r.stacktrace={frames:o}}return r}(t,e,n.rejection),Object(st.a)(r,{synthetic:!0}),r):(r=N(t,e,n),Object(st.b)(r,""+t,void 0),Object(st.a)(r,{synthetic:!0}),r)}function N(t,e,n){void 0===n&&(n={});var r={message:t};if(n.attachStacktrace&&e){var o=P(S(e).stack);r.stacktrace={frames:o}}return r}function U(){return Jt>0}function D(){Jt+=1,setTimeout((function(){Jt-=1}))}function A(t,e,n){if(void 0===e&&(e={}),"function"!=typeof t)return t;try{if(t.__sentry__)return t;if(t.__sentry_wrapped__)return t.__sentry_wrapped__}catch(e){return t}var r=function(){var r=Array.prototype.slice.call(arguments);try{n&&"function"==typeof n&&n.apply(this,arguments);var o=r.map((function(t){return A(t,e)}));return t.handleEvent?t.handleEvent.apply(this,o):t.apply(this,o)}catch(t){throw D(),w((function(n){n.addEventProcessor((function(t){var n=ot.a({},t);return e.mechanism&&(Object(st.b)(n,void 0,void 0),Object(st.a)(n,e.mechanism)),n.extra=ot.a({},n.extra,{arguments:r}),n})),p(t)})),t}};try{for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o]=t[o])}catch(t){}t.prototype=t.prototype||{},r.prototype=t.prototype,Object.defineProperty(t,"__sentry_wrapped__",{enumerable:!1,value:r}),Object.defineProperties(r,{__sentry__:{enumerable:!1,value:!0},__sentry_original__:{enumerable:!1,value:t}});try{Object.getOwnPropertyDescriptor(r,"name").configurable&&Object.defineProperty(r,"name",{get:function(){return t.name}})}catch(t){}return r}function B(t){t&&"string"==typeof t.type&&"function"==typeof t.callback&&($t[t.type]=$t[t.type]||[],$t[t.type].push(t.callback),function(t){if(!Vt[t])switch(Vt[t]=!0,t){case"console":"console"in Xt&&["debug","info","warn","error","log","assert"].forEach((function(t){t in Xt.console&&Object(wt.b)(Xt.console,t,(function(e){return function(){for(var n=[],r=0;r2?e[2]:void 0;if(r){var o=dt,i=String(r);dt=i,M("history",{from:o,to:i})}return t.apply(this,e)}}if(!((n=(e=Object(st.f)()).chrome)&&n.app&&n.app.runtime)&&"history"in e&&e.history.pushState&&e.history.replaceState){var e,n,r=Xt.onpopstate;Xt.onpopstate=function(){for(var t=[],e=0;e=200&&e<300?t.Success:429===e?t.RateLimit:e>=400&&e<500?t.Invalid:e>=500?t.Failed:t.Unknown}}(rt||(rt={}));var it,at=n("E6vx");!function(t){t.PENDING="PENDING",t.RESOLVED="RESOLVED",t.REJECTED="REJECTED"}(it||(it={}));var ct=function(){function t(t){var e=this;this._state=it.PENDING,this._handlers=[],this._resolve=function(t){e._setResult(it.RESOLVED,t)},this._reject=function(t){e._setResult(it.REJECTED,t)},this._setResult=function(t,n){e._state===it.PENDING&&(Object(at.m)(n)?n.then(e._resolve,e._reject):(e._state=t,e._value=n,e._executeHandlers()))},this._attachHandler=function(t){e._handlers=e._handlers.concat(t),e._executeHandlers()},this._executeHandlers=function(){if(e._state!==it.PENDING){var t=e._handlers.slice();e._handlers=[],t.forEach((function(t){t.done||(e._state===it.RESOLVED&&t.onfulfilled&&t.onfulfilled(e._value),e._state===it.REJECTED&&t.onrejected&&t.onrejected(e._value),t.done=!0)}))}};try{t(this._resolve,this._reject)}catch(t){this._reject(t)}}return t.prototype.toString=function(){return"[object SyncPromise]"},t.resolve=function(e){return new t((function(t){t(e)}))},t.reject=function(e){return new t((function(t,n){n(e)}))},t.all=function(e){return new t((function(n,r){if(Array.isArray(e))if(0!==e.length){var o=e.length,i=[];e.forEach((function(e,a){t.resolve(e).then((function(t){i[a]=t,0==(o-=1)&&n(i)})).then(null,r)}))}else n([]);else r(new TypeError("Promise.all requires an array as input."))}))},t.prototype.then=function(e,n){var r=this;return new t((function(t,o){r._attachHandler({done:!1,onfulfilled:function(n){if(e)try{return void t(e(n))}catch(t){return void o(t)}else t(n)},onrejected:function(e){if(n)try{return void t(n(e))}catch(t){return void o(t)}else o(e)}})}))},t.prototype.catch=function(t){return this.then((function(t){return t}),t)},t.prototype.finally=function(e){var n=this;return new t((function(t,r){var o,i;return n.then((function(t){i=!1,o=t,e&&e()}),(function(t){i=!0,o=t,e&&e()})).then((function(){i?r(o):t(o)}))}))},t}(),st=n("3ZRO"),ut=function(){function t(){this._notifyingListeners=!1,this._scopeListeners=[],this._eventProcessors=[],this._breadcrumbs=[],this._user={},this._tags={},this._extra={},this._context={}}return t.prototype.addScopeListener=function(t){this._scopeListeners.push(t)},t.prototype.addEventProcessor=function(t){return this._eventProcessors.push(t),this},t.prototype._notifyScopeListeners=function(){var t=this;this._notifyingListeners||(this._notifyingListeners=!0,setTimeout((function(){t._scopeListeners.forEach((function(e){e(t)})),t._notifyingListeners=!1})))},t.prototype._notifyEventProcessors=function(t,e,n,r){var o=this;return void 0===r&&(r=0),new ct((function(i,a){var c=t[r];if(null===e||"function"!=typeof c)i(e);else{var s=c(ot.a({},e),n);Object(at.m)(s)?s.then((function(e){return o._notifyEventProcessors(t,e,n,r+1).then(i)})).then(null,a):o._notifyEventProcessors(t,s,n,r+1).then(i).then(null,a)}}))},t.prototype.setUser=function(t){return this._user=t||{},this._notifyScopeListeners(),this},t.prototype.setTags=function(t){return this._tags=ot.a({},this._tags,t),this._notifyScopeListeners(),this},t.prototype.setTag=function(t,e){var n;return this._tags=ot.a({},this._tags,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setExtras=function(t){return this._extra=ot.a({},this._extra,t),this._notifyScopeListeners(),this},t.prototype.setExtra=function(t,e){var n;return this._extra=ot.a({},this._extra,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setFingerprint=function(t){return this._fingerprint=t,this._notifyScopeListeners(),this},t.prototype.setLevel=function(t){return this._level=t,this._notifyScopeListeners(),this},t.prototype.setTransaction=function(t){return this._transaction=t,this._span&&(this._span.transaction=t),this._notifyScopeListeners(),this},t.prototype.setContext=function(t,e){var n;return this._context=ot.a({},this._context,((n={})[t]=e,n)),this._notifyScopeListeners(),this},t.prototype.setSpan=function(t){return this._span=t,this._notifyScopeListeners(),this},t.prototype.getSpan=function(){return this._span},t.clone=function(e){var n=new t;return e&&(n._breadcrumbs=ot.d(e._breadcrumbs),n._tags=ot.a({},e._tags),n._extra=ot.a({},e._extra),n._context=ot.a({},e._context),n._user=e._user,n._level=e._level,n._span=e._span,n._transaction=e._transaction,n._fingerprint=e._fingerprint,n._eventProcessors=ot.d(e._eventProcessors)),n},t.prototype.clear=function(){return this._breadcrumbs=[],this._tags={},this._extra={},this._user={},this._context={},this._level=void 0,this._transaction=void 0,this._fingerprint=void 0,this._span=void 0,this._notifyScopeListeners(),this},t.prototype.addBreadcrumb=function(t,e){var n=ot.a({timestamp:Object(st.l)()},t);return this._breadcrumbs=void 0!==e&&e>=0?ot.d(this._breadcrumbs,[n]).slice(-e):ot.d(this._breadcrumbs,[n]),this._notifyScopeListeners(),this},t.prototype.clearBreadcrumbs=function(){return this._breadcrumbs=[],this._notifyScopeListeners(),this},t.prototype._applyFingerprint=function(t){t.fingerprint=t.fingerprint?Array.isArray(t.fingerprint)?t.fingerprint:[t.fingerprint]:[],this._fingerprint&&(t.fingerprint=t.fingerprint.concat(this._fingerprint)),t.fingerprint&&!t.fingerprint.length&&delete t.fingerprint},t.prototype.applyToEvent=function(t,e){return this._extra&&Object.keys(this._extra).length&&(t.extra=ot.a({},this._extra,t.extra)),this._tags&&Object.keys(this._tags).length&&(t.tags=ot.a({},this._tags,t.tags)),this._user&&Object.keys(this._user).length&&(t.user=ot.a({},this._user,t.user)),this._context&&Object.keys(this._context).length&&(t.contexts=ot.a({},this._context,t.contexts)),this._level&&(t.level=this._level),this._transaction&&(t.transaction=this._transaction),this._span&&(t.contexts=ot.a({trace:this._span.getTraceContext()},t.contexts)),this._applyFingerprint(t),t.breadcrumbs=ot.d(t.breadcrumbs||[],this._breadcrumbs),t.breadcrumbs=t.breadcrumbs.length>0?t.breadcrumbs:void 0,this._notifyEventProcessors(ot.d(r(),this._eventProcessors),t,e)},t}(),lt=Object(st.f)(),ft="Sentry Logger ",pt=function(){function t(){this._enabled=!1}return t.prototype.disable=function(){this._enabled=!1},t.prototype.enable=function(){this._enabled=!0},t.prototype.log=function(){for(var t=[],e=0;e0?t[t.length-1].scope:void 0);return this.getStack().push({client:this.getClient(),scope:e}),e},t.prototype.popScope=function(){return void 0!==this.getStack().pop()},t.prototype.withScope=function(t){var e=this.pushScope();try{t(e)}finally{this.popScope()}},t.prototype.getClient=function(){return this.getStackTop().client},t.prototype.getScope=function(){return this.getStackTop().scope},t.prototype.getStack=function(){return this._stack},t.prototype.getStackTop=function(){return this._stack[this._stack.length-1]},t.prototype.captureException=function(t,e){var n=this._lastEventId=Object(st.m)(),r=e;if(!e){var o=void 0;try{throw new Error("Sentry syntheticException")}catch(t){o=t}r={originalException:t,syntheticException:o}}return this._invokeClient("captureException",t,ot.a({},r,{event_id:n})),n},t.prototype.captureMessage=function(t,e,n){var r=this._lastEventId=Object(st.m)(),o=n;if(!n){var i=void 0;try{throw new Error(t)}catch(t){i=t}o={originalException:t,syntheticException:i}}return this._invokeClient("captureMessage",t,e,ot.a({},o,{event_id:r})),r},t.prototype.captureEvent=function(t,e){var n=this._lastEventId=Object(st.m)();return this._invokeClient("captureEvent",t,ot.a({},e,{event_id:n})),n},t.prototype.lastEventId=function(){return this._lastEventId},t.prototype.addBreadcrumb=function(t,e){var n=this.getStackTop();if(n.scope&&n.client){var r=n.client.getOptions&&n.client.getOptions()||{},o=r.beforeBreadcrumb,i=void 0===o?null:o,a=r.maxBreadcrumbs,c=void 0===a?100:a;if(!(c<=0)){var s=Object(st.l)(),u=ot.a({timestamp:s},t),l=i?Object(st.c)((function(){return i(u,e)})):u;null!==l&&n.scope.addBreadcrumb(l,Math.min(c,100))}}},t.prototype.setUser=function(t){var e=this.getStackTop();e.scope&&e.scope.setUser(t)},t.prototype.setTags=function(t){var e=this.getStackTop();e.scope&&e.scope.setTags(t)},t.prototype.setExtras=function(t){var e=this.getStackTop();e.scope&&e.scope.setExtras(t)},t.prototype.setTag=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setTag(t,e)},t.prototype.setExtra=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setExtra(t,e)},t.prototype.setContext=function(t,e){var n=this.getStackTop();n.scope&&n.scope.setContext(t,e)},t.prototype.configureScope=function(t){var e=this.getStackTop();e.scope&&e.client&&t(e.scope)},t.prototype.run=function(t){var e=a(this);try{t(this)}finally{a(e)}},t.prototype.getIntegration=function(t){var e=this.getClient();if(!e)return null;try{return e.getIntegration(t)}catch(e){return yt.warn("Cannot retrieve integration "+t.id+" from the current Hub"),null}},t.prototype.startSpan=function(t,e){return void 0===e&&(e=!1),this._callExtensionMethod("startSpan",t,e)},t.prototype.traceHeaders=function(){return this._callExtensionMethod("traceHeaders")},t.prototype._callExtensionMethod=function(t){for(var e=[],n=1;n1&&(l=p.slice(0,-1).join("/"),f=p.pop()),this._fromComponents({host:c,pass:a,path:l,projectId:f,port:u,protocol:r,user:o})},t.prototype._fromComponents=function(t){this.protocol=t.protocol,this.user=t.user,this.pass=t.pass||"",this.host=t.host,this.port=t.port||"",this.path=t.path||"",this.projectId=t.projectId},t.prototype._validate=function(){var t=this;if(["protocol","user","host","projectId"].forEach((function(e){if(!t[e])throw new bt("Invalid Dsn")})),"http"!==this.protocol&&"https"!==this.protocol)throw new bt("Invalid Dsn");if(this.port&&isNaN(parseInt(this.port,10)))throw new bt("Invalid Dsn")},t}(),wt=n("tZ4O"),xt=function(){function t(t){this.dsn=t,this._dsnObject=new Ot(t)}return t.prototype.getDsn=function(){return this._dsnObject},t.prototype.getStoreEndpoint=function(){return""+this._getBaseUrl()+this.getStoreEndpointPath()},t.prototype.getStoreEndpointWithUrlEncodedAuth=function(){var t={sentry_key:this._dsnObject.user,sentry_version:"7"};return this.getStoreEndpoint()+"?"+Object(wt.e)(t)},t.prototype._getBaseUrl=function(){var t=this._dsnObject;return(t.protocol?t.protocol+":":"")+"//"+t.host+(t.port?":"+t.port:"")},t.prototype.getStoreEndpointPath=function(){var t=this._dsnObject;return(t.path?"/"+t.path:"")+"/api/"+t.projectId+"/store/"},t.prototype.getRequestHeaders=function(t,e){var n=this._dsnObject,r=["Sentry sentry_version=7"];return r.push("sentry_client="+t+"/"+e),r.push("sentry_key="+n.user),n.pass&&r.push("sentry_secret="+n.pass),{"Content-Type":"application/json","X-Sentry-Auth":r.join(", ")}},t.prototype.getReportDialogEndpoint=function(t){void 0===t&&(t={});var e=this._dsnObject,n=this._getBaseUrl()+(e.path?"/"+e.path:"")+"/api/embed/error-page/",r=[];for(var o in r.push("dsn="+e.toString()),t)if("user"===o){if(!t.user)continue;t.user.name&&r.push("name="+encodeURIComponent(t.user.name)),t.user.email&&r.push("email="+encodeURIComponent(t.user.email))}else r.push(encodeURIComponent(o)+"="+encodeURIComponent(t[o]));return r.length?n+"?"+r.join("&"):n},t}(),jt=n("dbjm"),kt=[],St=function(){function t(t,e){this._integrations={},this._processing=!1,this._backend=new t(e),this._options=e,e.dsn&&(this._dsn=new Ot(e.dsn))}return t.prototype.captureException=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._getBackend().eventFromException(t,e).then((function(t){return r._processEvent(t,e,n)})).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){yt.error(t),r._processing=!1})),o},t.prototype.captureMessage=function(t,e,n,r){var o=this,i=n&&n.event_id;return this._processing=!0,(Object(at.i)(t)?this._getBackend().eventFromMessage(""+t,e,n):this._getBackend().eventFromException(t,n)).then((function(t){return o._processEvent(t,n,r)})).then((function(t){i=t&&t.event_id,o._processing=!1})).then(null,(function(t){yt.error(t),o._processing=!1})),i},t.prototype.captureEvent=function(t,e,n){var r=this,o=e&&e.event_id;return this._processing=!0,this._processEvent(t,e,n).then((function(t){o=t&&t.event_id,r._processing=!1})).then(null,(function(t){yt.error(t),r._processing=!1})),o},t.prototype.getDsn=function(){return this._dsn},t.prototype.getOptions=function(){return this._options},t.prototype.flush=function(t){var e=this;return this._isClientProcessing(t).then((function(n){return clearInterval(n.interval),e._getBackend().getTransport().close(t).then((function(t){return n.ready&&t}))}))},t.prototype.close=function(t){var e=this;return this.flush(t).then((function(t){return e.getOptions().enabled=!1,t}))},t.prototype.setupIntegrations=function(){this._isEnabled()&&(this._integrations=function(t){var e={};return function(t){var e=t.defaultIntegrations&&ot.d(t.defaultIntegrations)||[],n=t.integrations,r=[];if(Array.isArray(n)){var o=n.map((function(t){return t.name})),i=[];e.forEach((function(t){-1===o.indexOf(t.name)&&-1===i.indexOf(t.name)&&(r.push(t),i.push(t.name))})),n.forEach((function(t){-1===i.indexOf(t.name)&&(r.push(t),i.push(t.name))}))}else"function"==typeof n?(r=n(e),r=Array.isArray(r)?r:[r]):r=ot.d(e);var a=r.map((function(t){return t.name}));return-1!==a.indexOf("Debug")&&r.push.apply(r,ot.d(r.splice(a.indexOf("Debug"),1))),r}(t).forEach((function(t){e[t.name]=t,function(t){-1===kt.indexOf(t.name)&&(t.setupOnce(o,c),kt.push(t.name),yt.log("Integration installed: "+t.name))}(t)})),e}(this._options))},t.prototype.getIntegration=function(t){try{return this._integrations[t.id]||null}catch(e){return yt.warn("Cannot retrieve integration "+t.id+" from the current Client"),null}},t.prototype._isClientProcessing=function(t){var e=this;return new ct((function(n){var r=0,o=0;clearInterval(o),o=setInterval((function(){e._processing?(r+=1,t&&r>=t&&n({interval:o,ready:!1})):n({interval:o,ready:!0})}),1)}))},t.prototype._getBackend=function(){return this._backend},t.prototype._isEnabled=function(){return!1!==this.getOptions().enabled&&void 0!==this._dsn},t.prototype._prepareEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.environment,a=o.release,c=o.dist,s=o.maxValueLength,u=void 0===s?250:s,l=o.normalizeDepth,f=void 0===l?3:l,p=ot.a({},t);void 0===p.environment&&void 0!==i&&(p.environment=i),void 0===p.release&&void 0!==a&&(p.release=a),void 0===p.dist&&void 0!==c&&(p.dist=c),p.message&&(p.message=Object(jt.d)(p.message,u));var h=p.exception&&p.exception.values&&p.exception.values[0];h&&h.value&&(h.value=Object(jt.d)(h.value,u));var d=p.request;d&&d.url&&(d.url=Object(jt.d)(d.url,u)),void 0===p.event_id&&(p.event_id=n&&n.event_id?n.event_id:Object(st.m)()),this._addIntegrations(p.sdk);var _=ct.resolve(p);return e&&(_=e.applyToEvent(p,n)),_.then((function(t){return"number"==typeof f&&f>0?r._normalizeEvent(t,f):t}))},t.prototype._normalizeEvent=function(t,e){return t?ot.a({},t,t.breadcrumbs&&{breadcrumbs:t.breadcrumbs.map((function(t){return ot.a({},t,t.data&&{data:Object(wt.c)(t.data,e)})}))},t.user&&{user:Object(wt.c)(t.user,e)},t.contexts&&{contexts:Object(wt.c)(t.contexts,e)},t.extra&&{extra:Object(wt.c)(t.extra,e)}):null},t.prototype._addIntegrations=function(t){var e=Object.keys(this._integrations);t&&e.length>0&&(t.integrations=e)},t.prototype._processEvent=function(t,e,n){var r=this,o=this.getOptions(),i=o.beforeSend,a=o.sampleRate;return this._isEnabled()?"number"==typeof a&&Math.random()>a?ct.reject("This event has been sampled, will not send event."):new ct((function(o,a){r._prepareEvent(t,n,e).then((function(t){if(null!==t){var n=t;if(e&&e.data&&!0===e.data.__sentry__||!i)return r._getBackend().sendEvent(n),void o(n);var c=i(t,e);if(void 0===c)yt.error("`beforeSend` method has to return `null` or a valid event.");else if(Object(at.m)(c))r._handleAsyncBeforeSend(c,o,a);else{if(null===(n=c))return yt.log("`beforeSend` returned `null`, will not send event."),void o(null);r._getBackend().sendEvent(n),o(n)}}else a("An event processor returned null, will not send event.")})).then(null,(function(t){r.captureException(t,{data:{__sentry__:!0},originalException:t}),a("Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\nReason: "+t)}))})):ct.reject("SDK not enabled, will not send event.")},t.prototype._handleAsyncBeforeSend=function(t,e,n){var r=this;t.then((function(t){null!==t?(r._getBackend().sendEvent(t),e(t)):n("`beforeSend` returned `null`, will not send event.")})).then(null,(function(t){n("beforeSend rejected with "+t)}))},t}(),Tt=function(){function t(){}return t.prototype.sendEvent=function(){return ct.resolve({reason:"NoopTransport: Event has been skipped because no Dsn is configured.",status:rt.Skipped})},t.prototype.close=function(){return ct.resolve(!0)},t}(),Ct=function(){function t(t){this._options=t,this._options.dsn||yt.warn("No DSN provided, backend will not do anything."),this._transport=this._setupTransport()}return t.prototype._setupTransport=function(){return new Tt},t.prototype.eventFromException=function(){throw new bt("Backend has to implement `eventFromException` method")},t.prototype.eventFromMessage=function(){throw new bt("Backend has to implement `eventFromMessage` method")},t.prototype.sendEvent=function(t){this._transport.sendEvent(t).then(null,(function(t){yt.error("Error while sending event: "+t)}))},t.prototype.getTransport=function(){return this._transport},t}(),Rt=/^\s*at (?:(.*?) ?\()?((?:file|https?|blob|chrome-extension|address|native|eval|webpack||[-a-z]+:|.*bundle|\/).*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,It=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:file|https?|blob|chrome|webpack|resource|moz-extension).*?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js))(?::(\d+))?(?::(\d+))?\s*$/i,Pt=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:file|ms-appx|https?|webpack|blob):.*?):(\d+)(?::(\d+))?\)?\s*$/i,Lt=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,Nt=/\((\S*)(?::(\d+))(?::(\d+))\)/,Ut=function(){function t(t){this._limit=t,this._buffer=[]}return t.prototype.isReady=function(){return void 0===this._limit||this.length()0&&n(!1)}),t);ct.all(e._buffer).then((function(){clearTimeout(r),n(!0)})).then(null,(function(){n(!0)}))}))},t}(),Dt=function(){function t(t){this.options=t,this._buffer=new Ut(30),this.url=new xt(this.options.dsn).getStoreEndpointWithUrlEncodedAuth()}return t.prototype.sendEvent=function(){throw new bt("Transport Class has to implement `sendEvent` method")},t.prototype.close=function(t){return this._buffer.drain(t)},t}(),At=Object(st.f)(),Bt=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._disabledUntil=new Date(Date.now()),e}return ot.b(e,t),e.prototype.sendEvent=function(t){var e=this;if(new Date(Date.now())"}0!==e.length&&c().addBreadcrumb({category:"ui."+t.name,message:e},{event:t.event,name:t.name})},t.prototype._xhrBreadcrumb=function(t){if(t.endTimestamp){if(t.xhr.__sentry_own_request__)return;c().addBreadcrumb({category:"xhr",data:t.xhr.__sentry_xhr__,type:"http"},{xhr:t.xhr})}else this._options.sentry&&t.xhr.__sentry_own_request__&&z(t.args[0])},t.prototype._fetchBreadcrumb=function(t){if(t.endTimestamp){var e=c().getClient(),n=e&&e.getDsn();if(this._options.sentry&&n){var r=new xt(n).getStoreEndpoint();if(r&&-1!==t.fetchData.url.indexOf(r)&&"POST"===t.fetchData.method&&t.args[1]&&t.args[1].body)return void z(t.args[1].body)}t.error?c().addBreadcrumb({category:"fetch",data:ot.a({},t.fetchData,{status_code:t.response.status}),level:nt.Error,type:"http"},{data:t.error,input:t.args}):c().addBreadcrumb({category:"fetch",data:ot.a({},t.fetchData,{status_code:t.response.status}),type:"http"},{input:t.args,response:t.response})}},t.prototype._historyBreadcrumb=function(t){var e=Object(st.f)(),n=t.from,r=t.to,o=Object(st.k)(e.location.href),i=Object(st.k)(n),a=Object(st.k)(r);i.path||(i=o),o.protocol===a.protocol&&o.host===a.host&&(r=a.relative),o.protocol===i.protocol&&o.host===i.host&&(n=i.relative),c().addBreadcrumb({category:"navigation",data:{from:n,to:r}})},t.prototype.setupOnce=function(){var t=this;this._options.console&&B({callback:function(){for(var e=[],n=0;n0?e:Object(st.g)();return 0===t.exception.values[0].stacktrace.frames.length&&t.exception.values[0].stacktrace.frames.push({colno:o,filename:a,function:"?",in_app:!0,lineno:i}),t},t.id="GlobalHandlers",t}(),re=function(){function t(e){void 0===e&&(e={}),this.name=t.id,this._key=e.key||"cause",this._limit=e.limit||5}return t.prototype.setupOnce=function(){o((function(e,n){var r=c().getIntegration(t);return r?r._handler(e,n):e}))},t.prototype._handler=function(t,e){if(!(t.exception&&t.exception.values&&e&&Object(at.g)(e.originalException,Error)))return t;var n=this._walkErrorTree(e.originalException,this._key);return t.exception.values=ot.d(n,t.exception.values),t},t.prototype._walkErrorTree=function(t,e,n){if(void 0===n&&(n=[]),!Object(at.g)(t[e],Error)||n.length+1>=this._limit)return n;var r=R(S(t[e]));return this._walkErrorTree(t[e],e,ot.d([r],n))},t.id="LinkedErrors",t}(),oe=Object(st.f)(),ie=function(){function t(){this.name=t.id}return t.prototype.setupOnce=function(){o((function(e){if(c().getIntegration(t)){if(!oe.navigator||!oe.location)return e;var n=e.request||{};return n.url=n.url||oe.location.href,n.headers=n.headers||{},n.headers["User-Agent"]=oe.navigator.userAgent,ot.a({},e,{request:n})}return e}))},t.id="UserAgent",t}(),ae=[new Q.InboundFilters,new Q.FunctionToString,new Zt,new ee,new ne,new re,new ie],ce={},se=Object(st.f)();se.Sentry&&se.Sentry.Integrations&&(ce=se.Sentry.Integrations);var ue=ot.a({},ce,Q,tt)},zCbC:function(t,e,n){"use strict";var r=n("SdNZ");e.a=Object(r.a)((function(t){n.e(6).then(function(){t(n("YJDv"))}.bind(null,n)).catch(n.oe)}))}}); +//# sourceMappingURL=bundle.bc132.esm.js.map \ No newline at end of file diff --git a/docs/bundle.bc132.esm.js.LICENSE.txt b/docs/bundle.bc132.esm.js.LICENSE.txt new file mode 100644 index 0000000..f9e7dcb --- /dev/null +++ b/docs/bundle.bc132.esm.js.LICENSE.txt @@ -0,0 +1 @@ +/*! For license information please see bundle.bc132.esm.js.LICENSE.txt */ diff --git a/docs/bundle.3c959.esm.js.map b/docs/bundle.bc132.esm.js.map similarity index 66% rename from docs/bundle.3c959.esm.js.map rename to docs/bundle.bc132.esm.js.map index dc0da8b..e085851 100644 --- a/docs/bundle.3c959.esm.js.map +++ b/docs/bundle.bc132.esm.js.map @@ -1 +1 @@ -{"version":3,"sources":[],"names":[],"mappings":"","file":"bundle.3c959.esm.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[],"names":[],"mappings":"","file":"bundle.bc132.esm.js","sourceRoot":""} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 73b505a..62baa96 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -Appunti Web \ No newline at end of file +Appunti Web \ No newline at end of file diff --git a/docs/precache-manifest.84d0325c478081008190530929de9aa4.esm.js b/docs/precache-manifest.0390ab4118169cbfae2abb65617ceb50.esm.js similarity index 92% rename from docs/precache-manifest.84d0325c478081008190530929de9aa4.esm.js rename to docs/precache-manifest.0390ab4118169cbfae2abb65617ceb50.esm.js index 188fef9..fe55a9c 100644 --- a/docs/precache-manifest.84d0325c478081008190530929de9aa4.esm.js +++ b/docs/precache-manifest.0390ab4118169cbfae2abb65617ceb50.esm.js @@ -4,15 +4,15 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/assets/icon.png" }, { - "revision": "4037ec1bfd2cdcab1498", + "revision": "359c00faac3181f152c1", "url": "/bundle.24404.css" }, { - "revision": "4037ec1bfd2cdcab1498", - "url": "/bundle.3c959.esm.js" + "revision": "359c00faac3181f152c1", + "url": "/bundle.bc132.esm.js" }, { - "revision": "2d86215ed2821e24c9c0349a2ac42d7f", + "revision": "5b1464ab70abbd90fcea26a608f9e63d", "url": "/index.html" }, { diff --git a/docs/precache-manifest.25fd774f49b8e2816e43691f642e2999.js b/docs/precache-manifest.32352dd400e75886e416decfaf53690d.js similarity index 91% rename from docs/precache-manifest.25fd774f49b8e2816e43691f642e2999.js rename to docs/precache-manifest.32352dd400e75886e416decfaf53690d.js index 51a0a0d..421563e 100644 --- a/docs/precache-manifest.25fd774f49b8e2816e43691f642e2999.js +++ b/docs/precache-manifest.32352dd400e75886e416decfaf53690d.js @@ -4,15 +4,15 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/assets/icon.png" }, { - "revision": "4037ec1bfd2cdcab1498", + "revision": "359c00faac3181f152c1", "url": "/bundle.24404.css" }, { - "revision": "4037ec1bfd2cdcab1498", - "url": "/bundle.4037e.js" + "revision": "359c00faac3181f152c1", + "url": "/bundle.359c0.js" }, { - "revision": "2d86215ed2821e24c9c0349a2ac42d7f", + "revision": "5b1464ab70abbd90fcea26a608f9e63d", "url": "/index.html" }, { @@ -96,7 +96,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/sw-debug.js" }, { - "revision": "09696ca1fba735ab978522cecf292500", + "revision": "d62de81a9555faae1b05ae3ac4c52ed5", "url": "/sw-esm.js" }, { diff --git a/docs/push-manifest.json b/docs/push-manifest.json index 1adb0d3..22b65c1 100644 --- a/docs/push-manifest.json +++ b/docs/push-manifest.json @@ -1 +1 @@ -{"/":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-home.chunk.c7f13.esm.js":{"type":"script","weight":0.9},"route-home.chunk.0d277.css":{"type":"style","weight":0.9}},"/OttimizzazioneLineare":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-OttimizzazioneLineare.chunk.36935.esm.js":{"type":"script","weight":0.9},"route-OttimizzazioneLineare.chunk.05781.css":{"type":"style","weight":0.9}},"/apprendimentoSistemiArtificiali":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-apprendimentoSistemiArtificiali.chunk.2da67.esm.js":{"type":"script","weight":0.9},"route-apprendimentoSistemiArtificiali.chunk.75409.css":{"type":"style","weight":0.9}},"/basiDiDati":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-basiDiDati.chunk.5e219.esm.js":{"type":"script","weight":0.9},"route-basiDiDati.chunk.d7b86.css":{"type":"style","weight":0.9}},"/calcoloNumerico":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-calcoloNumerico.chunk.766b9.esm.js":{"type":"script","weight":0.9},"route-calcoloNumerico.chunk.0791e.css":{"type":"style","weight":0.9}},"/fisica":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-fisica.chunk.a8186.esm.js":{"type":"script","weight":0.9},"route-fisica.chunk.6a691.css":{"type":"style","weight":0.9}},"/mingwinstall":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-mingwinstall.chunk.ea807.esm.js":{"type":"script","weight":0.9},"route-mingwinstall.chunk.d169e.css":{"type":"style","weight":0.9}},"/statistica":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-statistica.chunk.0ad24.esm.js":{"type":"script","weight":0.9},"route-statistica.chunk.0b8c5.css":{"type":"style","weight":0.9}},"/vldigeometria":{"bundle.24404.css":{"type":"style","weight":1},"bundle.3c959.esm.js":{"type":"script","weight":1},"route-vldigeometria.chunk.12afa.esm.js":{"type":"script","weight":0.9},"route-vldigeometria.chunk.0c65e.css":{"type":"style","weight":0.9}}} \ No newline at end of file +{"/":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-home.chunk.c7f13.esm.js":{"type":"script","weight":0.9},"route-home.chunk.0d277.css":{"type":"style","weight":0.9}},"/OttimizzazioneLineare":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-OttimizzazioneLineare.chunk.36935.esm.js":{"type":"script","weight":0.9},"route-OttimizzazioneLineare.chunk.05781.css":{"type":"style","weight":0.9}},"/apprendimentoSistemiArtificiali":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-apprendimentoSistemiArtificiali.chunk.2da67.esm.js":{"type":"script","weight":0.9},"route-apprendimentoSistemiArtificiali.chunk.75409.css":{"type":"style","weight":0.9}},"/basiDiDati":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-basiDiDati.chunk.5e219.esm.js":{"type":"script","weight":0.9},"route-basiDiDati.chunk.d7b86.css":{"type":"style","weight":0.9}},"/calcoloNumerico":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-calcoloNumerico.chunk.766b9.esm.js":{"type":"script","weight":0.9},"route-calcoloNumerico.chunk.0791e.css":{"type":"style","weight":0.9}},"/fisica":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-fisica.chunk.a8186.esm.js":{"type":"script","weight":0.9},"route-fisica.chunk.6a691.css":{"type":"style","weight":0.9}},"/mingwinstall":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-mingwinstall.chunk.ea807.esm.js":{"type":"script","weight":0.9},"route-mingwinstall.chunk.d169e.css":{"type":"style","weight":0.9}},"/statistica":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-statistica.chunk.0ad24.esm.js":{"type":"script","weight":0.9},"route-statistica.chunk.0b8c5.css":{"type":"style","weight":0.9}},"/vldigeometria":{"bundle.24404.css":{"type":"style","weight":1},"bundle.bc132.esm.js":{"type":"script","weight":1},"route-vldigeometria.chunk.12afa.esm.js":{"type":"script","weight":0.9},"route-vldigeometria.chunk.0c65e.css":{"type":"style","weight":0.9}}} \ No newline at end of file diff --git a/docs/sw-esm.js b/docs/sw-esm.js index 510e01d..02c1dec 100644 --- a/docs/sw-esm.js +++ b/docs/sw-esm.js @@ -1,4 +1,4 @@ -importScripts("/precache-manifest.84d0325c478081008190530929de9aa4.esm.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); +importScripts("/precache-manifest.0390ab4118169cbfae2abb65617ceb50.esm.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); !function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(t){return e[t]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s="idKB")}({idKB:function(){self.__precacheManifest=[].concat(self.__precacheManifest||[]);const e=e=>"navigate"===e.request.mode;workbox.routing.registerRoute(({event:t})=>e(t),new workbox.strategies.NetworkFirst({cacheName:workbox.core.cacheNames.precache,networkTimeoutSeconds:5,plugins:[new workbox.cacheableResponse.Plugin({statuses:[200]})]})),workbox.precaching.precacheAndRoute(self.__precacheManifest,{}),workbox.routing.setCatchHandler(({event:t})=>e(t)?caches.match(workbox.precaching.getCacheKeyForURL("/index.html")):Response.error())}}); //# sourceMappingURL=sw-esm.js.map diff --git a/docs/sw.js b/docs/sw.js index c775847..4146a7f 100644 --- a/docs/sw.js +++ b/docs/sw.js @@ -1,4 +1,4 @@ -importScripts("/precache-manifest.25fd774f49b8e2816e43691f642e2999.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); +importScripts("/precache-manifest.32352dd400e75886e416decfaf53690d.js", "https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); !function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(t){return e[t]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s="idKB")}({idKB:function(){self.__precacheManifest=[].concat(self.__precacheManifest||[]);const e=e=>"navigate"===e.request.mode;workbox.routing.registerRoute(({event:t})=>e(t),new workbox.strategies.NetworkFirst({cacheName:workbox.core.cacheNames.precache,networkTimeoutSeconds:5,plugins:[new workbox.cacheableResponse.Plugin({statuses:[200]})]})),workbox.precaching.precacheAndRoute(self.__precacheManifest,{}),workbox.routing.setCatchHandler(({event:t})=>e(t)?caches.match(workbox.precaching.getCacheKeyForURL("/index.html")):Response.error())}}); //# sourceMappingURL=sw.js.map diff --git a/src/components/Parts/Footer.js b/src/components/Parts/Footer.js index 417bbe9..6c66ef8 100644 --- a/src/components/Parts/Footer.js +++ b/src/components/Parts/Footer.js @@ -3,7 +3,7 @@ import { Component } from 'preact'; export default function(props) { return ( -
+
© {new Date().getFullYear()}  -  Stefano Pigozzi diff --git a/src/index.js b/src/index.js index 938995e..3b68737 100644 --- a/src/index.js +++ b/src/index.js @@ -1,15 +1,16 @@ -import process from "process"; - let Sentry = null; -if(!process.env.NODE_ENV || process.env.NODE_ENV === "development") { +if(process.env.NODE_ENV === "development") { console.debug("Initializing Preact Debugger...") require("preact/debug"); } -else { +else if(process.env.NODE_ENV === "production") { console.debug("Initializing Sentry...") Sentry = require("@sentry/browser"); Sentry.init({dsn: "https://9f5089346fd14e04a6f412638474dfec@o40131.ingest.sentry.io/5255500"}); } +else { + console.debug("Not initializing anything, unknown env."); +} // noinspection ES6UnusedImports import _style from './index.less';
should have a
should have a