diff --git a/css/NotificationsApp-BPtPFz0N.chunk.css b/css/NotificationsApp-BPtPFz0N.chunk.css deleted file mode 100644 index f1de07a97..000000000 --- a/css/NotificationsApp-BPtPFz0N.chunk.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";.external[data-v-9803ab31]:after{content:" ↗"}.mention[data-v-85edf4b2]{display:contents;white-space:nowrap}.notification[data-v-58882784] img.notification-icon{display:flex;width:32px;height:32px;filter:var(--background-invert-if-dark)}.notification[data-v-58882784] .rich-text--wrapper{white-space:pre-wrap;overflow-wrap:break-word}.notification .notification-subject[data-v-58882784]{padding:4px}.notification a.notification-subject[data-v-58882784]:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text)!important}.notification-container[data-v-344260f0]{overflow:hidden}.notification-container[data-v-344260f0],.notification-container[data-v-344260f0] *,.notification-container[data-v-344260f0] *:before,.notification-container[data-v-344260f0] *:after{box-sizing:border-box}.notification-container .notification-wrapper[data-v-344260f0]{display:flex;flex-direction:column;max-height:calc(100vh - 250px);overflow:auto}.notification-container .dismiss-all[data-v-344260f0]{padding:calc(2 * var(--default-grid-baseline));border-top:1px solid var(--color-border)}.icon-alert-outline[data-v-344260f0]{background-size:64px;width:64px;height:64px}.fade-enter-active[data-v-344260f0],.fade-leave-active[data-v-344260f0]{transition:opacity var(--animation-quick) ease}.fade-enter-from[data-v-344260f0],.fade-leave-to[data-v-344260f0]{opacity:0}.list-move[data-v-344260f0],.list-enter-active[data-v-344260f0],.list-leave-active[data-v-344260f0]{transition:all var(--animation-quick) ease}.list-enter-from[data-v-344260f0],.list-leave-to[data-v-344260f0]{opacity:0;transform:translate(30px)}.list-leave-active[data-v-344260f0]{width:100%} diff --git a/css/NotificationsApp-DXuAZ_Q5.chunk.css b/css/NotificationsApp-DXuAZ_Q5.chunk.css new file mode 100644 index 000000000..233c01d14 --- /dev/null +++ b/css/NotificationsApp-DXuAZ_Q5.chunk.css @@ -0,0 +1 @@ +@charset "UTF-8";.external[data-v-9803ab31]:after{content:" ↗"}.mention[data-v-85edf4b2]{display:contents;white-space:nowrap}.notification[data-v-58882784] img.notification-icon{display:flex;width:32px;height:32px;filter:var(--background-invert-if-dark)}.notification[data-v-58882784] .rich-text--wrapper{white-space:pre-wrap;overflow-wrap:break-word}.notification .notification-subject[data-v-58882784]{padding:4px}.notification a.notification-subject[data-v-58882784]:focus-visible{box-shadow:inset 0 0 0 2px var(--color-main-text)!important}.notification-container[data-v-57714b57]{overflow:hidden}.notification-container[data-v-57714b57],.notification-container[data-v-57714b57] *,.notification-container[data-v-57714b57] *:before,.notification-container[data-v-57714b57] *:after{box-sizing:border-box}.notification-container .notification-wrapper[data-v-57714b57]{display:flex;flex-direction:column;max-height:calc(100vh - 250px);overflow:auto}.notification-container .dismiss-all[data-v-57714b57]{padding:calc(2 * var(--default-grid-baseline));border-top:1px solid var(--color-border)}.icon-alert-outline[data-v-57714b57]{background-size:64px;width:64px;height:64px}.fade-enter-active[data-v-57714b57],.fade-leave-active[data-v-57714b57]{transition:opacity var(--animation-quick) ease}.fade-enter-from[data-v-57714b57],.fade-leave-to[data-v-57714b57]{opacity:0}.list-move[data-v-57714b57],.list-enter-active[data-v-57714b57],.list-leave-active[data-v-57714b57]{transition:all var(--animation-quick) ease}.list-enter-from[data-v-57714b57],.list-leave-to[data-v-57714b57]{opacity:0;transform:translate(30px)}.list-leave-active[data-v-57714b57]{width:100%} diff --git a/js/NotificationsApp-BSasLk0w.chunk.mjs b/js/NotificationsApp-BSasLk0w.chunk.mjs new file mode 100644 index 000000000..031d3cd70 --- /dev/null +++ b/js/NotificationsApp-BSasLk0w.chunk.mjs @@ -0,0 +1,2 @@ +var hi=Object.defineProperty,mi=Object.defineProperties;var gi=Object.getOwnPropertyDescriptors;var Tn=Object.getOwnPropertySymbols;var yi=Object.prototype.hasOwnProperty,bi=Object.prototype.propertyIsEnumerable;var Se=(c,g)=>(g=Symbol[c])?g:Symbol.for("Symbol."+c),wi=c=>{throw TypeError(c)};var vt=(c,g,o)=>g in c?hi(c,g,{enumerable:!0,configurable:!0,writable:!0,value:o}):c[g]=o,oe=(c,g)=>{for(var o in g||(g={}))yi.call(g,o)&&vt(c,o,g[o]);if(Tn)for(var o of Tn(g))bi.call(g,o)&&vt(c,o,g[o]);return c},Pe=(c,g)=>mi(c,gi(g));var Ie=(c,g,o)=>vt(c,typeof g!="symbol"?g+"":g,o);var Ae=function(c,g){this[0]=c,this[1]=g},At=(c,g,o)=>{var l=(v,I,A,T)=>{try{var B=o[v](I),e=(I=B.value)instanceof Ae,n=B.done;Promise.resolve(e?I[0]:I).then(r=>e?l(v==="return"?v:"next",I[1]?{done:r.done,value:r.value}:r,A,T):A({value:r,done:n})).catch(r=>l("throw",r,A,T))}catch(r){T(r)}},f=v=>b[v]=I=>new Promise((A,T)=>l(v,I,A,T)),b={};return o=o.apply(c,g),b[Se("asyncIterator")]=()=>b,f("next"),f("throw"),f("return"),b},Tt=c=>{var g=c[Se("asyncIterator")],o=!1,l,f={};return g==null?(g=c[Se("iterator")](),l=b=>f[b]=v=>g[b](v)):(g=g.call(c),l=b=>f[b]=v=>{if(o){if(o=!1,b==="throw")throw v;return v}return o=!0,{done:!1,value:new Ae(new Promise(I=>{var A=g[b](v);A instanceof Object||wi("Object expected"),I(A)}),1)}}),f[Se("iterator")]=()=>f,l("next"),"throw"in g?l("throw"):f.throw=b=>{throw b},"return"in g&&l("return"),f},xn=(c,g,o)=>(g=c[Se("asyncIterator")])?g.call(c):(c=c[Se("iterator")](),g={},o=(l,f)=>(f=c[l])&&(g[l]=b=>new Promise((v,I,A)=>(b=f.call(c,b),A=b.done,Promise.resolve(b.value).then(T=>v({value:T,done:A}),I)))),o("next"),o("return"),g);import{e as et,u as vi,f as Ai,g as kn,o as Ti,h as xi,i as ki,j as Si,k as Ii,m as tt,R as Ei,n as Oi,p as Ni,r as Ri,q as Ci,w as Pi,x as Bi,y as Sn,z as Ee,B as Fi,_ as fe,A as ji,t as le,C as Li,d as Qe,v as Ct,s as Nt,D as Ze,E as Mi,l as Ye,F as In,G as Ui,H as xt,I as Di,J as kt,K as qi}from"./index-_0iU0BYK-CjtyBpO5.chunk.mjs";import{l as nt,f as j,o as P,g as G,m as de,t as $,h as Be,k as te,n as En,u as ye,j as On,p as St,q as Xn,s as Hi,a as Q,w as J,e as ie,v as Nn,x as Vi,b as X,y as Rn,z as Pt,A as Rt,B as Cn,C as $i,D as Gi,E as Fe,G as zi,r as ee,F as Kn,H as Qn,T as Wi,I as Ji,J as Xi}from"./style-3CHj422B.chunk.mjs";import{B as K}from"./BrowserStorage-FmX8gBxO.chunk.mjs";import"./vite-preload-helper-B9rAsR6N.chunk.mjs";const Ki={class:"empty-content",role:"note"},Qi={key:0,class:"empty-content__icon","aria-hidden":"true"},Zi={key:0,class:"empty-content__name"},Yi={key:1,class:"empty-content__description"},er={key:2,class:"empty-content__action"},tr=nt({__name:"NcEmptyContent",props:{description:{default:""},name:{default:""}},setup(c){return(g,o)=>(P(),j("div",Ki,[g.$slots.icon?(P(),j("div",Qi,[de(g.$slots,"icon",{},void 0,!0)])):G("",!0),de(g.$slots,"name",{},()=>[g.name!==""?(P(),j("span",Zi,$(g.name),1)):G("",!0)],!0),g.description!==""||g.$slots.description?(P(),j("p",Yi,[de(g.$slots,"description",{},()=>[Be($(g.description),1)],!0)])):G("",!0),g.$slots.action?(P(),j("div",er,[de(g.$slots,"action",{},void 0,!0)])):G("",!0)]))}}),nr=et(tr,[["__scopeId","data-v-697cfd8f"]]),or=["data-timestamp","title","textContent"],ir=nt({__name:"NcDateTime",props:{timestamp:{},format:{default:()=>({timeStyle:"medium",dateStyle:"short"})},relativeTime:{type:[Boolean,String],default:"long"},ignoreSeconds:{type:Boolean}},setup(c){const g=c,o=te(()=>({format:g.format})),l=te(()=>({ignoreSeconds:g.ignoreSeconds,relativeTime:g.relativeTime||"long",update:g.relativeTime!==!1})),f=vi(En(()=>g.timestamp),o),b=Ai(En(()=>g.timestamp),l),v=te(()=>g.relativeTime?b.value:f.value);return(I,A)=>(P(),j("span",{class:"nc-datetime",dir:"auto","data-timestamp":I.timestamp,title:ye(f),textContent:$(v.value)},null,8,or))}}),rr=["id"],sr={class:"header-menu__caret"},ar=["id"],ur={ref:"contentContainer",class:"header-menu__content"},lr=nt({__name:"NcHeaderMenu",props:{id:{},ariaLabel:{default:()=>{}},open:{type:Boolean,default:!1},isNav:{type:Boolean,default:!1},description:{default:()=>{}},excludeClickOutsideSelectors:{default:()=>[]}},emits:["closed","opened","update:open"],setup(c,{emit:g}){const o=g,l=kn(),f=kn(),b=On(),v=On(c.open),I=te(()=>c.isNav?"nav":"div"),A=St("contentContainer"),T=St("headerMenu"),B=St("triggerButton"),e=te(()=>Array.isArray(c.excludeClickOutsideSelectors)?c.excludeClickOutsideSelectors:c.excludeClickOutsideSelectors.split(" "));Ti(T,()=>r(!1),{ignore:e}),xi("Escape",()=>r(!1),{prevent:!0}),ki(v,{disabled:()=>!c.isNav}),Xn(()=>c.open,p=>r(p));function n(){r(!v.value)}async function r(p){p!==v.value&&(v.value=p,o("update:open",p),await Hi(),await(p?_():y()),o(p?"opened":"closed"))}function u(p){var x;c.isNav&&p.relatedTarget instanceof Node&&((x=T.value)!=null&&x.contains(p.relatedTarget))&&r(!1)}async function _(){var p;c.isNav||b.value||(b.value=Si(A.value,{allowOutsideClick:!0,trapStack:Ii(),fallbackFocus:(p=B.value)==null?void 0:p.$el}),b.value.activate())}function y(){var p;(p=b.value)==null||p.deactivate(),b.value=void 0}return(p,x)=>(P(),Q(Rt(I.value),{id:p.id,ref:"headerMenu","aria-labelledby":p.isNav?ye(f):null,class:Pt([{"header-menu--opened":v.value},"header-menu"]),onFocusout:u},{default:J(()=>[ie(ye(tt),{id:p.isNav?ye(f):null,ref:"triggerButton","aria-controls":"header-menu-".concat(p.id),"aria-expanded":v.value.toString(),"aria-label":p.ariaLabel,class:"header-menu__trigger",size:"large",variant:"tertiary-no-background",onClick:Vi(n,["prevent"])},{icon:J(()=>[de(p.$slots,"trigger",{},void 0,!0)]),_:3},8,["id","aria-controls","aria-expanded","aria-label"]),p.description?(P(),j("span",{key:0,id:ye(l),class:"header-menu__description hidden-visually"},$(p.description),9,rr)):G("",!0),Nn(X("div",sr,null,512),[[Rn,v.value]]),Nn(X("div",{id:"header-menu-".concat(p.id),class:"header-menu__wrapper"},[X("div",ur,[de(p.$slots,"default",{},void 0,!0)],512)],8,ar),[[Rn,v.value]])]),_:3},40,["id","aria-labelledby","class"]))}}),cr=et(lr,[["__scopeId","data-v-d45c5788"]]),dr={};function fr(c,g){return P(),j("div",null,[de(c.$slots,"trigger")])}const pr=et(dr,[["render",fr]]),_r={class:"user-bubble__name"},hr={key:0,class:"user-bubble__secondary"},mr=nt({__name:"NcUserBubble",props:Cn({avatarImage:{default:void 0},user:{default:void 0},displayName:{default:void 0},showUserStatus:{type:Boolean},url:{default:void 0},to:{default:void 0},primary:{type:Boolean},size:{default:20},margin:{default:2}},{open:{type:Boolean},openModifiers:{}}),emits:Cn(["click"],["update:open"]),setup(c,{emit:g}){const o=$i(c,"open"),l=c,f=g,b=te(()=>{if(!l.avatarImage)return!1;try{return!!new URL(l.avatarImage)}catch(n){return!1}}),v=te(()=>!!l.avatarImage),I=te(()=>({marginInlineStart:"".concat(l.margin,"px")})),A=te(()=>{var n,r;if(!l.url||l.url.trim()==="")return!1;try{return!!new URL(l.url,(r=(n=l.url)==null?void 0:n.startsWith)!=null&&r.call(n,"/")?window.location.href:void 0)}catch(u){return Gi("[NcUserBubble] Invalid URL passed",{url:l.url}),!1}}),T=te(()=>A.value?l.url:void 0),B=te(()=>A.value?"a":l.to?Ei:"div"),e=te(()=>({height:"".concat(l.size,"px"),lineHeight:"".concat(l.size,"px"),borderRadius:"".concat(l.size/2,"px")}));return Xn([()=>l.displayName,()=>l.user],()=>{!l.displayName&&l.user}),(n,r)=>(P(),Q(Rt(n.$slots.default?ye(Ni):pr),{shown:o.value,"onUpdate:shown":r[1]||(r[1]=u=>o.value=u),class:"user-bubble__wrapper",trigger:"hover focus"},{trigger:J(({attrs:u})=>[(P(),Q(Rt(B.value),Fe({class:["user-bubble__content",{"user-bubble__content--primary":n.primary}],style:e.value,to:n.to,href:T.value},u,{onClick:r[0]||(r[0]=_=>f("click",_))}),{default:J(()=>[ie(ye(Oi),{url:v.value&&b.value?n.avatarImage:void 0,"icon-class":v.value&&!b.value?n.avatarImage:void 0,user:n.user,"display-name":n.displayName,size:n.size-n.margin*2,style:zi(I.value),"disable-tooltip":!0,"disable-menu":!0,"hide-status":!n.showUserStatus,class:"user-bubble__avatar"},null,8,["url","icon-class","user","display-name","size","style","hide-status"]),X("span",_r,$(n.displayName||n.user),1),n.$slots.name?(P(),j("span",hr,[de(n.$slots,"name",{},void 0,!0)])):G("",!0)]),_:2},1040,["class","style","to","href"]))]),default:J(()=>[de(n.$slots,"default",{},void 0,!0)]),_:3},40,["shown"]))}}),gr=et(mr,[["__scopeId","data-v-37bde6b7"]]);var ce={},Pn={},Bn={},Fn;function yr(){return Fn||(Fn=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});function g(o,l,f){const b=document.querySelector("#initial-state-".concat(o,"-").concat(l));if(b===null){if(f!==void 0)return f;throw new Error("Could not find initial state ".concat(l," of ").concat(o))}try{return JSON.parse(atob(b.value))}catch(v){throw new Error("Could not parse initial state ".concat(l," of ").concat(o))}}c.loadState=g}(Bn)),Bn}var jn;function br(){return jn||(jn=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});const g=yr();function o(){try{return g.loadState("core","capabilities")}catch(l){return console.debug("Could not find capabilities initial state fall back to _oc_capabilities"),"_oc_capabilities"in window?window._oc_capabilities:{}}}c.getCapabilities=o}(Pn)),Pn}var Ln={},Mn={},Un={},Dn;function Zn(){return Dn||(Dn=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});const g=Ri(),o=Ci(),l=r=>r&&r.__esModule?r:{default:r},f=l(g),b=l(o);class v{constructor(u){Ie(this,"bus");typeof u.getVersion!="function"||!f.default(u.getVersion())?console.warn("Proxying an event bus with an unknown or invalid version"):b.default(u.getVersion())!==b.default(this.getVersion())&&console.warn("Proxying an event bus of version "+u.getVersion()+" with "+this.getVersion()),this.bus=u}getVersion(){return"3.3.2"}subscribe(u,_){this.bus.subscribe(u,_)}unsubscribe(u,_){this.bus.unsubscribe(u,_)}emit(u,..._){this.bus.emit(u,..._)}}class I{constructor(){Ie(this,"handlers",new Map)}getVersion(){return"3.3.2"}subscribe(u,_){this.handlers.set(u,(this.handlers.get(u)||[]).concat(_))}unsubscribe(u,_){this.handlers.set(u,(this.handlers.get(u)||[]).filter(y=>y!==_))}emit(u,..._){(this.handlers.get(u)||[]).forEach(y=>{try{y(_[0])}catch(p){console.error("could not invoke event listener",p)}})}}let A=null;function T(){var r;return A!==null?A:typeof window>"u"?new Proxy({},{get:()=>()=>console.error("Window not available, EventBus can not be established!")}):((r=window.OC)!=null&&r._eventBus&&typeof window._nc_event_bus>"u"&&(console.warn("found old event bus instance at OC._eventBus. Update your version!"),window._nc_event_bus=window.OC._eventBus),typeof(window==null?void 0:window._nc_event_bus)<"u"?A=new v(window._nc_event_bus):A=window._nc_event_bus=new I,A)}function B(r,u){T().subscribe(r,u)}function e(r,u){T().unsubscribe(r,u)}function n(r,...u){T().emit(r,...u)}c.ProxyBus=v,c.SimpleBus=I,c.emit=n,c.subscribe=B,c.unsubscribe=e}(Un)),Un}const wr=Pi(Bi);var qn;function vr(){return qn||(qn=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});const g=Zn(),o=wr;let l;const f=[];function b(){var x;return l===void 0&&(l=(x=document.head.dataset.requesttoken)!=null?x:null),l}function v(x){f.push(x)}g.subscribe("csrf-token-update",x=>{l=x.token,f.forEach(C=>{try{C(l)}catch(F){console.error("Error updating CSRF token observer",F)}})});function I(){const x=document==null?void 0:document.querySelector('meta[name="csp-nonce"]');if(!x){const C=b();return C?btoa(C):void 0}return x.nonce}const A=o.getBuilder("public").persist().build();class T{constructor(){Ie(this,"_displayName");Ie(this,"uid");Ie(this,"isAdmin");A.getItem("guestUid")||A.setItem("guestUid",u()),this._displayName=A.getItem("guestNickname")||"",this.uid=A.getItem("guestUid")||u(),this.isAdmin=!1,g.subscribe("user:info:changed",C=>{this._displayName=C.displayName,A.setItem("guestNickname",C.displayName||"")})}get displayName(){return this._displayName}set displayName(C){this._displayName=C,A.setItem("guestNickname",C),g.emit("user:info:changed",this)}}let B;function e(){return B||(B=new T),B}function n(){var x;return((x=e())==null?void 0:x.displayName)||null}function r(x){if(!x||x.trim().length===0)throw new Error("Nickname cannot be empty");e().displayName=x}function u(){var x;return(x=globalThis.crypto)!=null&&x.randomUUID?globalThis.crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,C=>{const F=Math.random()*16|0;return(C==="x"?F:F&3|8).toString(16)})}let _;function y(x,C){return x?x.getAttribute(C):null}function p(){if(_!==void 0)return _;const x=document==null?void 0:document.getElementsByTagName("head")[0];if(!x)return null;const C=y(x,"data-user");return C===null?(_=null,_):(_={uid:C,displayName:y(x,"data-user-displayname"),isAdmin:!!window._oc_isadmin},_)}c.getCSPNonce=I,c.getCurrentUser=p,c.getGuestNickname=n,c.getGuestUser=e,c.getRequestToken=b,c.onRequestTokenUpdate=v,c.setGuestNickname=r}(Mn)),Mn}var It,Hn;function Ar(){if(Hn)return It;Hn=1;function c(t,i){return function(){return t.apply(i,arguments)}}const{toString:g}=Object.prototype,{getPrototypeOf:o}=Object,{iterator:l,toStringTag:f}=Symbol,b=(t=>i=>{const s=g.call(i);return t[s]||(t[s]=s.slice(8,-1).toLowerCase())})(Object.create(null)),v=t=>(t=t.toLowerCase(),i=>b(i)===t),I=t=>i=>typeof i===t,{isArray:A}=Array,T=I("undefined");function B(t){return t!==null&&!T(t)&&t.constructor!==null&&!T(t.constructor)&&u(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const e=v("ArrayBuffer");function n(t){let i;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?i=ArrayBuffer.isView(t):i=t&&t.buffer&&e(t.buffer),i}const r=I("string"),u=I("function"),_=I("number"),y=t=>t!==null&&typeof t=="object",p=t=>t===!0||t===!1,x=t=>{if(b(t)!=="object")return!1;const i=o(t);return(i===null||i===Object.prototype||Object.getPrototypeOf(i)===null)&&!(f in t)&&!(l in t)},C=t=>{if(!y(t)||B(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch(i){return!1}},F=v("Date"),H=v("File"),re=v("Blob"),Te=v("FileList"),Oe=t=>y(t)&&u(t.pipe),D=t=>{let i;return t&&(typeof FormData=="function"&&t instanceof FormData||u(t.append)&&((i=b(t))==="formdata"||i==="object"&&u(t.toString)&&t.toString()==="[object FormData]"))},je=v("URLSearchParams"),[Le,ot,Me,pe]=["ReadableStream","Request","Response","Headers"].map(v),it=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Ne(t,i,{allOwnKeys:s=!1}={}){if(t===null||typeof t>"u")return;let a,d;if(typeof t!="object"&&(t=[t]),A(t))for(a=0,d=t.length;a0;)if(d=s[a],i===d.toLowerCase())return d;return null}const be=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:Ee,Ft=t=>!T(t)&&t!==be;function rt(){const{caseless:t,skipUndefined:i}=Ft(this)&&this||{},s={},a=(d,m)=>{const h=t&&Bt(s,m)||m;x(s[h])&&x(d)?s[h]=rt(s[h],d):x(d)?s[h]=rt({},d):A(d)?s[h]=d.slice():(!i||!T(d))&&(s[h]=d)};for(let d=0,m=arguments.length;d(Ne(i,(d,m)=>{s&&u(d)?t[m]=c(d,s):t[m]=d},{allOwnKeys:a}),t),oo=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),io=(t,i,s,a)=>{t.prototype=Object.create(i.prototype,a),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:i.prototype}),s&&Object.assign(t.prototype,s)},ro=(t,i,s,a)=>{let d,m,h;const k={};if(i=i||{},t==null)return i;do{for(d=Object.getOwnPropertyNames(t),m=d.length;m-- >0;)h=d[m],(!a||a(h,t,i))&&!k[h]&&(i[h]=t[h],k[h]=!0);t=s!==!1&&o(t)}while(t&&(!s||s(t,i))&&t!==Object.prototype);return i},so=(t,i,s)=>{t=String(t),(s===void 0||s>t.length)&&(s=t.length),s-=i.length;const a=t.indexOf(i,s);return a!==-1&&a===s},ao=t=>{if(!t)return null;if(A(t))return t;let i=t.length;if(!_(i))return null;const s=new Array(i);for(;i-- >0;)s[i]=t[i];return s},uo=(t=>i=>t&&i instanceof t)(typeof Uint8Array<"u"&&o(Uint8Array)),lo=(t,i)=>{const s=(t&&t[l]).call(t);let a;for(;(a=s.next())&&!a.done;){const d=a.value;i.call(t,d[0],d[1])}},co=(t,i)=>{let s;const a=[];for(;(s=t.exec(i))!==null;)a.push(s);return a},fo=v("HTMLFormElement"),po=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(i,s,a){return s.toUpperCase()+a}),jt=(({hasOwnProperty:t})=>(i,s)=>t.call(i,s))(Object.prototype),_o=v("RegExp"),Lt=(t,i)=>{const s=Object.getOwnPropertyDescriptors(t),a={};Ne(s,(d,m)=>{let h;(h=i(d,m,t))!==!1&&(a[m]=h||d)}),Object.defineProperties(t,a)},ho=t=>{Lt(t,(i,s)=>{if(u(t)&&["arguments","caller","callee"].indexOf(s)!==-1)return!1;const a=t[s];if(u(a)){if(i.enumerable=!1,"writable"in i){i.writable=!1;return}i.set||(i.set=()=>{throw Error("Can not rewrite read-only method '"+s+"'")})}})},mo=(t,i)=>{const s={},a=d=>{d.forEach(m=>{s[m]=!0})};return A(t)?a(t):a(String(t).split(i)),s},go=()=>{},yo=(t,i)=>t!=null&&Number.isFinite(t=+t)?t:i;function bo(t){return!!(t&&u(t.append)&&t[f]==="FormData"&&t[l])}const wo=t=>{const i=new Array(10),s=(a,d)=>{if(y(a)){if(i.indexOf(a)>=0)return;if(B(a))return a;if(!("toJSON"in a)){i[d]=a;const m=A(a)?[]:{};return Ne(a,(h,k)=>{const N=s(h,d+1);!T(N)&&(m[k]=N)}),i[d]=void 0,m}}return a};return s(t,0)},vo=v("AsyncFunction"),Ao=t=>t&&(y(t)||u(t))&&u(t.then)&&u(t.catch),Mt=((t,i)=>t?setImmediate:i?((s,a)=>(be.addEventListener("message",({source:d,data:m})=>{d===be&&m===s&&a.length&&a.shift()()},!1),d=>{a.push(d),be.postMessage(s,"*")}))("axios@".concat(Math.random()),[]):s=>setTimeout(s))(typeof setImmediate=="function",u(be.postMessage)),To=typeof queueMicrotask<"u"?queueMicrotask.bind(be):typeof Sn<"u"&&Sn.nextTick||Mt;var w={isArray:A,isArrayBuffer:e,isBuffer:B,isFormData:D,isArrayBufferView:n,isString:r,isNumber:_,isBoolean:p,isObject:y,isPlainObject:x,isEmptyObject:C,isReadableStream:Le,isRequest:ot,isResponse:Me,isHeaders:pe,isUndefined:T,isDate:F,isFile:H,isBlob:re,isRegExp:_o,isFunction:u,isStream:Oe,isURLSearchParams:je,isTypedArray:uo,isFileList:Te,forEach:Ne,merge:rt,extend:no,trim:it,stripBOM:oo,inherits:io,toFlatObject:ro,kindOf:b,kindOfTest:v,endsWith:so,toArray:ao,forEachEntry:lo,matchAll:co,isHTMLForm:fo,hasOwnProperty:jt,hasOwnProp:jt,reduceDescriptors:Lt,freezeMethods:ho,toObjectSet:mo,toCamelCase:po,noop:go,toFiniteNumber:yo,findKey:Bt,global:be,isContextDefined:Ft,isSpecCompliantForm:bo,toJSONObject:wo,isAsyncFn:vo,isThenable:Ao,setImmediate:Mt,asap:To,isIterable:t=>t!=null&&u(t[l])};function M(t,i,s,a,d){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",i&&(this.code=i),s&&(this.config=s),a&&(this.request=a),d&&(this.response=d,this.status=d.status?d.status:null)}w.inherits(M,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:w.toJSONObject(this.config),code:this.code,status:this.status}}});const Ut=M.prototype,Dt={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{Dt[t]={value:t}}),Object.defineProperties(M,Dt),Object.defineProperty(Ut,"isAxiosError",{value:!0}),M.from=(t,i,s,a,d,m)=>{const h=Object.create(Ut);w.toFlatObject(t,h,function(S){return S!==Error.prototype},S=>S!=="isAxiosError");const k=t&&t.message?t.message:"Error",N=i==null&&t?t.code:i;return M.call(h,k,N,s,a,d),t&&h.cause==null&&Object.defineProperty(h,"cause",{value:t,configurable:!0}),h.name=t&&t.name||"Error",m&&Object.assign(h,m),h};var xo=null;function st(t){return w.isPlainObject(t)||w.isArray(t)}function qt(t){return w.endsWith(t,"[]")?t.slice(0,-2):t}function Ht(t,i,s){return t?t.concat(i).map(function(a,d){return a=qt(a),!s&&d?"["+a+"]":a}).join(s?".":""):i}function ko(t){return w.isArray(t)&&!t.some(st)}const So=w.toFlatObject(w,{},null,function(t){return/^is[A-Z]/.test(t)});function Ue(t,i,s){if(!w.isObject(t))throw new TypeError("target must be an object");i=i||new FormData,s=w.toFlatObject(s,{metaTokens:!0,dots:!1,indexes:!1},!1,function(U,E){return!w.isUndefined(E[U])});const a=s.metaTokens,d=s.visitor||S,m=s.dots,h=s.indexes,k=(s.Blob||typeof Blob<"u"&&Blob)&&w.isSpecCompliantForm(i);if(!w.isFunction(d))throw new TypeError("visitor must be a function");function N(U){if(U===null)return"";if(w.isDate(U))return U.toISOString();if(w.isBoolean(U))return U.toString();if(!k&&w.isBlob(U))throw new M("Blob is not supported. Use a Buffer instead.");return w.isArrayBuffer(U)||w.isTypedArray(U)?k&&typeof Blob=="function"?new Blob([U]):Fi.from(U):U}function S(U,E,R){let V=U;if(U&&!R&&typeof U=="object"){if(w.endsWith(E,"{}"))E=a?E:E.slice(0,-2),U=JSON.stringify(U);else if(w.isArray(U)&&ko(U)||(w.isFileList(U)||w.endsWith(E,"[]"))&&(V=w.toArray(U)))return E=qt(E),V.forEach(function(Y,W){!(w.isUndefined(Y)||Y===null)&&i.append(h===!0?Ht([E],W,m):h===null?E:E+"[]",N(Y))}),!1}return st(U)?!0:(i.append(Ht(R,E,m),N(U)),!1)}const O=[],L=Object.assign(So,{defaultVisitor:S,convertValue:N,isVisitable:st});function q(U,E){if(!w.isUndefined(U)){if(O.indexOf(U)!==-1)throw Error("Circular reference detected in "+E.join("."));O.push(U),w.forEach(U,function(R,V){(!(w.isUndefined(R)||R===null)&&d.call(i,R,w.isString(V)?V.trim():V,E,L))===!0&&q(R,E?E.concat(V):[V])}),O.pop()}}if(!w.isObject(t))throw new TypeError("data must be an object");return q(t),i}function Vt(t){const i={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(s){return i[s]})}function at(t,i){this._pairs=[],t&&Ue(t,this,i)}const $t=at.prototype;$t.append=function(t,i){this._pairs.push([t,i])},$t.toString=function(t){const i=t?function(s){return t.call(this,s,Vt)}:Vt;return this._pairs.map(function(s){return i(s[0])+"="+i(s[1])},"").join("&")};function Io(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Gt(t,i,s){if(!i)return t;const a=s&&s.encode||Io;w.isFunction(s)&&(s={serialize:s});const d=s&&s.serialize;let m;if(d?m=d(i,s):m=w.isURLSearchParams(i)?i.toString():new at(i,s).toString(a),m){const h=t.indexOf("#");h!==-1&&(t=t.slice(0,h)),t+=(t.indexOf("?")===-1?"?":"&")+m}return t}class Eo{constructor(){this.handlers=[]}use(i,s,a){return this.handlers.push({fulfilled:i,rejected:s,synchronous:a?a.synchronous:!1,runWhen:a?a.runWhen:null}),this.handlers.length-1}eject(i){this.handlers[i]&&(this.handlers[i]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(i){w.forEach(this.handlers,function(s){s!==null&&i(s)})}}var zt=Eo,Wt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Oo=typeof URLSearchParams<"u"?URLSearchParams:at,No=typeof FormData<"u"?FormData:null,Ro=typeof Blob<"u"?Blob:null,Co={isBrowser:!0,classes:{URLSearchParams:Oo,FormData:No,Blob:Ro},protocols:["http","https","file","blob","url","data"]};const ut=typeof window<"u"&&typeof document<"u",lt=typeof navigator=="object"&&navigator||void 0,Po=ut&&(!lt||["ReactNative","NativeScript","NS"].indexOf(lt.product)<0),Bo=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Fo=ut&&window.location.href||"http://localhost";var jo=Object.freeze({__proto__:null,hasBrowserEnv:ut,hasStandardBrowserWebWorkerEnv:Bo,hasStandardBrowserEnv:Po,navigator:lt,origin:Fo}),Z=oe(oe({},jo),Co);function Lo(t,i){return Ue(t,new Z.classes.URLSearchParams,oe({visitor:function(s,a,d,m){return Z.isNode&&w.isBuffer(s)?(this.append(a,s.toString("base64")),!1):m.defaultVisitor.apply(this,arguments)}},i))}function Mo(t){return w.matchAll(/\w+|\[(\w*)]/g,t).map(i=>i[0]==="[]"?"":i[1]||i[0])}function Uo(t){const i={},s=Object.keys(t);let a;const d=s.length;let m;for(a=0;a=s.length;return h=!h&&w.isArray(d)?d.length:h,N?(w.hasOwnProp(d,h)?d[h]=[d[h],a]:d[h]=a,!k):((!d[h]||!w.isObject(d[h]))&&(d[h]=[]),i(s,a,d[h],m)&&w.isArray(d[h])&&(d[h]=Uo(d[h])),!k)}if(w.isFormData(t)&&w.isFunction(t.entries)){const s={};return w.forEachEntry(t,(a,d)=>{i(Mo(a),d,s,0)}),s}return null}function Do(t,i,s){if(w.isString(t))try{return(i||JSON.parse)(t),w.trim(t)}catch(a){if(a.name!=="SyntaxError")throw a}return(s||JSON.stringify)(t)}const ct={transitional:Wt,adapter:["xhr","http","fetch"],transformRequest:[function(t,i){const s=i.getContentType()||"",a=s.indexOf("application/json")>-1,d=w.isObject(t);if(d&&w.isHTMLForm(t)&&(t=new FormData(t)),w.isFormData(t))return a?JSON.stringify(Jt(t)):t;if(w.isArrayBuffer(t)||w.isBuffer(t)||w.isStream(t)||w.isFile(t)||w.isBlob(t)||w.isReadableStream(t))return t;if(w.isArrayBufferView(t))return t.buffer;if(w.isURLSearchParams(t))return i.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let m;if(d){if(s.indexOf("application/x-www-form-urlencoded")>-1)return Lo(t,this.formSerializer).toString();if((m=w.isFileList(t))||s.indexOf("multipart/form-data")>-1){const h=this.env&&this.env.FormData;return Ue(m?{"files[]":t}:t,h&&new h,this.formSerializer)}}return d||a?(i.setContentType("application/json",!1),Do(t)):t}],transformResponse:[function(t){const i=this.transitional||ct.transitional,s=i&&i.forcedJSONParsing,a=this.responseType==="json";if(w.isResponse(t)||w.isReadableStream(t))return t;if(t&&w.isString(t)&&(s&&!this.responseType||a)){const d=!(i&&i.silentJSONParsing)&&a;try{return JSON.parse(t,this.parseReviver)}catch(m){if(d)throw m.name==="SyntaxError"?M.from(m,M.ERR_BAD_RESPONSE,this,null,this.response):m}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Z.classes.FormData,Blob:Z.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};w.forEach(["delete","get","head","post","put","patch"],t=>{ct.headers[t]={}});var dt=ct;const qo=w.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var Ho=t=>{const i={};let s,a,d;return t&&t.split("\n").forEach(function(m){d=m.indexOf(":"),s=m.substring(0,d).trim().toLowerCase(),a=m.substring(d+1).trim(),!(!s||i[s]&&qo[s])&&(s==="set-cookie"?i[s]?i[s].push(a):i[s]=[a]:i[s]=i[s]?i[s]+", "+a:a)}),i};const Xt=Symbol("internals");function Re(t){return t&&String(t).trim().toLowerCase()}function De(t){return t===!1||t==null?t:w.isArray(t)?t.map(De):String(t)}function Vo(t){const i=Object.create(null),s=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=s.exec(t);)i[a[1]]=a[2];return i}const $o=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function ft(t,i,s,a,d){if(w.isFunction(a))return a.call(this,i,s);if(d&&(i=s),!!w.isString(i)){if(w.isString(a))return i.indexOf(a)!==-1;if(w.isRegExp(a))return a.test(i)}}function Go(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(i,s,a)=>s.toUpperCase()+a)}function zo(t,i){const s=w.toCamelCase(" "+i);["get","set","has"].forEach(a=>{Object.defineProperty(t,a+s,{value:function(d,m,h){return this[a].call(this,i,d,m,h)},configurable:!0})})}class qe{constructor(i){i&&this.set(i)}set(i,s,a){const d=this;function m(k,N,S){const O=Re(N);if(!O)throw new Error("header name must be a non-empty string");const L=w.findKey(d,O);(!L||d[L]===void 0||S===!0||S===void 0&&d[L]!==!1)&&(d[L||N]=De(k))}const h=(k,N)=>w.forEach(k,(S,O)=>m(S,O,N));if(w.isPlainObject(i)||i instanceof this.constructor)h(i,s);else if(w.isString(i)&&(i=i.trim())&&!$o(i))h(Ho(i),s);else if(w.isObject(i)&&w.isIterable(i)){let k={},N,S;for(const O of i){if(!w.isArray(O))throw TypeError("Object iterator must return a key-value pair");k[S=O[0]]=(N=k[S])?w.isArray(N)?[...N,O[1]]:[N,O[1]]:O[1]}h(k,s)}else i!=null&&m(s,i,a);return this}get(i,s){if(i=Re(i),i){const a=w.findKey(this,i);if(a){const d=this[a];if(!s)return d;if(s===!0)return Vo(d);if(w.isFunction(s))return s.call(this,d,a);if(w.isRegExp(s))return s.exec(d);throw new TypeError("parser must be boolean|regexp|function")}}}has(i,s){if(i=Re(i),i){const a=w.findKey(this,i);return!!(a&&this[a]!==void 0&&(!s||ft(this,this[a],a,s)))}return!1}delete(i,s){const a=this;let d=!1;function m(h){if(h=Re(h),h){const k=w.findKey(a,h);k&&(!s||ft(a,a[k],k,s))&&(delete a[k],d=!0)}}return w.isArray(i)?i.forEach(m):m(i),d}clear(i){const s=Object.keys(this);let a=s.length,d=!1;for(;a--;){const m=s[a];(!i||ft(this,this[m],m,i,!0))&&(delete this[m],d=!0)}return d}normalize(i){const s=this,a={};return w.forEach(this,(d,m)=>{const h=w.findKey(a,m);if(h){s[h]=De(d),delete s[m];return}const k=i?Go(m):String(m).trim();k!==m&&delete s[m],s[k]=De(d),a[k]=!0}),this}concat(...i){return this.constructor.concat(this,...i)}toJSON(i){const s=Object.create(null);return w.forEach(this,(a,d)=>{a!=null&&a!==!1&&(s[d]=i&&w.isArray(a)?a.join(", "):a)}),s}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([i,s])=>i+": "+s).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(i){return i instanceof this?i:new this(i)}static concat(i,...s){const a=new this(i);return s.forEach(d=>a.set(d)),a}static accessor(i){const s=(this[Xt]=this[Xt]={accessors:{}}).accessors,a=this.prototype;function d(m){const h=Re(m);s[h]||(zo(a,m),s[h]=!0)}return w.isArray(i)?i.forEach(d):d(i),this}}qe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),w.reduceDescriptors(qe.prototype,({value:t},i)=>{let s=i[0].toUpperCase()+i.slice(1);return{get:()=>t,set(a){this[s]=a}}}),w.freezeMethods(qe);var ne=qe;function pt(t,i){const s=this||dt,a=i||s,d=ne.from(a.headers);let m=a.data;return w.forEach(t,function(h){m=h.call(s,m,d.normalize(),i?i.status:void 0)}),d.normalize(),m}function Kt(t){return!!(t&&t.__CANCEL__)}function xe(t,i,s){M.call(this,t!=null?t:"canceled",M.ERR_CANCELED,i,s),this.name="CanceledError"}w.inherits(xe,M,{__CANCEL__:!0});function Qt(t,i,s){const a=s.config.validateStatus;!s.status||!a||a(s.status)?t(s):i(new M("Request failed with status code "+s.status,[M.ERR_BAD_REQUEST,M.ERR_BAD_RESPONSE][Math.floor(s.status/100)-4],s.config,s.request,s))}function Wo(t){const i=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return i&&i[1]||""}function Jo(t,i){t=t||10;const s=new Array(t),a=new Array(t);let d=0,m=0,h;return i=i!==void 0?i:1e3,function(k){const N=Date.now(),S=a[m];h||(h=N),s[d]=k,a[d]=N;let O=m,L=0;for(;O!==d;)L+=s[O++],O=O%t;if(d=(d+1)%t,d===m&&(m=(m+1)%t),N-h{s=N,d=null,m&&(clearTimeout(m),m=null),t(...k)};return[(...k)=>{const N=Date.now(),S=N-s;S>=a?h(k,N):(d=k,m||(m=setTimeout(()=>{m=null,h(d)},a-S)))},()=>d&&h(d)]}const He=(t,i,s=3)=>{let a=0;const d=Jo(50,250);return Xo(m=>{const h=m.loaded,k=m.lengthComputable?m.total:void 0,N=h-a,S=d(N),O=h<=k;a=h;const L={loaded:h,total:k,progress:k?h/k:void 0,bytes:N,rate:S||void 0,estimated:S&&k&&O?(k-h)/S:void 0,event:m,lengthComputable:k!=null,[i?"download":"upload"]:!0};t(L)},s)},Zt=(t,i)=>{const s=t!=null;return[a=>i[0]({lengthComputable:s,total:t,loaded:a}),i[1]]},Yt=t=>(...i)=>w.asap(()=>t(...i));var Ko=Z.hasStandardBrowserEnv?((t,i)=>s=>(s=new URL(s,Z.origin),t.protocol===s.protocol&&t.host===s.host&&(i||t.port===s.port)))(new URL(Z.origin),Z.navigator&&/(msie|trident)/i.test(Z.navigator.userAgent)):()=>!0,Qo=Z.hasStandardBrowserEnv?{write(t,i,s,a,d,m){const h=[t+"="+encodeURIComponent(i)];w.isNumber(s)&&h.push("expires="+new Date(s).toGMTString()),w.isString(a)&&h.push("path="+a),w.isString(d)&&h.push("domain="+d),m===!0&&h.push("secure"),document.cookie=h.join("; ")},read(t){const i=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return i?decodeURIComponent(i[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Zo(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Yo(t,i){return i?t.replace(/\/?\/$/,"")+"/"+i.replace(/^\/+/,""):t}function en(t,i,s){let a=!Zo(i);return t&&(a||s==!1)?Yo(t,i):i}const tn=t=>t instanceof ne?oe({},t):t;function we(t,i){i=i||{};const s={};function a(S,O,L,q){return w.isPlainObject(S)&&w.isPlainObject(O)?w.merge.call({caseless:q},S,O):w.isPlainObject(O)?w.merge({},O):w.isArray(O)?O.slice():O}function d(S,O,L,q){if(w.isUndefined(O)){if(!w.isUndefined(S))return a(void 0,S,L,q)}else return a(S,O,L,q)}function m(S,O){if(!w.isUndefined(O))return a(void 0,O)}function h(S,O){if(w.isUndefined(O)){if(!w.isUndefined(S))return a(void 0,S)}else return a(void 0,O)}function k(S,O,L){if(L in i)return a(S,O);if(L in t)return a(void 0,S)}const N={url:m,method:m,data:m,baseURL:h,transformRequest:h,transformResponse:h,paramsSerializer:h,timeout:h,timeoutMessage:h,withCredentials:h,withXSRFToken:h,adapter:h,responseType:h,xsrfCookieName:h,xsrfHeaderName:h,onUploadProgress:h,onDownloadProgress:h,decompress:h,maxContentLength:h,maxBodyLength:h,beforeRedirect:h,transport:h,httpAgent:h,httpsAgent:h,cancelToken:h,socketPath:h,responseEncoding:h,validateStatus:k,headers:(S,O,L)=>d(tn(S),tn(O),L,!0)};return w.forEach(Object.keys(oe(oe({},t),i)),function(S){const O=N[S]||d,L=O(t[S],i[S],S);w.isUndefined(L)&&O!==k||(s[S]=L)}),s}var nn=t=>{const i=we({},t);let{data:s,withXSRFToken:a,xsrfHeaderName:d,xsrfCookieName:m,headers:h,auth:k}=i;if(i.headers=h=ne.from(h),i.url=Gt(en(i.baseURL,i.url,i.allowAbsoluteUrls),t.params,t.paramsSerializer),k&&h.set("Authorization","Basic "+btoa((k.username||"")+":"+(k.password?unescape(encodeURIComponent(k.password)):""))),w.isFormData(s)){if(Z.hasStandardBrowserEnv||Z.hasStandardBrowserWebWorkerEnv)h.setContentType(void 0);else if(w.isFunction(s.getHeaders)){const N=s.getHeaders(),S=["content-type","content-length"];Object.entries(N).forEach(([O,L])=>{S.includes(O.toLowerCase())&&h.set(O,L)})}}if(Z.hasStandardBrowserEnv&&(a&&w.isFunction(a)&&(a=a(i)),a||a!==!1&&Ko(i.url))){const N=d&&m&&Qo.read(m);N&&h.set(d,N)}return i},ei=typeof XMLHttpRequest<"u"&&function(t){return new Promise(function(i,s){const a=nn(t);let d=a.data;const m=ne.from(a.headers).normalize();let{responseType:h,onUploadProgress:k,onDownloadProgress:N}=a,S,O,L,q,U;function E(){q&&q(),U&&U(),a.cancelToken&&a.cancelToken.unsubscribe(S),a.signal&&a.signal.removeEventListener("abort",S)}let R=new XMLHttpRequest;R.open(a.method.toUpperCase(),a.url,!0),R.timeout=a.timeout;function V(){if(!R)return;const W=ne.from("getAllResponseHeaders"in R&&R.getAllResponseHeaders()),ae={data:!h||h==="text"||h==="json"?R.responseText:R.response,status:R.status,statusText:R.statusText,headers:W,config:t,request:R};Qt(function(_e){i(_e),E()},function(_e){s(_e),E()},ae),R=null}"onloadend"in R?R.onloadend=V:R.onreadystatechange=function(){!R||R.readyState!==4||R.status===0&&!(R.responseURL&&R.responseURL.indexOf("file:")===0)||setTimeout(V)},R.onabort=function(){R&&(s(new M("Request aborted",M.ECONNABORTED,t,R)),R=null)},R.onerror=function(W){const ae=W&&W.message?W.message:"Network Error",_e=new M(ae,M.ERR_NETWORK,t,R);_e.event=W||null,s(_e),R=null},R.ontimeout=function(){let W=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const ae=a.transitional||Wt;a.timeoutErrorMessage&&(W=a.timeoutErrorMessage),s(new M(W,ae.clarifyTimeoutError?M.ETIMEDOUT:M.ECONNABORTED,t,R)),R=null},d===void 0&&m.setContentType(null),"setRequestHeader"in R&&w.forEach(m.toJSON(),function(W,ae){R.setRequestHeader(ae,W)}),w.isUndefined(a.withCredentials)||(R.withCredentials=!!a.withCredentials),h&&h!=="json"&&(R.responseType=a.responseType),N&&([L,U]=He(N,!0),R.addEventListener("progress",L)),k&&R.upload&&([O,q]=He(k),R.upload.addEventListener("progress",O),R.upload.addEventListener("loadend",q)),(a.cancelToken||a.signal)&&(S=W=>{R&&(s(!W||W.type?new xe(null,t,R):W),R.abort(),R=null)},a.cancelToken&&a.cancelToken.subscribe(S),a.signal&&(a.signal.aborted?S():a.signal.addEventListener("abort",S)));const Y=Wo(a.url);if(Y&&Z.protocols.indexOf(Y)===-1){s(new M("Unsupported protocol "+Y+":",M.ERR_BAD_REQUEST,t));return}R.send(d||null)})},ti=(t,i)=>{const{length:s}=t=t?t.filter(Boolean):[];if(i||s){let a=new AbortController,d;const m=function(S){if(!d){d=!0,k();const O=S instanceof Error?S:this.reason;a.abort(O instanceof M?O:new xe(O instanceof Error?O.message:O))}};let h=i&&setTimeout(()=>{h=null,m(new M("timeout ".concat(i," of ms exceeded"),M.ETIMEDOUT))},i);const k=()=>{t&&(h&&clearTimeout(h),h=null,t.forEach(S=>{S.unsubscribe?S.unsubscribe(m):S.removeEventListener("abort",m)}),t=null)};t.forEach(S=>S.addEventListener("abort",m));const{signal:N}=a;return N.unsubscribe=()=>w.asap(k),N}};const ni=function*(t,i){let s=t.byteLength;if(s{const d=oi(t,i);let m=0,h,k=N=>{h||(h=!0,a&&a(N))};return new ReadableStream({async pull(N){try{const{done:S,value:O}=await d.next();if(S){k(),N.close();return}let L=O.byteLength;if(s){let q=m+=L;s(q)}N.enqueue(new Uint8Array(O))}catch(S){throw k(S),S}},cancel(N){return k(N),d.return()}},{highWaterMark:2})},rn=64*1024,{isFunction:Ve}=w,ri=(({Request:t,Response:i})=>({Request:t,Response:i}))(w.global),{ReadableStream:sn,TextEncoder:an}=w.global,un=(t,...i)=>{try{return!!t(...i)}catch(s){return!1}},si=t=>{t=w.merge.call({skipUndefined:!0},ri,t);const{fetch:i,Request:s,Response:a}=t,d=i?Ve(i):typeof fetch=="function",m=Ve(s),h=Ve(a);if(!d)return!1;const k=d&&Ve(sn),N=d&&(typeof an=="function"?(E=>R=>E.encode(R))(new an):async E=>new Uint8Array(await new s(E).arrayBuffer())),S=m&&k&&un(()=>{let E=!1;const R=new s(Z.origin,{body:new sn,method:"POST",get duplex(){return E=!0,"half"}}).headers.has("Content-Type");return E&&!R}),O=h&&k&&un(()=>w.isReadableStream(new a("").body)),L={stream:O&&(E=>E.body)};d&&["text","arrayBuffer","blob","formData","stream"].forEach(E=>{!L[E]&&(L[E]=(R,V)=>{let Y=R&&R[E];if(Y)return Y.call(R);throw new M("Response type '".concat(E,"' is not supported"),M.ERR_NOT_SUPPORT,V)})});const q=async E=>{if(E==null)return 0;if(w.isBlob(E))return E.size;if(w.isSpecCompliantForm(E))return(await new s(Z.origin,{method:"POST",body:E}).arrayBuffer()).byteLength;if(w.isArrayBufferView(E)||w.isArrayBuffer(E))return E.byteLength;if(w.isURLSearchParams(E)&&(E=E+""),w.isString(E))return(await N(E)).byteLength},U=async(E,R)=>{const V=w.toFiniteNumber(E.getContentLength());return V!=null?V:q(R)};return async E=>{let{url:R,method:V,data:Y,signal:W,cancelToken:ae,timeout:_e,onDownloadProgress:yt,onUploadProgress:mn,responseType:he,headers:bt,withCredentials:Je="same-origin",fetchOptions:gn}=nn(E),yn=i||fetch;he=he?(he+"").toLowerCase():"text";let Xe=ti([W,ae&&ae.toAbortSignal()],_e),Ce=null;const ve=Xe&&Xe.unsubscribe&&(()=>{Xe.unsubscribe()});let bn;try{if(mn&&S&&V!=="get"&&V!=="head"&&(bn=await U(bt,Y))!==0){let ge=new s(R,{method:"POST",body:Y,duplex:"half"}),ke;if(w.isFormData(Y)&&(ke=ge.headers.get("content-type"))&&bt.setContentType(ke),ge.body){const[wt,Ke]=Zt(bn,He(Yt(mn)));Y=on(ge.body,rn,wt,Ke)}}w.isString(Je)||(Je=Je?"include":"omit");const ue=m&&"credentials"in s.prototype,wn=Pe(oe({},gn),{signal:Xe,method:V.toUpperCase(),headers:bt.normalize().toJSON(),body:Y,duplex:"half",credentials:ue?Je:void 0});Ce=m&&new s(R,wn);let me=await(m?yn(Ce,gn):yn(R,wn));const vn=O&&(he==="stream"||he==="response");if(O&&(yt||vn&&ve)){const ge={};["status","statusText","headers"].forEach(An=>{ge[An]=me[An]});const ke=w.toFiniteNumber(me.headers.get("content-length")),[wt,Ke]=yt&&Zt(ke,He(Yt(yt),!0))||[];me=new a(on(me.body,rn,wt,()=>{Ke&&Ke(),ve&&ve()}),ge)}he=he||"text";let _i=await L[w.findKey(L,he)||"text"](me,E);return!vn&&ve&&ve(),await new Promise((ge,ke)=>{Qt(ge,ke,{data:_i,headers:ne.from(me.headers),status:me.status,statusText:me.statusText,config:E,request:Ce})})}catch(ue){throw ve&&ve(),ue&&ue.name==="TypeError"&&/Load failed|fetch/i.test(ue.message)?Object.assign(new M("Network Error",M.ERR_NETWORK,E,Ce),{cause:ue.cause||ue}):M.from(ue,ue&&ue.code,E,Ce)}}},ai=new Map,ln=t=>{let i=t?t.env:{};const{fetch:s,Request:a,Response:d}=i,m=[a,d,s];let h=m.length,k=h,N,S,O=ai;for(;k--;)N=m[k],S=O.get(N),S===void 0&&O.set(N,S=k?new Map:si(i)),O=S;return S};ln();const _t={http:xo,xhr:ei,fetch:{get:ln}};w.forEach(_t,(t,i)=>{if(t){try{Object.defineProperty(t,"name",{value:i})}catch(s){}Object.defineProperty(t,"adapterName",{value:i})}});const cn=t=>"- ".concat(t),ui=t=>w.isFunction(t)||t===null||t===!1;var dn={getAdapter:(t,i)=>{t=w.isArray(t)?t:[t];const{length:s}=t;let a,d;const m={};for(let h=0;h"adapter ".concat(N," ")+(S===!1?"is not supported by the environment":"is not available in the build"));let k=s?h.length>1?"since :\n"+h.map(cn).join("\n"):" "+cn(h[0]):"as no adapter specified";throw new M("There is no suitable adapter to dispatch the request "+k,"ERR_NOT_SUPPORT")}return d},adapters:_t};function ht(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new xe(null,t)}function fn(t){return ht(t),t.headers=ne.from(t.headers),t.data=pt.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),dn.getAdapter(t.adapter||dt.adapter,t)(t).then(function(i){return ht(t),i.data=pt.call(t,t.transformResponse,i),i.headers=ne.from(i.headers),i},function(i){return Kt(i)||(ht(t),i&&i.response&&(i.response.data=pt.call(t,t.transformResponse,i.response),i.response.headers=ne.from(i.response.headers))),Promise.reject(i)})}const pn="1.12.2",$e={};["object","boolean","number","function","string","symbol"].forEach((t,i)=>{$e[t]=function(s){return typeof s===t||"a"+(i<1?"n ":" ")+t}});const _n={};$e.transitional=function(t,i,s){function a(d,m){return"[Axios v"+pn+"] Transitional option '"+d+"'"+m+(s?". "+s:"")}return(d,m,h)=>{if(t===!1)throw new M(a(m," has been removed"+(i?" in "+i:"")),M.ERR_DEPRECATED);return i&&!_n[m]&&(_n[m]=!0,console.warn(a(m," has been deprecated since v"+i+" and will be removed in the near future"))),t?t(d,m,h):!0}},$e.spelling=function(t){return(i,s)=>(console.warn("".concat(s," is likely a misspelling of ").concat(t)),!0)};function li(t,i,s){if(typeof t!="object")throw new M("options must be an object",M.ERR_BAD_OPTION_VALUE);const a=Object.keys(t);let d=a.length;for(;d-- >0;){const m=a[d],h=i[m];if(h){const k=t[m],N=k===void 0||h(k,m,t);if(N!==!0)throw new M("option "+m+" must be "+N,M.ERR_BAD_OPTION_VALUE);continue}if(s!==!0)throw new M("Unknown option "+m,M.ERR_BAD_OPTION)}}var Ge={assertOptions:li,validators:$e};const se=Ge.validators;class ze{constructor(i){this.defaults=i||{},this.interceptors={request:new zt,response:new zt}}async request(i,s){try{return await this._request(i,s)}catch(a){if(a instanceof Error){let d={};Error.captureStackTrace?Error.captureStackTrace(d):d=new Error;const m=d.stack?d.stack.replace(/^.+\n/,""):"";try{a.stack?m&&!String(a.stack).endsWith(m.replace(/^.+\n.+\n/,""))&&(a.stack+="\n"+m):a.stack=m}catch(h){}}throw a}}_request(i,s){typeof i=="string"?(s=s||{},s.url=i):s=i||{},s=we(this.defaults,s);const{transitional:a,paramsSerializer:d,headers:m}=s;a!==void 0&&Ge.assertOptions(a,{silentJSONParsing:se.transitional(se.boolean),forcedJSONParsing:se.transitional(se.boolean),clarifyTimeoutError:se.transitional(se.boolean)},!1),d!=null&&(w.isFunction(d)?s.paramsSerializer={serialize:d}:Ge.assertOptions(d,{encode:se.function,serialize:se.function},!0)),s.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?s.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:s.allowAbsoluteUrls=!0),Ge.assertOptions(s,{baseUrl:se.spelling("baseURL"),withXsrfToken:se.spelling("withXSRFToken")},!0),s.method=(s.method||this.defaults.method||"get").toLowerCase();let h=m&&w.merge(m.common,m[s.method]);m&&w.forEach(["delete","get","head","post","put","patch","common"],E=>{delete m[E]}),s.headers=ne.concat(h,m);const k=[];let N=!0;this.interceptors.request.forEach(function(E){typeof E.runWhen=="function"&&E.runWhen(s)===!1||(N=N&&E.synchronous,k.unshift(E.fulfilled,E.rejected))});const S=[];this.interceptors.response.forEach(function(E){S.push(E.fulfilled,E.rejected)});let O,L=0,q;if(!N){const E=[fn.bind(this),void 0];for(E.unshift(...k),E.push(...S),q=E.length,O=Promise.resolve(s);L{if(!a._listeners)return;let m=a._listeners.length;for(;m-- >0;)a._listeners[m](d);a._listeners=null}),this.promise.then=d=>{let m;const h=new Promise(k=>{a.subscribe(k),m=k}).then(d);return h.cancel=function(){a.unsubscribe(m)},h},i(function(d,m,h){a.reason||(a.reason=new xe(d,m,h),s(a.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(i){if(this.reason){i(this.reason);return}this._listeners?this._listeners.push(i):this._listeners=[i]}unsubscribe(i){if(!this._listeners)return;const s=this._listeners.indexOf(i);s!==-1&&this._listeners.splice(s,1)}toAbortSignal(){const i=new AbortController,s=a=>{i.abort(a)};return this.subscribe(s),i.signal.unsubscribe=()=>this.unsubscribe(s),i.signal}static source(){let i;return{token:new mt(function(s){i=s}),cancel:i}}}var ci=mt;function di(t){return function(i){return t.apply(null,i)}}function fi(t){return w.isObject(t)&&t.isAxiosError===!0}const gt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(gt).forEach(([t,i])=>{gt[i]=t});var pi=gt;function hn(t){const i=new We(t),s=c(We.prototype.request,i);return w.extend(s,We.prototype,i,{allOwnKeys:!0}),w.extend(s,i,null,{allOwnKeys:!0}),s.create=function(a){return hn(we(t,a))},s}const z=hn(dt);return z.Axios=We,z.CanceledError=xe,z.CancelToken=ci,z.isCancel=Kt,z.VERSION=pn,z.toFormData=Ue,z.AxiosError=M,z.Cancel=z.CanceledError,z.all=function(t){return Promise.all(t)},z.spread=di,z.isAxiosError=fi,z.mergeConfig=we,z.AxiosHeaders=ne,z.formToJSON=t=>Jt(w.isHTMLForm(t)?new FormData(t):t),z.getAdapter=dn.getAdapter,z.HttpStatusCode=pi,z.default=z,It=z,It}var Vn={},$n;function Tr(){return $n||($n=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});const g=(n,r)=>A(n,"",r),o=n=>"/remote.php/"+n,l=(n,r)=>{var u;return((u=r==null?void 0:r.baseURL)!=null?u:T())+o(n)},f=(n,r,u)=>{var _;const y=Object.assign({ocsVersion:2},u||{}).ocsVersion===1?1:2;return((_=u==null?void 0:u.baseURL)!=null?_:T())+"/ocs/v"+y+".php"+b(n,r,u)},b=(n,r,u)=>{const _=Object.assign({escape:!0},u||{}),y=function(p,x){return x=x||{},p.replace(/{([^{}]*)}/g,function(C,F){const H=x[F];return _.escape?encodeURIComponent(typeof H=="string"||typeof H=="number"?H.toString():C):typeof H=="string"||typeof H=="number"?H.toString():C})};return n.charAt(0)!=="/"&&(n="/"+n),y(n,r||{})},v=(n,r,u)=>{var _,y,p;const x=Object.assign({noRewrite:!1},u||{}),C=(_=u==null?void 0:u.baseURL)!=null?_:B();return((p=(y=window==null?void 0:window.OC)==null?void 0:y.config)==null?void 0:p.modRewriteWorking)===!0&&!x.noRewrite?C+b(n,r,u):C+"/index.php"+b(n,r,u)},I=(n,r)=>r.includes(".")?A(n,"img",r):A(n,"img","".concat(r,".svg")),A=(n,r,u)=>{var _,y,p;const x=(p=(y=(_=window==null?void 0:window.OC)==null?void 0:_.coreApps)==null?void 0:y.includes(n))!=null?p:!1,C=u.slice(-3)==="php";let F=B();return C&&!x?(F+="/index.php/apps/".concat(n),r&&(F+="/".concat(encodeURI(r))),u!=="index.php"&&(F+="/".concat(u))):!C&&!x?(F=e(n),r&&(F+="/".concat(r,"/")),F.at(-1)!=="/"&&(F+="/"),F+=u):((n==="settings"||n==="core"||n==="search")&&r==="ajax"&&(F+="/index.php"),n&&(F+="/".concat(n)),r&&(F+="/".concat(r)),F+="/".concat(u)),F},T=()=>window.location.protocol+"//"+window.location.host+B();function B(){let n=window._oc_webroot;if(typeof n>"u"){n=location.pathname;const r=n.indexOf("/index.php/");if(r!==-1)n=n.slice(0,r);else{const u=n.indexOf("/",1);n=n.slice(0,u>0?u:void 0)}}return n}function e(n){var r,u;return(u=((r=window._oc_appswebroots)!=null?r:{})[n])!=null?u:""}c.generateFilePath=A,c.generateOcsUrl=f,c.generateRemoteUrl=l,c.generateUrl=v,c.getAppRootUrl=e,c.getBaseUrl=T,c.getRootUrl=B,c.imagePath=I,c.linkTo=g}(Vn)),Vn}var Gn;function xr(){return Gn||(Gn=1,function(c){var n;Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=vr(),o=Ar(),l=Tr(),f=(r=>r&&r.__esModule?r:{default:r})(o),b=f.default.create({headers:{requesttoken:(n=g.getRequestToken())!=null?n:"","X-Requested-With":"XMLHttpRequest"}});g.onRequestTokenUpdate(r=>{b.defaults.headers.requesttoken=r});const v=Object.assign(b,{CancelToken:f.default.CancelToken,isCancel:f.default.isCancel}),I=Symbol("csrf-retry");function A(r){return async u=>{var C;if(!o.isAxiosError(u))throw u;const{config:_,response:y,request:p}=u,x=p==null?void 0:p.responseURL;if(_&&!_[I]&&(y==null?void 0:y.status)===412&&((C=y==null?void 0:y.data)==null?void 0:C.message)==="CSRF check failed"){console.warn("Request to ".concat(x," failed because of a CSRF mismatch. Fetching a new token"));const{data:{token:F}}=await r.get(l.generateUrl("/csrftoken"));return console.debug("New request token ".concat(F," fetched")),r.defaults.headers.requesttoken=F,r(Pe(oe({},_),{headers:Pe(oe({},_.headers),{requesttoken:F}),[I]:!0}))}throw u}}const T=Symbol("retryDelay");function B(r){return async u=>{if(!o.isAxiosError(u))throw u;const{config:_,response:y,request:p}=u,x=p==null?void 0:p.responseURL,C=y==null?void 0:y.status,F=y==null?void 0:y.headers;let H=typeof(_==null?void 0:_[T])=="number"?_==null?void 0:_[T]:1;if(C===503&&(F==null?void 0:F["x-nextcloud-maintenance-mode"])==="1"&&(_!=null&&_.retryIfMaintenanceMode)){if(H*=2,H>32)throw console.error("Retry delay exceeded one minute, giving up.",{responseURL:x}),u;return console.warn("Request to ".concat(x," failed because of maintenance mode. Retrying in ").concat(H,"s")),await new Promise(re=>{setTimeout(re,H*1e3)}),r(Pe(oe({},_),{[T]:H}))}throw u}}async function e(r){var u;if(o.isAxiosError(r)){const{config:_,response:y,request:p}=r,x=p==null?void 0:p.responseURL;(y==null?void 0:y.status)===401&&((u=y==null?void 0:y.data)==null?void 0:u.message)==="Current user is not logged in"&&(_!=null&&_.reloadExpiredSession)&&(window!=null&&window.location)&&(console.error("Request to ".concat(x," failed because the user session expired. Reloading the page …")),window.location.reload())}throw r}v.interceptors.response.use(r=>r,A(v)),v.interceptors.response.use(r=>r,B(v)),v.interceptors.response.use(r=>r,e),Object.defineProperty(c,"isAxiosError",{enumerable:!0,get:()=>o.isAxiosError}),Object.defineProperty(c,"isCancel",{enumerable:!0,get:()=>o.isCancel}),c.default=v}(Ln)),Ln}var zn;function kr(){if(zn)return ce;zn=1;var c=ce&&ce.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(ce,"__esModule",{value:!0}),ce.listen=ce.getSupportedTypes=void 0;const g=br(),o=c(xr()),l=Zn();function f(){const A=(0,g.getCapabilities)();return A.notify_push?A.notify_push.type:[]}ce.getSupportedTypes=f;function b(A,T,B={}){return v(B),window._notify_push_listeners[A]||(window._notify_push_listeners[A]=[]),window._notify_push_listeners[A].push(T),window._notify_push_ws!==null&&typeof window._notify_push_ws=="object"?window._notify_push_ws.send("listen "+A):I(B),window._notify_push_available}ce.listen=b;function v(A={}){typeof window._notify_push_listeners>"u"&&(window._notify_push_listeners={},window._notify_push_ws=null,window._notify_push_online=!0,window._notify_push_available=!1,window._notify_push_error_count=0,(0,l.subscribe)("networkOffline",()=>{window._notify_push_online=!1,window._notify_push_ws=null}),(0,l.subscribe)("networkOnline",()=>{window._notify_push_error_count=0,window._notify_push_online=!0,I(A)}))}async function I(A={}){if(window._notify_push_ws)return!0;window._notify_push_ws=!0;const T=(0,g.getCapabilities)();if(!T.notify_push)return window._notify_push_available=!1,window._notify_push_ws=null,!1;window._notify_push_available=!0;let B;return A.credentials||(B=(await o.default.post(T.notify_push.endpoints.pre_auth)).data),window._notify_push_ws=new WebSocket(T.notify_push.endpoints.websocket),window._notify_push_ws.onopen=()=>{if(typeof window._notify_push_ws=="object"&&window._notify_push_ws){B?(window._notify_push_ws.send(""),window._notify_push_ws.send(B)):A.credentials&&(window._notify_push_ws.send(A.credentials.username),window._notify_push_ws.send(A.credentials.password));for(let e in window._notify_push_listeners)window._notify_push_ws.send("listen "+e)}},window._notify_push_ws.onmessage=e=>{if(e.data==="authenticated")window._notify_push_error_count=0;else{const n=e.data.indexOf(" ");let[r,u]=n>0?[e.data.slice(0,n),e.data.slice(n+1)]:[e.data,null];if(u&&(u=JSON.parse(u)),window._notify_push_listeners[r])for(let _ of window._notify_push_listeners[r])_(r,u)}},window._notify_push_ws.onerror=window._notify_push_ws.onclose=()=>{window._notify_push_ws=null,window._notify_push_error_count+=1,setTimeout(()=>{window._notify_push_online&&I(A)},1e3*window._notify_push_error_count)},!0}return ce}var Sr=kr();const Ir={name:"BellOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Er=["aria-hidden","aria-label"],Or=["fill","width","height"],Nr={d:"M10 21H14C14 22.1 13.1 23 12 23S10 22.1 10 21M21 19V20H3V19L5 17V11C5 7.9 7 5.2 10 4.3V4C10 2.9 10.9 2 12 2S14 2.9 14 4V4.3C17 5.2 19 7.9 19 11V17L21 19M17 11C17 8.2 14.8 6 12 6S7 8.2 7 11V18H17V11Z"},Rr={key:0};function Cr(c,g,o,l,f,b){return P(),j("span",Fe(c.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon bell-outline-icon",role:"img",onClick:g[0]||(g[0]=v=>c.$emit("click",v))}),[(P(),j("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[X("path",Nr,[o.title?(P(),j("title",Rr,$(o.title),1)):G("",!0)])],8,Or))],16,Er)}const Pr=fe(Ir,[["render",Cr]]),Br={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Fr=["aria-hidden","aria-label"],jr=["fill","width","height"],Lr={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},Mr={key:0};function Ur(c,g,o,l,f,b){return P(),j("span",Fe(c.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon close-icon",role:"img",onClick:g[0]||(g[0]=v=>c.$emit("click",v))}),[(P(),j("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[X("path",Lr,[o.title?(P(),j("title",Mr,$(o.title),1)):G("",!0)])],8,jr))],16,Fr)}const Yn=fe(Br,[["render",Ur]]),Dr={name:"MessageOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},qr=["aria-hidden","aria-label"],Hr=["fill","width","height"],Vr={d:"M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16Z"},$r={key:0};function Gr(c,g,o,l,f,b){return P(),j("span",Fe(c.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon message-outline-icon",role:"img",onClick:g[0]||(g[0]=v=>c.$emit("click",v))}),[(P(),j("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[X("path",Vr,[o.title?(P(),j("title",$r,$(o.title),1)):G("",!0)])],8,Hr))],16,qr)}const eo=fe(Dr,[["render",Gr]]),zr={name:"BellIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Wr=["aria-hidden","aria-label"],Jr=["fill","width","height"],Xr={d:"M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21"},Kr={key:0};function Qr(c,g,o,l,f,b){return P(),j("span",Fe(c.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon bell-icon",role:"img",onClick:g[0]||(g[0]=v=>c.$emit("click",v))}),[(P(),j("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[X("path",Xr,[o.title?(P(),j("title",Kr,$(o.title),1)):G("",!0)])],8,Jr))],16,Wr)}const Zr=fe(zr,[["render",Qr]]),Yr={key:0,class:"notifications-button__icon"},es=["width","height"],ts={__name:"IconNotification",props:{showDot:{type:Boolean,default:!1},showWarning:{type:Boolean,default:!1},size:{type:Number,default:20}},setup(c){var v;const g=(v=ji())==null?void 0:v.theming,o=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;function l(I){const A=parseInt(I.substring(1,3),16)/255,T=parseInt(I.substring(3,5),16)/255,B=parseInt(I.substring(5,7),16)/255,e=Math.max(A,T,B),n=Math.min(A,T,B);let r=0,u=0;const _=(e+n)/2;if(e!==n){const y=e-n;switch(u=_>.5?y/(2-e-n):y/(e+n),e){case A:r=(T-B)/y+(T{if(!(g!=null&&g.color)||!o.test(g==null?void 0:g.color))return!1;const[I,A,T]=l(g.color);return(I>=330||I<=15)&&A>.4&&(T>.1||T<.6)}),b=te(()=>{if(!(g!=null&&g.color)||!o.test(g==null?void 0:g.color))return!1;const[I,A,T]=l(g.color);return(I>=305||I<=64)&&A>.7&&(T>.1||T<.6)});return(I,A)=>c.showDot||c.showWarning?(P(),j("span",Yr,[(P(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1",width:c.size,height:c.size,viewBox:"0 0 24 24",fill:"currentColor"},[A[0]||(A[0]=X("path",{d:"M 19,11.79 C 18.5,11.92 18,12 17.5,12 14.47,12 12,9.53 12,6.5 12,5.03 12.58,3.7 13.5,2.71 13.15,2.28 12.61,2 12,2 10.9,2 10,2.9 10,4 V 4.29 C 7.03,5.17 5,7.9 5,11 v 6 l -2,2 v 1 H 21 V 19 L 19,17 V 11.79 M 12,23 c 1.11,0 2,-0.89 2,-2 h -4 c 0,1.11 0.9,2 2,2 z"},null,-1)),X("path",{class:Pt(["notification__dot",{"notification__dot--warning":c.showWarning&&!b.value,"notification__dot--white":f.value||c.showWarning&&b.value}]),d:"M 21,6.5 C 21,8.43 19.43,10 17.5,10 15.57,10 14,8.43 14,6.5 14,4.57 15.57,3 17.5,3 19.43,3 21,4.57 21,6.5"},null,2)],8,es))])):(P(),Q(Zr,{key:1,class:"notifications-button__icon",size:c.size},null,8,["size"]))}},ns={__name:"ActionButton",props:{action:{type:Object,required:!0}},emits:["click"],setup(c,{emit:g}){const o=c,l=g,f=te(()=>o.action.type==="WEB");function b(v){const I={url:o.action.link,type:o.action.type||"GET"};l("click",{event:v,action:I})}return(v,I)=>(P(),Q(ye(tt),{variant:f.value||c.action.primary?"primary":"secondary",href:f.value?c.action.link:void 0,class:"action-button pull-right",onClick:b},{default:J(()=>[Be($(c.action.label),1)]),_:1},8,["variant","href"]))}},os={name:"DefaultParameter",props:{type:{type:String,required:!0},id:{type:[Number,String],required:!0},name:{type:String,required:!0},link:{type:String,default:""}},computed:{hasInternalLink(){return this.link&&(this.type==="deck-board"||this.type==="deck-card")}}},is=["href"],rs=["href"],ss={key:2};function as(c,g,o,l,f,b){return b.hasInternalLink?(P(),j("a",{key:0,href:o.link},[X("strong",null,$(o.name),1)],8,is)):o.link?(P(),j("a",{key:1,href:o.link,class:"external",target:"_blank",rel:"noopener noreferrer"},[X("strong",null,$(o.name),1)],8,rs)):(P(),j("strong",ss,$(o.name),1))}const us=fe(os,[["render",as],["__scopeId","data-v-9803ab31"]]),ls={name:"FileParameter",props:{type:{type:String,required:!0},id:{type:[Number,String],required:!0},name:{type:String,required:!0},path:{type:String,default:""},link:{type:String,default:""}},computed:{title(){const c=this.path.lastIndexOf("/"),g=this.path.indexOf("/"),o=this.path.substring(g===0?1:0,c);return o.length===0?"":le("notifications","in {path}",{path:o})}}},cs=["title","href"];function ds(c,g,o,l,f,b){return P(),j("a",{title:b.title,class:"filename",href:o.link},$(o.name),9,cs)}const fs=fe(ls,[["render",ds]]),ps={name:"UserParameter",components:{NcUserBubble:gr},props:{type:{type:String,required:!0},id:{type:String,required:!0},name:{type:String,required:!0},server:{type:String,default:""}},computed:{cloudId(){return this.server?this.id+"@"+this.server:""}}},_s={class:"mention"},hs=["title"];function ms(c,g,o,l,f,b){const v=ee("NcUserBubble");return P(),j("div",_s,[b.cloudId?(P(),j("strong",{key:1,title:b.cloudId},$(o.name),9,hs)):(P(),Q(v,{key:0,"display-name":o.name,user:o.id},null,8,["display-name","user"]))])}const gs=fe(ps,[["render",ms],["__scopeId","data-v-85edf4b2"]]),ys={name:"NotificationItem",components:{ActionButton:ns,NcButton:tt,NcDateTime:ir,IconClose:Yn,IconMessageOutline:eo,NcRichText:Li},props:{notification:{type:Object,required:!0}},emits:["remove"],data(){return{showFullMessage:!1}},computed:{timestamp(){return this.notification.datetime==="warning"?0:new Date(this.notification.datetime).valueOf()},useLink(){if(!this.notification.link)return!1;let c=!1;return Object.keys(Object(this.notification.subjectRichParameters)).forEach(g=>{Object(this.notification.subjectRichParameters)[g].link&&(c=!0)}),!c},preparedSubjectParameters(){return this.prepareParameters(this.notification.subjectRichParameters)},preparedMessageParameters(){return this.prepareParameters(this.notification.messageRichParameters)},isCollapsedMessage(){return this.notification.message.length>200&&!this.showFullMessage}},methods:{t:le,prepareParameters(c={}){const g={};return Object.keys(c).forEach(o=>{const l=c[o].type;l==="user"?g[o]={component:gs,props:c[o]}:l==="file"?g[o]={component:fs,props:c[o]}:g[o]={component:us,props:c[o]}}),g},onClickMessage(c){c.target.closest(".rich-text--wrapper")?this.showFullMessage=!this.showFullMessage:!this.notification.messageRich&&this.notification.message&&(this.showFullMessage=!this.showFullMessage)},async onClickAction({event:c,action:g}){try{const o={cancelAction:!1,notification:this.notification,action:g};if(await Ze("notifications:action:execute",o),g.type==="WEB"){o.cancelAction&&c.preventDefault();return}if(o.cancelAction)return;await Qe({method:g.type,url:g.url}),this.$emit("remove"),Ze("notifications:action:executed",c)}catch(o){console.error("Failed to perform action",o),Nt(le("notifications","Failed to perform action"))}},onDismissNotification(){Qe.delete(Ct("apps/notifications/api/v2/notifications/{id}",{id:this.notification.notificationId})).then(()=>{this.$emit("remove")}).catch(()=>{Nt(le("notifications","Failed to dismiss notification"))})}}},bs=["data-id","data-timestamp","data-object-type","data-app"],ws={class:"notification-heading"},vs=["href"],As={key:0,class:"image"},Ts=["src"],xs={class:"subject"},ks=["href"],Ss={key:0,class:"image"},Is=["src"],Es={key:2,class:"subject"},Os={key:2,class:"notification-subject"},Ns={key:0,class:"image"},Rs=["src"],Cs={key:2,class:"subject"},Ps={key:1},Bs={key:0,class:"notification-overflow"},Fs={key:4,class:"notification-actions"},js={key:5,class:"notification-actions"};function Ls(c,g,o,l,f,b){const v=ee("NcDateTime"),I=ee("IconClose"),A=ee("NcButton"),T=ee("NcRichText"),B=ee("ActionButton"),e=ee("IconMessageOutline");return P(),j("li",{class:"notification","data-id":o.notification.notificationId,"data-timestamp":b.timestamp,"data-object-type":o.notification.objectType,"data-app":o.notification.app},[X("div",ws,[b.timestamp?(P(),Q(v,{key:0,class:"notification-time","ignore-seconds":"",format:{timeStyle:"short",dateStyle:"long"},timestamp:b.timestamp},null,8,["timestamp"])):G("",!0),b.timestamp?(P(),Q(A,{key:1,class:"notification-dismiss-button",variant:"tertiary","aria-label":b.t("notifications","Dismiss"),onClick:b.onDismissNotification},{icon:J(()=>[ie(I,{size:20})]),_:1},8,["aria-label","onClick"])):G("",!0)]),o.notification.externalLink?(P(),j("a",{key:0,href:o.notification.externalLink,class:"notification-subject full-subject-link external",target:"_blank",rel:"noreferrer noopener"},[o.notification.icon?(P(),j("span",As,[X("img",{src:o.notification.icon,class:"notification-icon",alt:""},null,8,Ts)])):G("",!0),X("span",xs,$(o.notification.subject)+" ↗",1)],8,vs)):b.useLink?(P(),j("a",{key:1,href:o.notification.link,class:"notification-subject full-subject-link"},[o.notification.icon?(P(),j("span",Ss,[X("img",{src:o.notification.icon,class:"notification-icon",alt:""},null,8,Is)])):G("",!0),o.notification.subjectRich?(P(),Q(T,{key:1,text:o.notification.subjectRich,arguments:b.preparedSubjectParameters},null,8,["text","arguments"])):(P(),j("span",Es,$(o.notification.subject),1))],8,ks)):(P(),j("div",Os,[o.notification.icon?(P(),j("span",Ns,[X("img",{src:o.notification.icon,class:"notification-icon",alt:""},null,8,Rs)])):G("",!0),o.notification.subjectRich?(P(),Q(T,{key:1,text:o.notification.subjectRich,arguments:b.preparedSubjectParameters},null,8,["text","arguments"])):(P(),j("span",Cs,$(o.notification.subject),1))])),o.notification.message?(P(),j("div",{key:3,class:"notification-message",onClick:g[0]||(g[0]=(...n)=>b.onClickMessage&&b.onClickMessage(...n))},[X("div",{class:Pt(["message-container",{collapsed:b.isCollapsedMessage}])},[o.notification.messageRich?(P(),Q(T,{key:0,text:o.notification.messageRich,arguments:b.preparedMessageParameters,autolink:!0},null,8,["text","arguments"])):(P(),j("span",Ps,$(o.notification.message),1))],2),b.isCollapsedMessage?(P(),j("div",Bs)):G("",!0)])):G("",!0),o.notification.actions.length?(P(),j("div",Fs,[(P(!0),j(Kn,null,Qn(o.notification.actions,(n,r)=>(P(),Q(B,{key:r,action:n,onClick:b.onClickAction,onRemove:g[1]||(g[1]=u=>c.$emit("remove"))},null,8,["action","onClick"]))),128))])):o.notification.externalLink?(P(),j("div",js,[ie(A,{variant:"primary",href:"https://nextcloud.com/fairusepolicy",class:"action-button pull-right",target:"_blank",rel:"noreferrer noopener"},{icon:J(()=>[ie(e,{size:20})]),default:J(()=>[Be(" "+$(b.t("notifications","Contact Nextcloud GmbH"))+" ↗ ",1)]),_:1})])):G("",!0)],8,bs)}const Ms=fe(ys,[["render",Ls],["__scopeId","data-v-58882784"]]);async function to(c,g,o,l){const f=parseInt(K.getItem("lastUpdated"),10),b=K.getItem("tabId"),v=Math.floor(Date.now()/1e3);return(o||b===c&&f+25=0&&e<=1){if(n._volume=e,n._muted)return n;n.usingWebAudio&&n.masterGain.gain.setValueAtTime(e,o.ctx.currentTime);for(var r=0;r=0;n--)e._howls[n].unload();return e.usingWebAudio&&e.ctx&&typeof e.ctx.close<"u"&&(e.ctx.close(),e.ctx=null,B()),e},codecs:function(e){return(this||o)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||o;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if(typeof Audio<"u")try{var n=new Audio;typeof n.oncanplaythrough>"u"&&(e._canPlayEvent="canplay")}catch(r){e.noAudio=!0}else e.noAudio=!0;try{var n=new Audio;n.muted&&(e.noAudio=!0)}catch(r){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||o,n=null;try{n=typeof Audio<"u"?new Audio:null}catch(F){return e}if(!n||typeof n.canPlayType!="function")return e;var r=n.canPlayType("audio/mpeg;").replace(/^no$/,""),u=e._navigator?e._navigator.userAgent:"",_=u.match(/OPR\/(\d+)/g),y=_&&parseInt(_[0].split("/")[1],10)<33,p=u.indexOf("Safari")!==-1&&u.indexOf("Chrome")===-1,x=u.match(/Version\/(.*?) /),C=p&&x&&parseInt(x[1],10)<15;return e._codecs={mp3:!!(!y&&(r||n.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!r,opus:!!n.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(n.canPlayType('audio/wav; codecs="1"')||n.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!n.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!n.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(n.canPlayType("audio/x-m4a;")||n.canPlayType("audio/m4a;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(n.canPlayType("audio/x-m4b;")||n.canPlayType("audio/m4b;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(n.canPlayType("audio/x-mp4;")||n.canPlayType("audio/mp4;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!C&&n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!C&&n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!n.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(n.canPlayType("audio/x-flac;")||n.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||o;if(!(e._audioUnlocked||!e.ctx)){e._audioUnlocked=!1,e.autoUnlock=!1,!e._mobileUnloaded&&e.ctx.sampleRate!==44100&&(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var n=function(r){for(;e._html5AudioPool.length"u"?C.noteOn(0):C.start(0),typeof e.ctx.resume=="function"&&e.ctx.resume(),C.onended=function(){C.disconnect(0),e._audioUnlocked=!0,document.removeEventListener("touchstart",n,!0),document.removeEventListener("touchend",n,!0),document.removeEventListener("click",n,!0),document.removeEventListener("keydown",n,!0);for(var F=0;F"u"||!o.usingWebAudio)){for(var n=0;n"u"||!o.usingWebAudio))return e.state==="running"&&e.ctx.state!=="interrupted"&&e._suspendTimer?(clearTimeout(e._suspendTimer),e._suspendTimer=null):e.state==="suspended"||e.state==="running"&&e.ctx.state==="interrupted"?(e.ctx.resume().then(function(){e.state="running";for(var n=0;n"u"&&(e="__default",!r._playLock)){for(var _=0,y=0;y0?p._seek:r._sprite[e][0]/1e3),F=Math.max(0,(r._sprite[e][0]+r._sprite[e][1])/1e3-C),H=F*1e3/Math.abs(p._rate),re=r._sprite[e][0]/1e3,Te=(r._sprite[e][0]+r._sprite[e][1])/1e3;p._sprite=e,p._ended=!1;var Oe=function(){p._paused=!1,p._seek=C,p._start=re,p._stop=Te,p._loop=!!(p._loop||r._sprite[e][2])};if(C>=Te){r._ended(p);return}var D=p._node;if(r._webAudio){var je=function(){r._playLock=!1,Oe(),r._refreshBuffer(p);var pe=p._muted||r._muted?0:p._volume;D.gain.setValueAtTime(pe,o.ctx.currentTime),p._playStart=o.ctx.currentTime,typeof D.bufferSource.start>"u"?p._loop?D.bufferSource.noteGrainOn(0,C,86400):D.bufferSource.noteGrainOn(0,C,F):p._loop?D.bufferSource.start(0,C,86400):D.bufferSource.start(0,C,F),H!==1/0&&(r._endTimers[p._id]=setTimeout(r._ended.bind(r,p),H)),n||setTimeout(function(){r._emit("play",p._id),r._loadQueue()},0)};o.state==="running"&&o.ctx.state!=="interrupted"?je():(r._playLock=!0,r.once("resume",je),r._clearTimer(p._id))}else{var Le=function(){D.currentTime=C,D.muted=p._muted||r._muted||o._muted||D.muted,D.volume=p._volume*o.volume(),D.playbackRate=p._rate;try{var pe=D.play();if(pe&&typeof Promise<"u"&&(pe instanceof Promise||typeof pe.then=="function")?(r._playLock=!0,Oe(),pe.then(function(){r._playLock=!1,D._unlocked=!0,n?r._loadQueue():r._emit("play",p._id)}).catch(function(){r._playLock=!1,r._emit("playerror",p._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),p._ended=!0,p._paused=!0})):n||(r._playLock=!1,Oe(),r._emit("play",p._id)),D.playbackRate=p._rate,D.paused){r._emit("playerror",p._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}e!=="__default"||p._loop?r._endTimers[p._id]=setTimeout(r._ended.bind(r,p),H):(r._endTimers[p._id]=function(){r._ended(p),D.removeEventListener("ended",r._endTimers[p._id],!1)},D.addEventListener("ended",r._endTimers[p._id],!1))}catch(it){r._emit("playerror",p._id,it)}};D.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(D.src=r._src,D.load());var ot=window&&window.ejecta||!D.readyState&&o._navigator.isCocoonJS;if(D.readyState>=3||ot)Le();else{r._playLock=!0,r._state="loading";var Me=function(){r._state="loaded",Le(),D.removeEventListener(o._canPlayEvent,Me,!1)};D.addEventListener(o._canPlayEvent,Me,!1),r._clearTimer(p._id)}}return p._id},pause:function(e){var n=this;if(n._state!=="loaded"||n._playLock)return n._queue.push({event:"pause",action:function(){n.pause(e)}}),n;for(var r=n._getSoundIds(e),u=0;u"u"?_._node.bufferSource.noteOff(0):_._node.bufferSource.stop(0),n._cleanBuffer(_._node)}else(!isNaN(_._node.duration)||_._node.duration===1/0)&&_._node.pause();arguments[1]||n._emit("pause",_?_._id:null)}return n},stop:function(e,n){var r=this;if(r._state!=="loaded"||r._playLock)return r._queue.push({event:"stop",action:function(){r.stop(e)}}),r;for(var u=r._getSoundIds(e),_=0;_"u"?y._node.bufferSource.noteOff(0):y._node.bufferSource.stop(0),r._cleanBuffer(y._node)):(!isNaN(y._node.duration)||y._node.duration===1/0)&&(y._node.currentTime=y._start||0,y._node.pause(),y._node.duration===1/0&&r._clearSound(y._node))),n||r._emit("stop",y._id))}return r},mute:function(e,n){var r=this;if(r._state!=="loaded"||r._playLock)return r._queue.push({event:"mute",action:function(){r.mute(e,n)}}),r;if(typeof n>"u")if(typeof e=="boolean")r._muted=e;else return r._muted;for(var u=r._getSoundIds(n),_=0;_"u"){var _=e._getSoundIds(),y=_.indexOf(n[0]);y>=0?u=parseInt(n[0],10):r=parseFloat(n[0])}else n.length>=2&&(r=parseFloat(n[0]),u=parseInt(n[1],10));var p;if(typeof r<"u"&&r>=0&&r<=1){if(e._state!=="loaded"||e._playLock)return e._queue.push({event:"volume",action:function(){e.volume.apply(e,n)}}),e;typeof u>"u"&&(e._volume=r),u=e._getSoundIds(u);for(var x=0;x"u")}}return _},_startFadeInterval:function(e,n,r,u,_,y){var p=this,x=n,C=r-n,F=Math.abs(C/.01),H=Math.max(4,F>0?u/F:u),re=Date.now();e._fadeTo=r,e._interval=setInterval(function(){var Te=(Date.now()-re)/u;re=Date.now(),x+=C*Te,x=Math.round(x*100)/100,C<0?x=Math.max(r,x):x=Math.min(r,x),p._webAudio?e._volume=x:p.volume(x,e._id,!0),y&&(p._volume=x),(rn&&x>=r)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,p.volume(r,e._id),p._emit("fade",e._id))},H)},_stopFade:function(e){var n=this,r=n._soundById(e);return r&&r._interval&&(n._webAudio&&r._node.gain.cancelScheduledValues(o.ctx.currentTime),clearInterval(r._interval),r._interval=null,n.volume(r._fadeTo,e),r._fadeTo=null,n._emit("fade",e)),n},loop:function(){var e=this,n=arguments,r,u,_;if(n.length===0)return e._loop;if(n.length===1)if(typeof n[0]=="boolean")r=n[0],e._loop=r;else return _=e._soundById(parseInt(n[0],10)),_?_._loop:!1;else n.length===2&&(r=n[0],u=parseInt(n[1],10));for(var y=e._getSoundIds(u),p=0;p=0?u=parseInt(n[0],10):r=parseFloat(n[0])}else n.length===2&&(r=parseFloat(n[0]),u=parseInt(n[1],10));var p;if(typeof r=="number"){if(e._state!=="loaded"||e._playLock)return e._queue.push({event:"rate",action:function(){e.rate.apply(e,n)}}),e;typeof u>"u"&&(e._rate=r),u=e._getSoundIds(u);for(var x=0;x=0?u=parseInt(n[0],10):e._sounds.length&&(u=e._sounds[0]._id,r=parseFloat(n[0]))}else n.length===2&&(r=parseFloat(n[0]),u=parseInt(n[1],10));if(typeof u>"u")return 0;if(typeof r=="number"&&(e._state!=="loaded"||e._playLock))return e._queue.push({event:"seek",action:function(){e.seek.apply(e,n)}}),e;var p=e._soundById(u);if(p)if(typeof r=="number"&&r>=0){var x=e.playing(u);x&&e.pause(u,!0),p._seek=r,p._ended=!1,e._clearTimer(u),!e._webAudio&&p._node&&!isNaN(p._node.duration)&&(p._node.currentTime=r);var C=function(){x&&e.play(u,!0),e._emit("seek",u)};if(x&&!e._webAudio){var F=function(){e._playLock?setTimeout(F,0):C()};setTimeout(F,0)}else C()}else if(e._webAudio){var H=e.playing(u)?o.ctx.currentTime-p._playStart:0,re=p._rateSeek?p._rateSeek-p._seek:0;return p._seek+(re+H*Math.abs(p._rate))}else return p._node.currentTime;return e},playing:function(e){var n=this;if(typeof e=="number"){var r=n._soundById(e);return r?!r._paused:!1}for(var u=0;u=0&&o._howls.splice(u,1);var _=!0;for(r=0;r=0){_=!1;break}return b&&_&&delete b[e._src],o.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,n,r,u){var _=this,y=_["_on"+e];return typeof n=="function"&&y.push(u?{id:r,fn:n,once:u}:{id:r,fn:n}),_},off:function(e,n,r){var u=this,_=u["_on"+e],y=0;if(typeof n=="number"&&(r=n,n=null),n||r)for(y=0;y<_.length;y++){var p=r===_[y].id;if(n===_[y].fn&&p||!n&&p){_.splice(y,1);break}}else if(e)u["_on"+e]=[];else{var x=Object.keys(u);for(y=0;y=0;y--)(!_[y].id||_[y].id===n||e==="load")&&(setTimeout(function(p){p.call(this,n,r)}.bind(u,_[y].fn),0),_[y].once&&u.off(e,_[y].fn,_[y].id));return u._loadQueue(e),u},_loadQueue:function(e){var n=this;if(n._queue.length>0){var r=n._queue[0];r.event===e&&(n._queue.shift(),n._loadQueue()),e||r.action()}return n},_ended:function(e){var n=this,r=e._sprite;if(!n._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;u--){if(r<=n)return;e._sounds[u]._ended&&(e._webAudio&&e._sounds[u]._node&&e._sounds[u]._node.disconnect(0),e._sounds.splice(u,1),r--)}}},_getSoundIds:function(e){var n=this;if(typeof e>"u"){for(var r=[],u=0;u=0;if(!e.bufferSource)return n;if(o._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),r))try{e.bufferSource.buffer=o._scratchBuffer}catch(u){}return e.bufferSource=null,n},_clearSound:function(e){var n=/MSIE |Trident\//.test(o._navigator&&o._navigator.userAgent);n||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var f=function(e){this._parent=e,this.init()};f.prototype={init:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++o._counter,n._sounds.push(e),e.create(),e},create:function(){var e=this,n=e._parent,r=o._muted||e._muted||e._parent._muted?0:e._volume;return n._webAudio?(e._node=typeof o.ctx.createGain>"u"?o.ctx.createGainNode():o.ctx.createGain(),e._node.gain.setValueAtTime(r,o.ctx.currentTime),e._node.paused=!0,e._node.connect(o.masterGain)):o.noAudio||(e._node=o._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(o._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=n._src,e._node.preload=n._preload===!0?"auto":n._preload,e._node.volume=r*o.volume(),e._node.load()),e},reset:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++o._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,n=e._parent;n._duration=Math.ceil(e._node.duration*10)/10,Object.keys(n._sprite).length===0&&(n._sprite={__default:[0,n._duration*1e3]}),n._state!=="loaded"&&(n._state="loaded",n._emit("load"),n._loadQueue()),e._node.removeEventListener(o._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,n=e._parent;n._duration===1/0&&(n._duration=Math.ceil(e._node.duration*10)/10,n._sprite.__default[1]===1/0&&(n._sprite.__default[1]=n._duration*1e3),n._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var b={},v=function(e){var n=e._src;if(b[n]){e._duration=b[n].duration,T(e);return}if(/^data:[^;]+;base64,/.test(n)){for(var r=atob(n.split(",")[1]),u=new Uint8Array(r.length),_=0;_0?(b[n._src]=_,T(n,_)):r()};typeof Promise<"u"&&o.ctx.decodeAudioData.length===1?o.ctx.decodeAudioData(e).then(u).catch(r):o.ctx.decodeAudioData(e,u,r)},T=function(e,n){n&&!e._duration&&(e._duration=n.duration),Object.keys(e._sprite).length===0&&(e._sprite={__default:[0,e._duration*1e3]}),e._state!=="loaded"&&(e._state="loaded",e._emit("load"),e._loadQueue())},B=function(){if(o.usingWebAudio){try{typeof AudioContext<"u"?o.ctx=new AudioContext:typeof webkitAudioContext<"u"?o.ctx=new webkitAudioContext:o.usingWebAudio=!1}catch(_){o.usingWebAudio=!1}o.ctx||(o.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(o._navigator&&o._navigator.platform),n=o._navigator&&o._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),r=n?parseInt(n[1],10):null;if(e&&r&&r<9){var u=/safari/.test(o._navigator&&o._navigator.userAgent.toLowerCase());o._navigator&&!u&&(o.usingWebAudio=!1)}o.usingWebAudio&&(o.masterGain=typeof o.ctx.createGain>"u"?o.ctx.createGainNode():o.ctx.createGain(),o.masterGain.gain.setValueAtTime(o._muted?0:o._volume,o.ctx.currentTime),o.masterGain.connect(o.ctx.destination)),o._setup()}};c.Howler=o,c.Howl=l,typeof Ee<"u"?(Ee.HowlerGlobal=g,Ee.Howler=o,Ee.Howl=l,Ee.Sound=f):typeof window<"u"&&(window.HowlerGlobal=g,window.Howler=o,window.Howl=l,window.Sound=f)})(),function(){HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(o){var l=this;if(!l.ctx||!l.ctx.listener)return l;for(var f=l._howls.length-1;f>=0;f--)l._howls[f].stereo(o);return l},HowlerGlobal.prototype.pos=function(o,l,f){var b=this;if(!b.ctx||!b.ctx.listener)return b;if(l=typeof l!="number"?b._pos[1]:l,f=typeof f!="number"?b._pos[2]:f,typeof o=="number")b._pos=[o,l,f],typeof b.ctx.listener.positionX<"u"?(b.ctx.listener.positionX.setTargetAtTime(b._pos[0],Howler.ctx.currentTime,.1),b.ctx.listener.positionY.setTargetAtTime(b._pos[1],Howler.ctx.currentTime,.1),b.ctx.listener.positionZ.setTargetAtTime(b._pos[2],Howler.ctx.currentTime,.1)):b.ctx.listener.setPosition(b._pos[0],b._pos[1],b._pos[2]);else return b._pos;return b},HowlerGlobal.prototype.orientation=function(o,l,f,b,v,I){var A=this;if(!A.ctx||!A.ctx.listener)return A;var T=A._orientation;if(l=typeof l!="number"?T[1]:l,f=typeof f!="number"?T[2]:f,b=typeof b!="number"?T[3]:b,v=typeof v!="number"?T[4]:v,I=typeof I!="number"?T[5]:I,typeof o=="number")A._orientation=[o,l,f,b,v,I],typeof A.ctx.listener.forwardX<"u"?(A.ctx.listener.forwardX.setTargetAtTime(o,Howler.ctx.currentTime,.1),A.ctx.listener.forwardY.setTargetAtTime(l,Howler.ctx.currentTime,.1),A.ctx.listener.forwardZ.setTargetAtTime(f,Howler.ctx.currentTime,.1),A.ctx.listener.upX.setTargetAtTime(b,Howler.ctx.currentTime,.1),A.ctx.listener.upY.setTargetAtTime(v,Howler.ctx.currentTime,.1),A.ctx.listener.upZ.setTargetAtTime(I,Howler.ctx.currentTime,.1)):A.ctx.listener.setOrientation(o,l,f,b,v,I);else return T;return A},Howl.prototype.init=function(o){return function(l){var f=this;return f._orientation=l.orientation||[1,0,0],f._stereo=l.stereo||null,f._pos=l.pos||null,f._pannerAttr={coneInnerAngle:typeof l.coneInnerAngle<"u"?l.coneInnerAngle:360,coneOuterAngle:typeof l.coneOuterAngle<"u"?l.coneOuterAngle:360,coneOuterGain:typeof l.coneOuterGain<"u"?l.coneOuterGain:0,distanceModel:typeof l.distanceModel<"u"?l.distanceModel:"inverse",maxDistance:typeof l.maxDistance<"u"?l.maxDistance:1e4,panningModel:typeof l.panningModel<"u"?l.panningModel:"HRTF",refDistance:typeof l.refDistance<"u"?l.refDistance:1,rolloffFactor:typeof l.rolloffFactor<"u"?l.rolloffFactor:1},f._onstereo=l.onstereo?[{fn:l.onstereo}]:[],f._onpos=l.onpos?[{fn:l.onpos}]:[],f._onorientation=l.onorientation?[{fn:l.onorientation}]:[],o.call(this,l)}}(Howl.prototype.init),Howl.prototype.stereo=function(o,l){var f=this;if(!f._webAudio)return f;if(f._state!=="loaded")return f._queue.push({event:"stereo",action:function(){f.stereo(o,l)}}),f;var b=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof l>"u")if(typeof o=="number")f._stereo=o,f._pos=[o,0,0];else return f._stereo;for(var v=f._getSoundIds(l),I=0;I"u")if(typeof o=="number")v._pos=[o,l,f];else return v._pos;for(var I=v._getSoundIds(b),A=0;A"u")if(typeof o=="number")v._orientation=[o,l,f];else return v._orientation;for(var I=v._getSoundIds(b),A=0;A"u"&&(f.pannerAttr||(f.pannerAttr={coneInnerAngle:f.coneInnerAngle,coneOuterAngle:f.coneOuterAngle,coneOuterGain:f.coneOuterGain,distanceModel:f.distanceModel,maxDistance:f.maxDistance,refDistance:f.refDistance,rolloffFactor:f.rolloffFactor,panningModel:f.panningModel}),o._pannerAttr={coneInnerAngle:typeof f.pannerAttr.coneInnerAngle<"u"?f.pannerAttr.coneInnerAngle:o._coneInnerAngle,coneOuterAngle:typeof f.pannerAttr.coneOuterAngle<"u"?f.pannerAttr.coneOuterAngle:o._coneOuterAngle,coneOuterGain:typeof f.pannerAttr.coneOuterGain<"u"?f.pannerAttr.coneOuterGain:o._coneOuterGain,distanceModel:typeof f.pannerAttr.distanceModel<"u"?f.pannerAttr.distanceModel:o._distanceModel,maxDistance:typeof f.pannerAttr.maxDistance<"u"?f.pannerAttr.maxDistance:o._maxDistance,refDistance:typeof f.pannerAttr.refDistance<"u"?f.pannerAttr.refDistance:o._refDistance,rolloffFactor:typeof f.pannerAttr.rolloffFactor<"u"?f.pannerAttr.rolloffFactor:o._rolloffFactor,panningModel:typeof f.pannerAttr.panningModel<"u"?f.pannerAttr.panningModel:o._panningModel});else return v=o._soundById(parseInt(l[0],10)),v?v._pannerAttr:o._pannerAttr;else l.length===2&&(f=l[0],b=parseInt(l[1],10));for(var I=o._getSoundIds(b),A=0;Aconsole.debug("Audio output successfully redirected to secondary speaker")).catch(n=>console.error("Failed to redirect audio output:",n)),e.play()}}}else Ye("notifications","sound_notification")&&new Ot.Howl({src:[In("notifications","img","notification.ogg")],volume:.5}).play()}const $s=Ye("core","config",{session_keepalive:!0}).session_keepalive,Gs=Ye("notifications","throttled_push_notifications"),zs={notificationId:-1,app:"core",user:"",datetime:"warning",objectId:"",objectType:"",subject:le("notifications","Push notifications might be unreliable"),message:le("notifications","Nextcloud GmbH sponsors a free push notification gateway for private users. To ensure good service, the gateway limits the number of push notifications per server. For enterprise users, a more scalable gateway is available. Contact Nextcloud GmbH for more information."),link:"https://nextcloud.com/fairusepolicy",actions:[],externalLink:"https://nextcloud.com/fairusepolicy",icon:qi("core","actions/alert-outline.svg")},Ws={name:"NotificationsApp",components:{IconBellOutline:Pr,IconClose:Yn,IconMessageOutline:eo,IconNotification:ts,NcButton:tt,NcEmptyContent:nr,NcHeaderMenu:cr,NotificationItem:Ms},setup(){return{fairUsePolicyNotification:zs,hasThrottledPushNotifications:Gs}},data(){return{webNotificationsGranted:!1,backgroundFetching:!1,hasNotifyPush:!1,shutdown:!1,notifications:[],lastETag:null,lastTabId:null,userStatus:null,tabId:null,webNotificationsThresholdId:0,pollIntervalBase:3e4,pollIntervalCurrent:3e4,interval:null,pushEndpoints:null,open:!1}},computed:{showBrowserNotifications(){return this.backgroundFetching&&this.webNotificationsGranted&&this.userStatus!=="dnd"&&this.tabId===this.lastTabId},emptyContentMessage(){return this.webNotificationsGranted===null?le("notifications","Requesting browser permissions to show notifications"):this.hasThrottledPushNotifications?this.fairUsePolicyNotification.subject:le("notifications","No notifications")},emptyContentDescription(){return this.hasThrottledPushNotifications?this.fairUsePolicyNotification.message:""}},mounted(){this.tabId=Di()||""+Math.random(),this._oldcount=0,this.checkWebNotificationPermissions(),this._fetch(),Sr.listen("notify_notification",()=>{this._fetchAfterNotifyPush()})&&(console.debug("Has notify_push enabled, slowing polling to 15 minutes"),this.pollIntervalBase=15*60*1e3,this.hasNotifyPush=!0),this._setPollingInterval(this.pollIntervalBase),this._watchTabVisibility(),kt("networkOffline",this.handleNetworkOffline),kt("networkOnline",this.handleNetworkOnline),kt("user_status:status.updated",this.userStatusUpdated)},beforeUnmount(){xt("user_status:status.updated",this.userStatusUpdated),xt("networkOffline",this.handleNetworkOffline),xt("networkOnline",this.handleNetworkOnline)},methods:{t:le,userStatusUpdated(c){Ui().uid===c.userId&&(this.userStatus=c.status)},async onOpen(){this.requestWebNotificationPermissions(),await Et(this.tabId),await this._fetch()},handleNetworkOffline(){console.debug("Network is offline, slowing down pollingInterval to "+this.pollIntervalBase*10),this._setPollingInterval(this.pollIntervalBase*10)},handleNetworkOnline(){this._fetch(),console.debug("Network is online, reseting pollingInterval to "+this.pollIntervalBase),this._setPollingInterval(this.pollIntervalBase)},setupBackgroundFetcher(){$s?(console.debug("Started background fetcher as session_keepalive is enabled"),this.interval=window.setInterval(this._backgroundFetch.bind(this),this.pollIntervalCurrent)):console.debug("Did not start background fetcher as session_keepalive is off")},onDismissAll(){Qe.delete(Ct("apps/notifications/api/v2/notifications")).then(()=>{this.notifications=[],this.open=!1,Et(this.tabId)}).catch(()=>{Nt(le("notifications","Failed to dismiss all notifications"))})},onRemove(c){this.notifications.splice(c,1),Et(this.tabId)},_updateDocTitleOnNewNotifications(c){c.length>this._oldcount&&(this._oldcount=c.length,this.backgroundFetching&&document.hidden&&(document.title.startsWith("* ")||(document.title="* "+document.title)))},_restoreTitle(){document.title.startsWith("* ")&&(document.title=document.title.substring(2))},_fetchAfterNotifyPush(){this.backgroundFetching=!0,this.hasNotifyPush&&this.tabId!==this.lastTabId?(console.debug("Deferring notification refresh from browser storage are notify_push event to give the last tab the chance to do it"),setTimeout(()=>{this._fetch()},5e3)):(console.debug("Refreshing notifications are notify_push event"),this._fetch())},async _fetch(){this.notifications.length&&this.notifications[0].notificationId>this.webNotificationsThresholdId&&(this.webNotificationsThresholdId=this.notifications[0].notificationId);const c=await to(this.tabId,this.lastETag,!this.backgroundFetching,this.hasNotifyPush);c.status===204?(console.debug("Fetching notifications but no content, slowing down polling to "+this.pollIntervalBase*10),this._setPollingInterval(this.pollIntervalBase*10)):c.status===200?(this.userStatus=c.headers["x-nextcloud-user-status"],this.lastETag=c.headers.etag,this.lastTabId=c.tabId,this.notifications=c.data,this.processWebNotifications(c.data),console.debug("Got notification data, restoring default polling interval."),this._setPollingInterval(this.pollIntervalBase),this._updateDocTitleOnNewNotifications(this.notifications),!this.backgroundFetching&&this.notifications.length&&(this.webNotificationsThresholdId=this.notifications[0].notificationId)):c.status===304?this._setPollingInterval(this.pollIntervalBase):c.status===503?(console.info("Slowing down notifications: instance is in maintenance mode."),this._setPollingInterval(this.pollIntervalBase*10)):c.status===404?(console.info("Slowing down notifications: app is disabled."),this._setPollingInterval(this.pollIntervalBase*10)):(console.info("Slowing down notifications: Status "+c.status),this._setPollingInterval(this.pollIntervalBase*10))},_backgroundFetch(){this.backgroundFetching=!0,this._fetch()},_watchTabVisibility(){document.addEventListener("visibilitychange",this._visibilityChange,!1)},_visibilityChange(){document.hidden||this._restoreTitle()},_setPollingInterval(c){this.interval&&c===this.pollIntervalCurrent||(console.debug("Polling interval updated to "+c),this.interval&&(window.clearInterval(this.interval),this.interval=null),this.pollIntervalCurrent=c,this.setupBackgroundFetcher())},_shutDownNotifications(c){console.debug("Shutting down notifications "+(c?"temporary":"bye")),this.interval&&(window.clearInterval(this.interval),this.interval=null),this.shutdown=!c},checkWebNotificationPermissions(){if(!("Notification"in window)){console.info("Browser does not support notifications"),this.webNotificationsGranted=!1;return}if(window.Notification.permission==="granted"){console.debug("Notifications permissions granted"),this.webNotificationsGranted=!0;return}if(window.Notification.permission==="denied"){console.debug("Notifications permissions denied"),this.webNotificationsGranted=!1;return}if(window.location.protocol==="http:"){console.debug("Notifications require HTTPS"),this.webNotificationsGranted=!1;return}console.info("Notifications permissions not yet requested"),this.webNotificationsGranted=null},async requestWebNotificationPermissions(){this.webNotificationsGranted===null&&(console.info("Requesting notifications permissions"),window.Notification.requestPermission().then(c=>{this.webNotificationsGranted=c==="granted"}))},processWebNotifications(c){c.forEach(g=>{this.backgroundFetching&&Ze("notifications:notification:received",{notification:g}),this.showBrowserNotifications&&this.webNotificationsThresholdIdf.open=u),class:"notifications-button","exclude-click-outside-selectors":[".popover"],"aria-label":b.t("notifications","Notifications"),title:b.t("notifications","Notifications"),onOpened:b.onOpen},{trigger:J(()=>[ie(v,{size:20,"show-dot":f.notifications.length!==0||f.webNotificationsGranted===null,"show-warning":l.hasThrottledPushNotifications},null,8,["show-dot","show-warning"])]),default:J(()=>[X("div",Js,[ie(Wi,{name:"fade",mode:"out-in"},{default:J(()=>[f.notifications.length>0?(P(),Q(Ji,{key:0,class:"notification-wrapper",name:"list",tag:"ul"},{default:J(()=>[l.hasThrottledPushNotifications?(P(),Q(I,{key:-2016,notification:l.fairUsePolicyNotification},null,8,["notification"])):G("",!0),(P(!0),j(Kn,null,Qn(f.notifications,(u,_)=>(P(),Q(I,{key:u.notificationId,notification:u,onRemove:y=>b.onRemove(_)},null,8,["notification","onRemove"]))),128))]),_:1})):(P(),Q(e,{key:1,name:b.emptyContentMessage,description:b.emptyContentDescription},Xi({icon:J(()=>[l.hasThrottledPushNotifications?(P(),j("span",Xs)):(P(),Q(A,{key:0}))]),_:2},[l.hasThrottledPushNotifications?{name:"action",fn:J(()=>[ie(B,{variant:"primary",href:"https://nextcloud.com/fairusepolicy",target:"_blank",rel:"noreferrer noopener"},{icon:J(()=>[ie(T,{size:20})]),default:J(()=>[Be(" "+$(b.t("notifications","Contact Nextcloud GmbH"))+" ↗ ",1)]),_:1})]),key:"0"}:void 0]),1032,["name","description"]))]),_:1}),f.notifications.length>0?(P(),j("div",Ks,[ie(B,{variant:"tertiary",wide:"",onClick:b.onDismissAll},{icon:J(()=>[ie(n,{size:20})]),default:J(()=>[Be(" "+$(b.t("notifications","Dismiss all notifications")),1)]),_:1},8,["onClick"])])):G("",!0)])]),_:1},8,["open","aria-label","title","onOpened"]))}const oa=fe(Ws,[["render",Qs],["__scopeId","data-v-57714b57"]]);export{oa as default}; +//# sourceMappingURL=NotificationsApp-BSasLk0w.chunk.mjs.map diff --git a/js/NotificationsApp-CnHRKMHH.chunk.mjs.license b/js/NotificationsApp-BSasLk0w.chunk.mjs.license similarity index 100% rename from js/NotificationsApp-CnHRKMHH.chunk.mjs.license rename to js/NotificationsApp-BSasLk0w.chunk.mjs.license diff --git a/js/NotificationsApp-BSasLk0w.chunk.mjs.map b/js/NotificationsApp-BSasLk0w.chunk.mjs.map new file mode 100644 index 000000000..ae97a2bf9 --- /dev/null +++ b/js/NotificationsApp-BSasLk0w.chunk.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"NotificationsApp-BSasLk0w.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcEmptyContent-BdOezubv.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang-BhB8yA4U.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHeaderMenu-DfO7ghiM.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcUserBubble-DfxVEEZg.mjs","../node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state/dist/index.cjs","../node_modules/@nextcloud/capabilities/dist/index.cjs","../node_modules/@nextcloud/event-bus/dist/index.cjs","../node_modules/@nextcloud/auth/dist/index.cjs","../node_modules/axios/dist/browser/axios.cjs","../node_modules/@nextcloud/router/dist/index.cjs","../node_modules/@nextcloud/axios/dist/index.cjs","../node_modules/@nextcloud/notify_push/dist/index.js","../node_modules/vue-material-design-icons/BellOutline.vue","../node_modules/vue-material-design-icons/Close.vue","../node_modules/vue-material-design-icons/MessageOutline.vue","../node_modules/vue-material-design-icons/Bell.vue","../src/Components/IconNotification.vue","../src/Components/ActionButton.vue","../src/Components/Parameters/DefaultParameter.vue","../src/Components/Parameters/FileParameter.vue","../src/Components/Parameters/UserParameter.vue","../src/Components/NotificationItem.vue","../src/services/notificationsService.js","../node_modules/howler/dist/howler.js","../src/services/webNotificationsService.js","../src/NotificationsApp.vue"],"sourcesContent":["import '../assets/NcEmptyContent-q-geAf0w.css';\nimport { defineComponent, createElementBlock, openBlock, createCommentVNode, renderSlot, toDisplayString, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = {\n class: \"empty-content\",\n role: \"note\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"empty-content__icon\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"empty-content__name\"\n};\nconst _hoisted_4 = {\n key: 1,\n class: \"empty-content__description\"\n};\nconst _hoisted_5 = {\n key: 2,\n class: \"empty-content__action\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcEmptyContent\",\n props: {\n description: { default: \"\" },\n name: { default: \"\" }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n _ctx.$slots.icon ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"name\", {}, () => [\n _ctx.name !== \"\" ? (openBlock(), createElementBlock(\"span\", _hoisted_3, toDisplayString(_ctx.name), 1)) : createCommentVNode(\"\", true)\n ], true),\n _ctx.description !== \"\" || _ctx.$slots.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"description\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ], true)\n ])) : createCommentVNode(\"\", true),\n _ctx.$slots.action ? (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n renderSlot(_ctx.$slots, \"action\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nconst NcEmptyContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-697cfd8f\"]]);\nexport {\n NcEmptyContent as N\n};\n//# sourceMappingURL=NcEmptyContent-BdOezubv.mjs.map\n","import { defineComponent, computed, toRef, createElementBlock, openBlock, toDisplayString, unref } from \"vue\";\nimport { useFormatTime, useFormatRelativeTime } from \"../composables/useFormatDateTime/index.mjs\";\nconst _hoisted_1 = [\"data-timestamp\", \"title\", \"textContent\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcDateTime\",\n props: {\n timestamp: {},\n format: { default: () => ({ timeStyle: \"medium\", dateStyle: \"short\" }) },\n relativeTime: { type: [Boolean, String], default: \"long\" },\n ignoreSeconds: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const timeOptions = computed(() => ({ format: props.format }));\n const relativeTimeOptions = computed(() => ({\n ignoreSeconds: props.ignoreSeconds,\n relativeTime: props.relativeTime || \"long\",\n update: props.relativeTime !== false\n }));\n const title = useFormatTime(toRef(() => props.timestamp), timeOptions);\n const relativeTime = useFormatRelativeTime(toRef(() => props.timestamp), relativeTimeOptions);\n const formattedTime = computed(() => props.relativeTime ? relativeTime.value : title.value);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: \"nc-datetime\",\n dir: \"auto\",\n \"data-timestamp\": _ctx.timestamp,\n title: unref(title),\n textContent: toDisplayString(formattedTime.value)\n }, null, 8, _hoisted_1);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcDateTime.vue_vue_type_script_setup_true_lang-BhB8yA4U.mjs.map\n","import '../assets/NcHeaderMenu-Hy0UKyUu.css';\nimport { defineComponent, ref, computed, useTemplateRef, watch, nextTick, createBlock, openBlock, resolveDynamicComponent, normalizeClass, unref, withCtx, createVNode, createElementBlock, createCommentVNode, withDirectives, withModifiers, renderSlot, toDisplayString, createElementVNode, vShow } from \"vue\";\nimport { onClickOutside } from \"@vueuse/core\";\nimport { createFocusTrap } from \"focus-trap\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport { useHotKey } from \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { N as NcButton } from \"./NcButton-DkC5k3Lb.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = { class: \"header-menu__caret\" };\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = {\n ref: \"contentContainer\",\n class: \"header-menu__content\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHeaderMenu\",\n props: {\n id: {},\n ariaLabel: { default: () => void 0 },\n open: { type: Boolean, default: false },\n isNav: { type: Boolean, default: false },\n description: { default: () => void 0 },\n excludeClickOutsideSelectors: { default: () => [] }\n },\n emits: [\"closed\", \"opened\", \"update:open\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const descriptionId = createElementId();\n const triggerId = createElementId();\n const focusTrap = ref();\n const isOpened = ref(__props.open);\n const wrapperTag = computed(() => __props.isNav ? \"nav\" : \"div\");\n const contentContainerElement = useTemplateRef(\"contentContainer\");\n const headerMenuElement = useTemplateRef(\"headerMenu\");\n const triggerButtonInstance = useTemplateRef(\"triggerButton\");\n const ignore = computed(() => Array.isArray(__props.excludeClickOutsideSelectors) ? __props.excludeClickOutsideSelectors : __props.excludeClickOutsideSelectors.split(\" \"));\n onClickOutside(headerMenuElement, () => setMenuState(false), { ignore });\n useHotKey(\"Escape\", () => setMenuState(false), { prevent: true });\n useTrapStackControl(isOpened, {\n disabled: () => !__props.isNav\n });\n watch(() => __props.open, (state) => setMenuState(state));\n function toggleMenu() {\n setMenuState(!isOpened.value);\n }\n async function setMenuState(state) {\n if (state === isOpened.value) {\n return;\n }\n isOpened.value = state;\n emit(\"update:open\", state);\n await nextTick();\n await (state ? addFocusTrap() : clearFocusTrap());\n emit(state ? \"opened\" : \"closed\");\n }\n function onFocusOut(event) {\n if (!__props.isNav) {\n return;\n }\n if (!(event.relatedTarget instanceof Node)) {\n return;\n }\n if (headerMenuElement.value?.contains(event.relatedTarget)) {\n setMenuState(false);\n }\n }\n async function addFocusTrap() {\n if (__props.isNav || focusTrap.value) {\n return;\n }\n focusTrap.value = createFocusTrap(contentContainerElement.value, {\n allowOutsideClick: true,\n trapStack: getTrapStack(),\n fallbackFocus: triggerButtonInstance.value?.$el\n });\n focusTrap.value.activate();\n }\n function clearFocusTrap() {\n focusTrap.value?.deactivate();\n focusTrap.value = void 0;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(wrapperTag.value), {\n id: _ctx.id,\n ref: \"headerMenu\",\n \"aria-labelledby\": _ctx.isNav ? unref(triggerId) : null,\n class: normalizeClass([{ \"header-menu--opened\": isOpened.value }, \"header-menu\"]),\n onFocusout: onFocusOut\n }, {\n default: withCtx(() => [\n createVNode(unref(NcButton), {\n id: _ctx.isNav ? unref(triggerId) : null,\n ref: \"triggerButton\",\n \"aria-controls\": `header-menu-${_ctx.id}`,\n \"aria-expanded\": isOpened.value.toString(),\n \"aria-label\": _ctx.ariaLabel,\n class: \"header-menu__trigger\",\n size: \"large\",\n variant: \"tertiary-no-background\",\n onClick: withModifiers(toggleMenu, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"trigger\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"id\", \"aria-controls\", \"aria-expanded\", \"aria-label\"]),\n _ctx.description ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n id: unref(descriptionId),\n class: \"header-menu__description hidden-visually\"\n }, toDisplayString(_ctx.description), 9, _hoisted_1)) : createCommentVNode(\"\", true),\n withDirectives(createElementVNode(\"div\", _hoisted_2, null, 512), [\n [vShow, isOpened.value]\n ]),\n withDirectives(createElementVNode(\"div\", {\n id: `header-menu-${_ctx.id}`,\n class: \"header-menu__wrapper\"\n }, [\n createElementVNode(\"div\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 512)\n ], 8, _hoisted_3), [\n [vShow, isOpened.value]\n ])\n ]),\n _: 3\n }, 40, [\"id\", \"aria-labelledby\", \"class\"]);\n };\n }\n});\nconst NcHeaderMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d45c5788\"]]);\nexport {\n NcHeaderMenu as N\n};\n//# sourceMappingURL=NcHeaderMenu-DfO7ghiM.mjs.map\n","import '../assets/NcUserBubble-ChgvvPPf.css';\nimport { createElementBlock, openBlock, renderSlot, defineComponent, mergeModels, useModel, computed, warn, watch, createBlock, resolveDynamicComponent, unref, withCtx, mergeProps, createVNode, createElementVNode, createCommentVNode, normalizeStyle, toDisplayString } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-BkmHv-oY.mjs\";\nimport { N as NcPopover } from \"./NcPopover-C-MTaPCs.mjs\";\nconst _sfc_main$1 = {};\nfunction _sfc_render(_ctx, _cache) {\n return openBlock(), createElementBlock(\"div\", null, [\n renderSlot(_ctx.$slots, \"trigger\")\n ]);\n}\nconst NcUserBubbleDiv = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst _hoisted_1 = { class: \"user-bubble__name\" };\nconst _hoisted_2 = {\n key: 0,\n class: \"user-bubble__secondary\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcUserBubble\",\n props: /* @__PURE__ */ mergeModels({\n avatarImage: { default: void 0 },\n user: { default: void 0 },\n displayName: { default: void 0 },\n showUserStatus: { type: Boolean },\n url: { default: void 0 },\n to: { default: void 0 },\n primary: { type: Boolean },\n size: { default: 20 },\n margin: { default: 2 }\n }, {\n \"open\": { type: Boolean },\n \"openModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"click\"], [\"update:open\"]),\n setup(__props, { emit: __emit }) {\n const isOpen = useModel(__props, \"open\");\n const props = __props;\n const emit = __emit;\n const isAvatarUrl = computed(() => {\n if (!props.avatarImage) {\n return false;\n }\n try {\n const url = new URL(props.avatarImage);\n return !!url;\n } catch {\n return false;\n }\n });\n const isCustomAvatar = computed(() => !!props.avatarImage);\n const avatarStyle = computed(() => ({\n marginInlineStart: `${props.margin}px`\n }));\n const hasUrl = computed(() => {\n if (!props.url || props.url.trim() === \"\") {\n return false;\n }\n try {\n const url = new URL(props.url, props.url?.startsWith?.(\"/\") ? window.location.href : void 0);\n return !!url;\n } catch {\n warn(\"[NcUserBubble] Invalid URL passed\", { url: props.url });\n return false;\n }\n });\n const href = computed(() => hasUrl.value ? props.url : void 0);\n const contentComponent = computed(() => {\n if (hasUrl.value) {\n return \"a\";\n } else if (props.to) {\n return RouterLink;\n } else {\n return \"div\";\n }\n });\n const contentStyle = computed(() => ({\n height: `${props.size}px`,\n lineHeight: `${props.size}px`,\n borderRadius: `${props.size / 2}px`\n }));\n watch([() => props.displayName, () => props.user], () => {\n if (!props.displayName && !props.user) {\n warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(!!_ctx.$slots.default ? unref(NcPopover) : NcUserBubbleDiv), {\n shown: isOpen.value,\n \"onUpdate:shown\": _cache[1] || (_cache[1] = ($event) => isOpen.value = $event),\n class: \"user-bubble__wrapper\",\n trigger: \"hover focus\"\n }, {\n trigger: withCtx(({ attrs }) => [\n (openBlock(), createBlock(resolveDynamicComponent(contentComponent.value), mergeProps({\n class: [\"user-bubble__content\", { \"user-bubble__content--primary\": _ctx.primary }],\n style: contentStyle.value,\n to: _ctx.to,\n href: href.value\n }, attrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }), {\n default: withCtx(() => [\n createVNode(unref(NcAvatar), {\n url: isCustomAvatar.value && isAvatarUrl.value ? _ctx.avatarImage : void 0,\n \"icon-class\": isCustomAvatar.value && !isAvatarUrl.value ? _ctx.avatarImage : void 0,\n user: _ctx.user,\n \"display-name\": _ctx.displayName,\n size: _ctx.size - _ctx.margin * 2,\n style: normalizeStyle(avatarStyle.value),\n \"disable-tooltip\": true,\n \"disable-menu\": true,\n \"hide-status\": !_ctx.showUserStatus,\n class: \"user-bubble__avatar\"\n }, null, 8, [\"url\", \"icon-class\", \"user\", \"display-name\", \"size\", \"style\", \"hide-status\"]),\n createElementVNode(\"span\", _hoisted_1, toDisplayString(_ctx.displayName || _ctx.user), 1),\n !!_ctx.$slots.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"name\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1040, [\"class\", \"style\", \"to\", \"href\"]))\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 40, [\"shown\"]);\n };\n }\n});\nconst NcUserBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-37bde6b7\"]]);\nexport {\n NcUserBubble as N\n};\n//# sourceMappingURL=NcUserBubble-DfxVEEZg.mjs.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nfunction loadState(app, key, fallback) {\n const elem = document.querySelector(`#initial-state-${app}-${key}`);\n if (elem === null) {\n if (fallback !== void 0) {\n return fallback;\n }\n throw new Error(`Could not find initial state ${key} of ${app}`);\n }\n try {\n return JSON.parse(atob(elem.value));\n } catch (e) {\n throw new Error(`Could not parse initial state ${key} of ${app}`);\n }\n}\nexports.loadState = loadState;\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst i = require(\"@nextcloud/initial-state\");\nfunction t() {\n try {\n return i.loadState(\"core\", \"capabilities\");\n } catch {\n return console.debug(\"Could not find capabilities initial state fall back to _oc_capabilities\"), \"_oc_capabilities\" in window ? window._oc_capabilities : {};\n }\n}\nexports.getCapabilities = t;\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst valid = require(\"semver/functions/valid.js\");\nconst major = require(\"semver/functions/major.js\");\nconst _interopDefault = (e) => e && e.__esModule ? e : { default: e };\nconst valid__default = /* @__PURE__ */ _interopDefault(valid);\nconst major__default = /* @__PURE__ */ _interopDefault(major);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid__default.default(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major__default.default(bus2.getVersion()) !== major__default.default(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.2\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.2\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h) => h !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h) => {\n try {\n ;\n h(event[0]);\n } catch (e) {\n console.error(\"could not invoke event listener\", e);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction subscribe(name, handler) {\n getBus().subscribe(name, handler);\n}\nfunction unsubscribe(name, handler) {\n getBus().unsubscribe(name, handler);\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\nexports.ProxyBus = ProxyBus;\nexports.SimpleBus = SimpleBus;\nexports.emit = emit;\nexports.subscribe = subscribe;\nexports.unsubscribe = unsubscribe;\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst eventBus = require(\"@nextcloud/event-bus\");\nconst browserStorage$1 = require(\"@nextcloud/browser-storage\");\nlet token;\nconst observers = [];\nfunction getRequestToken() {\n if (token === void 0) {\n token = document.head.dataset.requesttoken ?? null;\n }\n return token;\n}\nfunction onRequestTokenUpdate(observer) {\n observers.push(observer);\n}\neventBus.subscribe(\"csrf-token-update\", (e) => {\n token = e.token;\n observers.forEach((observer) => {\n try {\n observer(token);\n } catch (error) {\n console.error(\"Error updating CSRF token observer\", error);\n }\n });\n});\nfunction getCSPNonce() {\n const meta = document?.querySelector('meta[name=\"csp-nonce\"]');\n if (!meta) {\n const token2 = getRequestToken();\n return token2 ? btoa(token2) : void 0;\n }\n return meta.nonce;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nconst browserStorage = browserStorage$1.getBuilder(\"public\").persist().build();\nclass GuestUser {\n _displayName;\n uid;\n isAdmin;\n constructor() {\n if (!browserStorage.getItem(\"guestUid\")) {\n browserStorage.setItem(\"guestUid\", randomUUID());\n }\n this._displayName = browserStorage.getItem(\"guestNickname\") || \"\";\n this.uid = browserStorage.getItem(\"guestUid\") || randomUUID();\n this.isAdmin = false;\n eventBus.subscribe(\"user:info:changed\", (guest) => {\n this._displayName = guest.displayName;\n browserStorage.setItem(\"guestNickname\", guest.displayName || \"\");\n });\n }\n get displayName() {\n return this._displayName;\n }\n set displayName(displayName) {\n this._displayName = displayName;\n browserStorage.setItem(\"guestNickname\", displayName);\n eventBus.emit(\"user:info:changed\", this);\n }\n}\nlet currentUser$1;\nfunction getGuestUser() {\n if (!currentUser$1) {\n currentUser$1 = new GuestUser();\n }\n return currentUser$1;\n}\nfunction getGuestNickname() {\n return getGuestUser()?.displayName || null;\n}\nfunction setGuestNickname(nickname) {\n if (!nickname || nickname.trim().length === 0) {\n throw new Error(\"Nickname cannot be empty\");\n }\n getGuestUser().displayName = nickname;\n}\nfunction randomUUID() {\n if (globalThis.crypto?.randomUUID) {\n return globalThis.crypto.randomUUID();\n }\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n}\nlet currentUser;\nfunction getAttribute(el, attribute) {\n if (el) {\n return el.getAttribute(attribute);\n }\n return null;\n}\nfunction getCurrentUser() {\n if (currentUser !== void 0) {\n return currentUser;\n }\n const head = document?.getElementsByTagName(\"head\")[0];\n if (!head) {\n return null;\n }\n const uid = getAttribute(head, \"data-user\");\n if (uid === null) {\n currentUser = null;\n return currentUser;\n }\n currentUser = {\n uid,\n displayName: getAttribute(head, \"data-user-displayname\"),\n isAdmin: !!window._oc_isadmin\n };\n return currentUser;\n}\nexports.getCSPNonce = getCSPNonce;\nexports.getCurrentUser = getCurrentUser;\nexports.getGuestNickname = getGuestNickname;\nexports.getGuestUser = getGuestUser;\nexports.getRequestToken = getRequestToken;\nexports.onRequestTokenUpdate = onRequestTokenUpdate;\nexports.setGuestNickname = setGuestNickname;\n//# sourceMappingURL=index.cjs.map\n","/*! Axios v1.12.2 Copyright (c) 2025 Matt Zabriskie and contributors */\n'use strict';\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n};\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction$1 = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction$1(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction$1(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction$1(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction$1(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n};\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction$1(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction$1(thing[iterator]);\n\n\nvar utils$1 = {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction: isFunction$1,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils$1.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils$1.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype$1 = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype$1, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype$1);\n\n utils$1.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n// eslint-disable-next-line strict\nvar httpAdapter = null;\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils$1.isPlainObject(thing) || utils$1.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils$1.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils$1.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils$1.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils$1.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);\n\n if (!utils$1.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils$1.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils$1.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils$1.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils$1.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils$1.isArray(value) && isFlatArray(value)) ||\n ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils$1.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils$1.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils$1.forEach(value, function each(el, key) {\n const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils$1.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode$1(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode$1);\n } : encode$1;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils$1.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils$1.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils$1.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nvar InterceptorManager$1 = InterceptorManager;\n\nvar transitionalDefaults = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n\nvar URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n\nvar FormData$1 = typeof FormData !== 'undefined' ? FormData : null;\n\nvar Blob$1 = typeof Blob !== 'undefined' ? Blob : null;\n\nvar platform$1 = {\n isBrowser: true,\n classes: {\n URLSearchParams: URLSearchParams$1,\n FormData: FormData$1,\n Blob: Blob$1\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n\nconst hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hasBrowserEnv: hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv: hasStandardBrowserEnv,\n navigator: _navigator,\n origin: origin\n});\n\nvar platform = {\n ...utils,\n ...platform$1\n};\n\nfunction toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils$1.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils$1.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils$1.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils$1.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils$1.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils$1.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {\n const obj = {};\n\n utils$1.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils$1.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils$1.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils$1.isObject(data);\n\n if (isObjectPayload && utils$1.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils$1.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils$1.isArrayBuffer(data) ||\n utils$1.isBuffer(data) ||\n utils$1.isStream(data) ||\n utils$1.isFile(data) ||\n utils$1.isBlob(data) ||\n utils$1.isReadableStream(data)\n ) {\n return data;\n }\n if (utils$1.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils$1.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nvar defaults$1 = defaults;\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils$1.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nvar parseHeaders = rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils$1.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils$1.isString(value)) return;\n\n if (utils$1.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils$1.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils$1.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils$1.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils$1.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils$1.isObject(header) && utils$1.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils$1.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils$1.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils$1.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils$1.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils$1.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils$1.forEach(this, (value, header) => {\n const key = utils$1.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils$1.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils$1.freezeMethods(AxiosHeaders);\n\nvar AxiosHeaders$1 = AxiosHeaders;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || defaults$1;\n const context = response || config;\n const headers = AxiosHeaders$1.from(context.headers);\n let data = context.data;\n\n utils$1.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils$1.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nconst progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n};\n\nconst progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n};\n\nconst asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args));\n\nvar isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n\nvar cookies = platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils$1.isString(path) && cookie.push('path=' + path);\n\n utils$1.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {\n return utils$1.merge.call({caseless}, target, source);\n } else if (utils$1.isPlainObject(source)) {\n return utils$1.merge({}, source);\n } else if (utils$1.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils$1.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n\nvar resolveConfig = (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders$1.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils$1.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils$1.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nvar xhrAdapter = isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders$1.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils$1.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n};\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n };\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils$1.asap(unsubscribe);\n\n return signal;\n }\n};\n\nvar composeSignals$1 = composeSignals;\n\nconst streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nconst readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nconst trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n};\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils$1;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils$1.global);\n\nconst {\n ReadableStream: ReadableStream$1, TextEncoder\n} = utils$1.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n};\n\nconst factory = (env) => {\n env = utils$1.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream$1(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils$1.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n });\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils$1.isBlob(body)) {\n return body.size;\n }\n\n if (utils$1.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils$1.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils$1.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils$1.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils$1.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders$1.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n });\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n};\n\nconst seedCache = new Map();\n\nconst getFetch = (config) => {\n let env = config ? config.env : {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\ngetFetch();\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: getFetch,\n }\n};\n\nutils$1.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;\n\nvar adapters = {\n getAdapter: (adapters, config) => {\n adapters = utils$1.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n};\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders$1.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders$1.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders$1.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n\nconst VERSION = \"1.12.2\";\n\nconst validators$1 = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators$1[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators$1.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators$1.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nvar validator = {\n assertOptions,\n validators: validators$1\n};\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager$1(),\n response: new InterceptorManager$1()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils$1.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n };\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils$1.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils$1.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders$1.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nvar Axios$1 = Axios;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nvar CancelToken$1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return utils$1.isObject(payload) && (payload.isAxiosError === true);\n}\n\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nvar HttpStatusCode$1 = HttpStatusCode;\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios$1(defaultConfig);\n const instance = bind(Axios$1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils$1.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults$1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios$1;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken$1;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders$1;\n\naxios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode$1;\n\naxios.default = axios;\n\nmodule.exports = axios;\n//# sourceMappingURL=axios.cjs.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst w = (e, n) => u(e, \"\", n), U = (e) => \"/remote.php/\" + e, R = (e, n) => {\n var o;\n return ((o = n == null ? void 0 : n.baseURL) != null ? o : f()) + U(e);\n}, h = (e, n, o) => {\n var r;\n const c = Object.assign({\n ocsVersion: 2\n }, o || {}).ocsVersion === 1 ? 1 : 2;\n return ((r = o == null ? void 0 : o.baseURL) != null ? r : f()) + \"/ocs/v\" + c + \".php\" + g(e, n, o);\n}, g = (e, n, o) => {\n const r = Object.assign({\n escape: !0\n }, o || {}), s = function(c, i) {\n return i = i || {}, c.replace(\n /{([^{}]*)}/g,\n function(l, t) {\n const a = i[t];\n return r.escape ? encodeURIComponent(typeof a == \"string\" || typeof a == \"number\" ? a.toString() : l) : typeof a == \"string\" || typeof a == \"number\" ? a.toString() : l;\n }\n );\n };\n return e.charAt(0) !== \"/\" && (e = \"/\" + e), s(e, n || {});\n}, v = (e, n, o) => {\n var r, s, c;\n const i = Object.assign({\n noRewrite: !1\n }, o || {}), l = (r = o == null ? void 0 : o.baseURL) != null ? r : d();\n return ((c = (s = window == null ? void 0 : window.OC) == null ? void 0 : s.config) == null ? void 0 : c.modRewriteWorking) === !0 && !i.noRewrite ? l + g(e, n, o) : l + \"/index.php\" + g(e, n, o);\n}, _ = (e, n) => n.includes(\".\") ? u(e, \"img\", n) : u(e, \"img\", \"\".concat(n, \".svg\")), u = (e, n, o) => {\n var r, s, c;\n const i = (c = (s = (r = window == null ? void 0 : window.OC) == null ? void 0 : r.coreApps) == null ? void 0 : s.includes(e)) != null ? c : !1, l = o.slice(-3) === \"php\";\n let t = d();\n return l && !i ? (t += \"/index.php/apps/\".concat(e), n && (t += \"/\".concat(encodeURI(n))), o !== \"index.php\" && (t += \"/\".concat(o))) : !l && !i ? (t = b(e), n && (t += \"/\".concat(n, \"/\")), t.at(-1) !== \"/\" && (t += \"/\"), t += o) : ((e === \"settings\" || e === \"core\" || e === \"search\") && n === \"ajax\" && (t += \"/index.php\"), e && (t += \"/\".concat(e)), n && (t += \"/\".concat(n)), t += \"/\".concat(o)), t;\n}, f = () => window.location.protocol + \"//\" + window.location.host + d();\nfunction d() {\n let e = window._oc_webroot;\n if (typeof e > \"u\") {\n e = location.pathname;\n const n = e.indexOf(\"/index.php/\");\n if (n !== -1)\n e = e.slice(0, n);\n else {\n const o = e.indexOf(\"/\", 1);\n e = e.slice(0, o > 0 ? o : void 0);\n }\n }\n return e;\n}\nfunction b(e) {\n var n, o;\n return (o = ((n = window._oc_appswebroots) != null ? n : {})[e]) != null ? o : \"\";\n}\nexports.generateFilePath = u;\nexports.generateOcsUrl = h;\nexports.generateRemoteUrl = R;\nexports.generateUrl = v;\nexports.getAppRootUrl = b;\nexports.getBaseUrl = f;\nexports.getRootUrl = d;\nexports.imagePath = _;\nexports.linkTo = w;\n","\"use strict\";\nObject.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: \"Module\" } });\nconst auth = require(\"@nextcloud/auth\");\nconst Axios = require(\"axios\");\nconst router = require(\"@nextcloud/router\");\nconst _interopDefault = (e) => e && e.__esModule ? e : { default: e };\nconst Axios__default = /* @__PURE__ */ _interopDefault(Axios);\n/*!\n * SPDX-License-Identifier: GPL-3.0-or-later\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n */\nconst client = Axios__default.default.create({\n headers: {\n requesttoken: auth.getRequestToken() ?? \"\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n }\n});\nauth.onRequestTokenUpdate((token) => {\n client.defaults.headers.requesttoken = token;\n});\nconst cancelableClient = Object.assign(client, {\n CancelToken: Axios__default.default.CancelToken,\n isCancel: Axios__default.default.isCancel\n});\nconst RETRY_KEY = Symbol(\"csrf-retry\");\nfunction onCsrfTokenError(axios) {\n return async (error) => {\n if (!Axios.isAxiosError(error)) {\n throw error;\n }\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n if (config && !config[RETRY_KEY] && response?.status === 412 && response?.data?.message === \"CSRF check failed\") {\n console.warn(`Request to ${responseURL} failed because of a CSRF mismatch. Fetching a new token`);\n const { data: { token } } = await axios.get(router.generateUrl(\"/csrftoken\"));\n console.debug(`New request token ${token} fetched`);\n axios.defaults.headers.requesttoken = token;\n return axios({\n ...config,\n headers: {\n ...config.headers,\n requesttoken: token\n },\n [RETRY_KEY]: true\n });\n }\n throw error;\n };\n}\nconst RETRY_DELAY_KEY = Symbol(\"retryDelay\");\nfunction onMaintenanceModeError(axios) {\n return async (error) => {\n if (!Axios.isAxiosError(error)) {\n throw error;\n }\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n const status = response?.status;\n const headers = response?.headers;\n let retryDelay = typeof config?.[RETRY_DELAY_KEY] === \"number\" ? config?.[RETRY_DELAY_KEY] : 1;\n if (status === 503 && headers?.[\"x-nextcloud-maintenance-mode\"] === \"1\" && config?.retryIfMaintenanceMode) {\n retryDelay *= 2;\n if (retryDelay > 32) {\n console.error(\"Retry delay exceeded one minute, giving up.\", { responseURL });\n throw error;\n }\n console.warn(`Request to ${responseURL} failed because of maintenance mode. Retrying in ${retryDelay}s`);\n await new Promise((resolve) => {\n setTimeout(resolve, retryDelay * 1e3);\n });\n return axios({\n ...config,\n [RETRY_DELAY_KEY]: retryDelay\n });\n }\n throw error;\n };\n}\nasync function onNotLoggedInError(error) {\n if (Axios.isAxiosError(error)) {\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n const status = response?.status;\n if (status === 401 && response?.data?.message === \"Current user is not logged in\" && config?.reloadExpiredSession && window?.location) {\n console.error(`Request to ${responseURL} failed because the user session expired. Reloading the page …`);\n window.location.reload();\n }\n }\n throw error;\n}\ncancelableClient.interceptors.response.use((r) => r, onCsrfTokenError(cancelableClient));\ncancelableClient.interceptors.response.use((r) => r, onMaintenanceModeError(cancelableClient));\ncancelableClient.interceptors.response.use((r) => r, onNotLoggedInError);\nObject.defineProperty(exports, \"isAxiosError\", {\n enumerable: true,\n get: () => Axios.isAxiosError\n});\nObject.defineProperty(exports, \"isCancel\", {\n enumerable: true,\n get: () => Axios.isCancel\n});\nexports.default = cancelableClient;\n//# sourceMappingURL=index.cjs.map\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.listen = exports.getSupportedTypes = void 0;\nconst capabilities_1 = require(\"@nextcloud/capabilities\");\nconst axios_1 = __importDefault(require(\"@nextcloud/axios\"));\nconst event_bus_1 = require(\"@nextcloud/event-bus\");\n/**\n * Get the list of supported notification types as reported by the server\n *\n * @return string[]\n */\nfunction getSupportedTypes() {\n const capabilities = (0, capabilities_1.getCapabilities)();\n if (capabilities.notify_push) {\n return capabilities.notify_push.type;\n }\n else {\n return [];\n }\n}\nexports.getSupportedTypes = getSupportedTypes;\n/**\n * Register a listener for notify_push events\n *\n * @param name name of the event\n * @param handler callback invoked for every matching event pushed\n * @param [options]\n * @param [options.credentials] optional credentials used instead of the pre_auth request\n * @param [options.credentials.username] username\n * @param [options.credentials.password] app password\n * @return boolean whether push is set up correctly\n */\nfunction listen(name, handler, options = {}) {\n setupGlobals(options);\n if (!window._notify_push_listeners[name]) {\n window._notify_push_listeners[name] = [];\n }\n window._notify_push_listeners[name].push(handler);\n if (window._notify_push_ws !== null && typeof window._notify_push_ws === \"object\") {\n window._notify_push_ws.send('listen ' + name);\n }\n else {\n setupSocket(options);\n }\n return window._notify_push_available;\n}\nexports.listen = listen;\nfunction setupGlobals(options = {}) {\n if (typeof window._notify_push_listeners === \"undefined\") {\n window._notify_push_listeners = {};\n window._notify_push_ws = null;\n window._notify_push_online = true;\n window._notify_push_available = false;\n window._notify_push_error_count = 0;\n (0, event_bus_1.subscribe)('networkOffline', () => {\n window._notify_push_online = false;\n window._notify_push_ws = null;\n });\n (0, event_bus_1.subscribe)('networkOnline', () => {\n window._notify_push_error_count = 0;\n window._notify_push_online = true;\n setupSocket(options);\n });\n }\n}\nasync function setupSocket(options = {}) {\n if (window._notify_push_ws) {\n return true;\n }\n window._notify_push_ws = true;\n const capabilities = (0, capabilities_1.getCapabilities)();\n if (!capabilities.notify_push) {\n window._notify_push_available = false;\n window._notify_push_ws = null;\n return false;\n }\n window._notify_push_available = true;\n let preAuth;\n if (!options.credentials) {\n const response = await axios_1.default.post(capabilities.notify_push.endpoints.pre_auth);\n preAuth = response.data;\n }\n window._notify_push_ws = new WebSocket(capabilities.notify_push.endpoints.websocket);\n window._notify_push_ws.onopen = () => {\n if (typeof window._notify_push_ws === \"object\" && window._notify_push_ws) {\n if (preAuth) {\n window._notify_push_ws.send('');\n window._notify_push_ws.send(preAuth);\n }\n else if (options.credentials) {\n window._notify_push_ws.send(options.credentials.username);\n window._notify_push_ws.send(options.credentials.password);\n }\n for (let name in window._notify_push_listeners) {\n window._notify_push_ws.send('listen ' + name);\n }\n }\n };\n window._notify_push_ws.onmessage = message => {\n if (message.data === \"authenticated\") {\n window._notify_push_error_count = 0;\n }\n else {\n const i = message.data.indexOf(' ');\n let [event, body] = i > 0 ? [message.data.slice(0, i), message.data.slice(i + 1)] : [message.data, null];\n if (body) {\n body = JSON.parse(body);\n }\n if (window._notify_push_listeners[event]) {\n for (let cb of window._notify_push_listeners[event]) {\n cb(event, body);\n }\n }\n }\n };\n window._notify_push_ws.onerror = window._notify_push_ws.onclose = () => {\n window._notify_push_ws = null;\n window._notify_push_error_count += 1;\n setTimeout(() => {\n if (window._notify_push_online) {\n setupSocket(options);\n }\n }, 1000 * window._notify_push_error_count);\n };\n return true;\n}\n","\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport BrowserStorage from './BrowserStorage.js'\n\n/**\n * @param {string|null} tabId unique id for browser tab\n * @param {string} lastETag last ETag\n * @param {boolean} forceRefresh whether to refresh data forcefully\n * @param {boolean} hasNotifyPush whether has notify_push enabled\n */\nasync function getNotificationsData(tabId, lastETag, forceRefresh, hasNotifyPush) {\n\tconst lastUpdated = parseInt(BrowserStorage.getItem('lastUpdated'), 10)\n\tconst lastTab = BrowserStorage.getItem('tabId')\n\tconst now = Math.floor(Date.now() / 1000)\n\n\tif (forceRefresh\n\t\t// Allow the same tab to refresh with less than the timeout,\n\t\t|| (lastTab === tabId && lastUpdated + 25 < now)\n\t\t// Allow the same tab to refresh with notify push,\n\t\t|| (lastTab === tabId && hasNotifyPush)\n\t\t// and at the same time give it some more time against other tabs.\n\t\t|| lastUpdated + 35 < now) {\n\t\tBrowserStorage.setItem('tabId', tabId)\n\t\tBrowserStorage.setItem('lastUpdated', now.toString())\n\t\t// console.debug('Refetching data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t\tawait refreshData(lastETag)\n\t// } else {\n\t// console.debug('Reusing data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t}\n\n\treturn {\n\t\tstatus: parseInt(BrowserStorage.getItem('status'), 10),\n\t\theaders: JSON.parse(BrowserStorage.getItem('headers') || '[]'),\n\t\tdata: JSON.parse(BrowserStorage.getItem('data') || '[]'),\n\t\ttabId: BrowserStorage.getItem('tabId'),\n\t\tlastUpdated: parseInt(BrowserStorage.getItem('lastUpdated'), 10),\n\t}\n}\n\n/**\n * @param {string|null} tabId unique id for browser tab\n */\nasync function setCurrentTabAsActive(tabId) {\n\tconst lastTab = BrowserStorage.getItem('tabId')\n\tif (lastTab !== tabId) {\n\t\t// Refresh the data when changing the tab\n\t\tawait getNotificationsData(tabId, '', true, false)\n\t\t// Enforce this tab one the raise-condition if there was one\n\t\tBrowserStorage.setItem('tabId', tabId)\n\t}\n}\n\n/**\n * @param {object} notification notification object\n */\nfunction remapAttributes(notification) {\n\tnotification.notificationId = notification.notification_id\n\tnotification.objectId = notification.object_id\n\tnotification.objectType = notification.object_type\n\n\tdelete notification.notification_id\n\tdelete notification.object_id\n\tdelete notification.object_type\n\n\treturn notification\n}\n\n/**\n * @param {string} lastETag last ETag\n */\nasync function refreshData(lastETag) {\n\tlet requestConfig = {}\n\tif (lastETag) {\n\t\trequestConfig = {\n\t\t\theaders: {\n\t\t\t\t'If-None-Match': lastETag,\n\t\t\t},\n\t\t}\n\t}\n\n\ttry {\n\t\tconst response = await axios.get(generateOcsUrl('apps/notifications/api/v2/notifications'), requestConfig)\n\n\t\tBrowserStorage.setItem('status', '' + response.status)\n\t\tif (response.status !== 204) {\n\t\t\tBrowserStorage.setItem('headers', JSON.stringify(response.headers))\n\t\t\tBrowserStorage.setItem('data', JSON.stringify(response.data.ocs.data.map(remapAttributes)))\n\t\t}\n\t} catch (error) {\n\t\tif (error?.response?.status) {\n\t\t\tBrowserStorage.setItem('status', '' + error.response.status)\n\t\t} else {\n\t\t\t// Setting to 500 in case no request was made so it's retried on the next attempt\n\t\t\tBrowserStorage.setItem('status', '500')\n\t\t}\n\t}\n}\n\nexport {\n\tgetNotificationsData,\n\tsetCurrentTabAsActive,\n}\n","/*!\n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/(\\d+)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (!node.bufferSource) {\n return self;\n }\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, ∞]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i console.debug('Audio output successfully redirected to secondary speaker'))\n\t\t\t\t\t.catch((error) => console.error('Failed to redirect audio output:', error))\n\t\t\t\tsoundDuped.play()\n\t\t\t}\n\t\t}\n\t} else if (loadState('notifications', 'sound_notification')) {\n\t\tconst sound = new Howl({\n\t\t\tsrc: [generateFilePath('notifications', 'img', 'notification.ogg')],\n\t\t\tvolume: 0.5,\n\t\t})\n\n\t\tsound.play()\n\t}\n}\n\nexport {\n\tcreateWebNotification,\n}\n","\n\n\n\n\n\n"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_main","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","renderSlot","createCommentVNode","toDisplayString","createTextVNode","NcEmptyContent","_export_sfc","props","timeOptions","computed","relativeTimeOptions","title","useFormatTime","toRef","relativeTime","useFormatRelativeTime","formattedTime","unref","__emit","emit","descriptionId","createElementId","triggerId","focusTrap","ref","isOpened","wrapperTag","contentContainerElement","useTemplateRef","headerMenuElement","triggerButtonInstance","ignore","onClickOutside","setMenuState","useHotKey","useTrapStackControl","watch","state","toggleMenu","nextTick","addFocusTrap","clearFocusTrap","onFocusOut","event","createFocusTrap","getTrapStack","createBlock","resolveDynamicComponent","normalizeClass","withCtx","createVNode","NcButton","withModifiers","withDirectives","createElementVNode","vShow","NcHeaderMenu","_sfc_main$1","_sfc_render","NcUserBubbleDiv","mergeModels","isOpen","useModel","isAvatarUrl","e","isCustomAvatar","avatarStyle","hasUrl","warn","href","contentComponent","RouterLink","contentStyle","NcPopover","$event","attrs","mergeProps","NcAvatar","normalizeStyle","NcUserBubble","exports","loadState","app","key","fallback","elem","i","require$$0","t","valid","major","require$$1","_interopDefault","valid__default","major__default","ProxyBus","bus2","__publicField","name","handler","SimpleBus","h","bus","getBus","_a","subscribe","unsubscribe","eventBus","browserStorage$1","token","observers","getRequestToken","onRequestTokenUpdate","observer","error","getCSPNonce","meta","token2","browserStorage","GuestUser","randomUUID","guest","displayName","currentUser$1","getGuestUser","getGuestNickname","setGuestNickname","nickname","c","r","currentUser","getAttribute","el","attribute","getCurrentUser","head","uid","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction$1","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isEmptyObject","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","allOwnKeys","l","keys","len","findKey","_key","_global","global","isContextDefined","context","merge","caseless","skipUndefined","assignValue","targetKey","extend","a","b","stripBOM","content","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","callbacks","data","cb","asap","process","utils$1","AxiosError","message","code","config","request","response","prototype$1","customProps","axiosError","msg","errCode","httpAdapter","isVisitable","removeBrackets","renderKey","path","dots","isFlatArray","predicates","toFormData","formData","options","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","Buffer","index","exposedHelpers","build","encode$1","charMap","match","AxiosURLSearchParams","params","encoder","_encode","encode","buildURL","url","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","id","InterceptorManager$1","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","utils","platform","__spreadValues","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","defaults","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","method","defaults$1","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","dest","entry","matcher","deleted","deleteHeader","format","normalized","targets","asStrings","first","accessors","defineAccessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","isCancel","CanceledError","settle","resolve","reject","validateStatus","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","args","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","formHeaders","allowedHeaders","xsrfValue","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","onloadend","responseHeaders","err","timeoutErrorMessage","cancel","protocol","composeSignals$1","signals","timeout","length","controller","aborted","onabort","reason","signal","streamChunk","chunk","chunkSize","pos","end","readBytes","iterable","__asyncGenerator","iter","__forAwait","readStream","more","temp","__await","__yieldStar","stream","reader","trackStream","onProgress","onFinish","_onFinish","loadedBytes","DEFAULT_CHUNK_SIZE","isFunction","globalFetchAPI","Request","Response","ReadableStream$1","TextEncoder","test","factory","env","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","supportsResponseStream","resolvers","res","getBodyLength","body","resolveBodyLength","cancelToken","withCredentials","fetchOptions","_fetch","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","resolvedOptions","__spreadProps","isStreamResponse","responseContentLength","responseData","seedCache","getFetch","fetch","seeds","seed","map","knownAdapters","renderReason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","s","throwIfCancellationRequested","dispatchRequest","VERSION","validators$1","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","correctSpelling","assertOptions","schema","allowUnknown","validators","Axios","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","onFulfilled","onRejected","fullPath","generateHTTPMethod","isForm","Axios$1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","CancelToken$1","spread","callback","isAxiosError","payload","HttpStatusCode","HttpStatusCode$1","createInstance","defaultConfig","instance","axios","promises","axios_1","n","u","U","R","o","f","g","v","d","_","router","require$$2","Axios__default","client","cancelableClient","RETRY_KEY","onCsrfTokenError","responseURL","RETRY_DELAY_KEY","onMaintenanceModeError","retryDelay","onNotLoggedInError","__importDefault","this","mod","dist","capabilities_1","event_bus_1","getSupportedTypes","capabilities","listen","setupGlobals","setupSocket","preAuth","_createElementBlock","_mergeProps","$props","_createElementVNode","_openBlock","theming","getCapabilities","hexRegex","hexToHSL","hexColor","max","hue","sat","lum","isRedThemed","isOrangeThemed","_createBlock","IconBell","isWebLink","onClickActionButton","action","_unref","_createTextVNode","_toDisplayString","$options","lastSlashPosition","firstSlashPosition","_component_NcUserBubble","ActionButton","NcDateTime","IconClose","IconMessageOutline","NcRichText","parametersHaveLink","p","parameters","richParameters","UserParameter","FileParameter","DefaultParameter","executeEvent","showError","generateOcsUrl","_hoisted_6","_component_NcDateTime","_component_NcButton","_createVNode","_component_IconClose","_hoisted_8","_component_NcRichText","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_14","_normalizeClass","_hoisted_15","_hoisted_16","_hoisted_17","_Fragment","_component_ActionButton","_hoisted_18","_component_IconMessageOutline","getNotificationsData","tabId","lastETag","forceRefresh","hasNotifyPush","lastUpdated","BrowserStorage","lastTab","refreshData","setCurrentTabAsActive","remapAttributes","notification","requestConfig","HowlerGlobal","Howler","vol","setupAudioContext","ids","j","sound","muted","ext","audioTest","mpegTest","ua","checkOpera","isOldOpera","checkSafari","safariVersion","isOldSafari","unlock","audioNode","testPlay","audio","handleSuspension","Howl","Sound","loadBuffer","sprite","internal","num","soundId","seek","duration","start","stop","setParams","node","playWebAudio","playHtml5","play","loadedNoReadyState","from","to","currentTime","isGroup","diff","steps","stepLen","lastTick","tick","loop","playing","seekAndEmit","emitSeek","realTime","rateSeek","sounds","remCache","once","events","isId","task","limit","cnt","isIOS","checkIE","howl","parent","volume","loadSound","dataView","decodeAudioData","xhr","safeXhrSend","arraybuffer","success","buffer","iOS","appVersion","safari","pan","x","y","z","xUp","yUp","zUp","or","_super","pannerType","setupPanner","pa","panner","createWebNotification","getLanguage","playNotificationSound","howlPayload","generateFilePath","primaryDeviceId","secondarySpeakerEnabled","secondaryDeviceId","_c","_b","soundDuped","sessionKeepAlive","hasThrottledPushNotifications","fairUsePolicyNotification","imagePath","IconBellOutline","IconNotification","NotificationItem","notifications","pollInterval","temporary","permissions","$data","_component_NcHeaderMenu","_component_IconNotification","$setup","_Transition","_TransitionGroup","_component_NotificationItem","_renderList","_component_NcEmptyContent","_component_IconBellOutline"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,23]} \ No newline at end of file diff --git a/js/NotificationsApp-CnHRKMHH.chunk.mjs.map.license b/js/NotificationsApp-BSasLk0w.chunk.mjs.map.license similarity index 100% rename from js/NotificationsApp-CnHRKMHH.chunk.mjs.map.license rename to js/NotificationsApp-BSasLk0w.chunk.mjs.map.license diff --git a/js/NotificationsApp-CnHRKMHH.chunk.mjs b/js/NotificationsApp-CnHRKMHH.chunk.mjs deleted file mode 100644 index 3ee898a54..000000000 --- a/js/NotificationsApp-CnHRKMHH.chunk.mjs +++ /dev/null @@ -1,2 +0,0 @@ -var pi=Object.defineProperty,_i=Object.defineProperties;var hi=Object.getOwnPropertyDescriptors;var An=Object.getOwnPropertySymbols;var mi=Object.prototype.hasOwnProperty,gi=Object.prototype.propertyIsEnumerable;var Se=(c,g)=>(g=Symbol[c])?g:Symbol.for("Symbol."+c),yi=c=>{throw TypeError(c)};var vt=(c,g,o)=>g in c?pi(c,g,{enumerable:!0,configurable:!0,writable:!0,value:o}):c[g]=o,oe=(c,g)=>{for(var o in g||(g={}))mi.call(g,o)&&vt(c,o,g[o]);if(An)for(var o of An(g))gi.call(g,o)&&vt(c,o,g[o]);return c},Pe=(c,g)=>_i(c,hi(g));var Ie=(c,g,o)=>vt(c,typeof g!="symbol"?g+"":g,o);var Ae=function(c,g){this[0]=c,this[1]=g},At=(c,g,o)=>{var l=(v,I,A,T)=>{try{var B=o[v](I),e=(I=B.value)instanceof Ae,n=B.done;Promise.resolve(e?I[0]:I).then(r=>e?l(v==="return"?v:"next",I[1]?{done:r.done,value:r.value}:r,A,T):A({value:r,done:n})).catch(r=>l("throw",r,A,T))}catch(r){T(r)}},f=v=>b[v]=I=>new Promise((A,T)=>l(v,I,A,T)),b={};return o=o.apply(c,g),b[Se("asyncIterator")]=()=>b,f("next"),f("throw"),f("return"),b},Tt=c=>{var g=c[Se("asyncIterator")],o=!1,l,f={};return g==null?(g=c[Se("iterator")](),l=b=>f[b]=v=>g[b](v)):(g=g.call(c),l=b=>f[b]=v=>{if(o){if(o=!1,b==="throw")throw v;return v}return o=!0,{done:!1,value:new Ae(new Promise(I=>{var A=g[b](v);A instanceof Object||yi("Object expected"),I(A)}),1)}}),f[Se("iterator")]=()=>f,l("next"),"throw"in g?l("throw"):f.throw=b=>{throw b},"return"in g&&l("return"),f},Tn=(c,g,o)=>(g=c[Se("asyncIterator")])?g.call(c):(c=c[Se("iterator")](),g={},o=(l,f)=>(f=c[l])&&(g[l]=b=>new Promise((v,I,A)=>(b=f.call(c,b),A=b.done,Promise.resolve(b.value).then(T=>v({value:T,done:A}),I)))),o("next"),o("return"),g);import{e as et,u as bi,f as wi,g as xn,o as vi,h as Ai,i as Ti,j as xi,k as ki,m as tt,R as Si,n as Ii,p as Oi,r as Ei,q as Ni,w as Ri,x as Ci,y as kn,z as Oe,B as Pi,_ as fe,A as Bi,t as le,C as Fi,d as Ke,v as Rt,s as Et,D as Qe,E as ji,l as Ye,F as Sn,G as Mi,H as xt,I as Ui,J as kt,K as Li}from"./index-_0iU0BYK-CjtyBpO5.chunk.mjs";import{l as nt,f as j,o as P,g as G,m as de,t as $,h as Be,k as te,n as In,u as ye,j as On,p as St,q as Jn,s as Di,a as Z,w as J,e as ie,v as En,x as qi,b as X,y as Nn,z as Ct,A as Nt,B as Rn,C as Hi,D as Vi,E as Fe,G as $i,r as ee,F as Xn,H as Zn,T as Gi,I as zi,J as Wi}from"./style-3CHj422B.chunk.mjs";import{B as Y}from"./BrowserStorage-FmX8gBxO.chunk.mjs";import"./vite-preload-helper-B9rAsR6N.chunk.mjs";const Ji={class:"empty-content",role:"note"},Xi={key:0,class:"empty-content__icon","aria-hidden":"true"},Zi={key:0,class:"empty-content__name"},Ki={key:1,class:"empty-content__description"},Qi={key:2,class:"empty-content__action"},Yi=nt({__name:"NcEmptyContent",props:{description:{default:""},name:{default:""}},setup(c){return(g,o)=>(P(),j("div",Ji,[g.$slots.icon?(P(),j("div",Xi,[de(g.$slots,"icon",{},void 0,!0)])):G("",!0),de(g.$slots,"name",{},()=>[g.name!==""?(P(),j("span",Zi,$(g.name),1)):G("",!0)],!0),g.description!==""||g.$slots.description?(P(),j("p",Ki,[de(g.$slots,"description",{},()=>[Be($(g.description),1)],!0)])):G("",!0),g.$slots.action?(P(),j("div",Qi,[de(g.$slots,"action",{},void 0,!0)])):G("",!0)]))}}),er=et(Yi,[["__scopeId","data-v-697cfd8f"]]),tr=["data-timestamp","title","textContent"],nr=nt({__name:"NcDateTime",props:{timestamp:{},format:{default:()=>({timeStyle:"medium",dateStyle:"short"})},relativeTime:{type:[Boolean,String],default:"long"},ignoreSeconds:{type:Boolean}},setup(c){const g=c,o=te(()=>({format:g.format})),l=te(()=>({ignoreSeconds:g.ignoreSeconds,relativeTime:g.relativeTime||"long",update:g.relativeTime!==!1})),f=bi(In(()=>g.timestamp),o),b=wi(In(()=>g.timestamp),l),v=te(()=>g.relativeTime?b.value:f.value);return(I,A)=>(P(),j("span",{class:"nc-datetime",dir:"auto","data-timestamp":I.timestamp,title:ye(f),textContent:$(v.value)},null,8,tr))}}),or=["id"],ir={class:"header-menu__caret"},rr=["id"],sr={ref:"contentContainer",class:"header-menu__content"},ar=nt({__name:"NcHeaderMenu",props:{id:{},ariaLabel:{default:()=>{}},open:{type:Boolean,default:!1},isNav:{type:Boolean,default:!1},description:{default:()=>{}},excludeClickOutsideSelectors:{default:()=>[]}},emits:["closed","opened","update:open"],setup(c,{emit:g}){const o=g,l=xn(),f=xn(),b=On(),v=On(c.open),I=te(()=>c.isNav?"nav":"div"),A=St("contentContainer"),T=St("headerMenu"),B=St("triggerButton"),e=te(()=>Array.isArray(c.excludeClickOutsideSelectors)?c.excludeClickOutsideSelectors:c.excludeClickOutsideSelectors.split(" "));vi(T,()=>r(!1),{ignore:e}),Ai("Escape",()=>r(!1),{prevent:!0}),Ti(v,{disabled:()=>!c.isNav}),Jn(()=>c.open,p=>r(p));function n(){r(!v.value)}async function r(p){p!==v.value&&(v.value=p,o("update:open",p),await Di(),await(p?_():y()),o(p?"opened":"closed"))}function u(p){var x;c.isNav&&p.relatedTarget instanceof Node&&((x=T.value)!=null&&x.contains(p.relatedTarget))&&r(!1)}async function _(){var p;c.isNav||b.value||(b.value=xi(A.value,{allowOutsideClick:!0,trapStack:ki(),fallbackFocus:(p=B.value)==null?void 0:p.$el}),b.value.activate())}function y(){var p;(p=b.value)==null||p.deactivate(),b.value=void 0}return(p,x)=>(P(),Z(Nt(I.value),{id:p.id,ref:"headerMenu","aria-labelledby":p.isNav?ye(f):null,class:Ct([{"header-menu--opened":v.value},"header-menu"]),onFocusout:u},{default:J(()=>[ie(ye(tt),{id:p.isNav?ye(f):null,ref:"triggerButton","aria-controls":"header-menu-".concat(p.id),"aria-expanded":v.value.toString(),"aria-label":p.ariaLabel,class:"header-menu__trigger",size:"large",variant:"tertiary-no-background",onClick:qi(n,["prevent"])},{icon:J(()=>[de(p.$slots,"trigger",{},void 0,!0)]),_:3},8,["id","aria-controls","aria-expanded","aria-label"]),p.description?(P(),j("span",{key:0,id:ye(l),class:"header-menu__description hidden-visually"},$(p.description),9,or)):G("",!0),En(X("div",ir,null,512),[[Nn,v.value]]),En(X("div",{id:"header-menu-".concat(p.id),class:"header-menu__wrapper"},[X("div",sr,[de(p.$slots,"default",{},void 0,!0)],512)],8,rr),[[Nn,v.value]])]),_:3},40,["id","aria-labelledby","class"]))}}),ur=et(ar,[["__scopeId","data-v-d45c5788"]]),lr={};function cr(c,g){return P(),j("div",null,[de(c.$slots,"trigger")])}const dr=et(lr,[["render",cr]]),fr={class:"user-bubble__name"},pr={key:0,class:"user-bubble__secondary"},_r=nt({__name:"NcUserBubble",props:Rn({avatarImage:{default:void 0},user:{default:void 0},displayName:{default:void 0},showUserStatus:{type:Boolean},url:{default:void 0},to:{default:void 0},primary:{type:Boolean},size:{default:20},margin:{default:2}},{open:{type:Boolean},openModifiers:{}}),emits:Rn(["click"],["update:open"]),setup(c,{emit:g}){const o=Hi(c,"open"),l=c,f=g,b=te(()=>{if(!l.avatarImage)return!1;try{return!!new URL(l.avatarImage)}catch(n){return!1}}),v=te(()=>!!l.avatarImage),I=te(()=>({marginInlineStart:"".concat(l.margin,"px")})),A=te(()=>{var n,r;if(!l.url||l.url.trim()==="")return!1;try{return!!new URL(l.url,(r=(n=l.url)==null?void 0:n.startsWith)!=null&&r.call(n,"/")?window.location.href:void 0)}catch(u){return Vi("[NcUserBubble] Invalid URL passed",{url:l.url}),!1}}),T=te(()=>A.value?l.url:void 0),B=te(()=>A.value?"a":l.to?Si:"div"),e=te(()=>({height:"".concat(l.size,"px"),lineHeight:"".concat(l.size,"px"),borderRadius:"".concat(l.size/2,"px")}));return Jn([()=>l.displayName,()=>l.user],()=>{!l.displayName&&l.user}),(n,r)=>(P(),Z(Nt(n.$slots.default?ye(Oi):dr),{shown:o.value,"onUpdate:shown":r[1]||(r[1]=u=>o.value=u),class:"user-bubble__wrapper",trigger:"hover focus"},{trigger:J(({attrs:u})=>[(P(),Z(Nt(B.value),Fe({class:["user-bubble__content",{"user-bubble__content--primary":n.primary}],style:e.value,to:n.to,href:T.value},u,{onClick:r[0]||(r[0]=_=>f("click",_))}),{default:J(()=>[ie(ye(Ii),{url:v.value&&b.value?n.avatarImage:void 0,"icon-class":v.value&&!b.value?n.avatarImage:void 0,user:n.user,"display-name":n.displayName,size:n.size-n.margin*2,style:$i(I.value),"disable-tooltip":!0,"disable-menu":!0,"hide-status":!n.showUserStatus,class:"user-bubble__avatar"},null,8,["url","icon-class","user","display-name","size","style","hide-status"]),X("span",fr,$(n.displayName||n.user),1),n.$slots.name?(P(),j("span",pr,[de(n.$slots,"name",{},void 0,!0)])):G("",!0)]),_:2},1040,["class","style","to","href"]))]),default:J(()=>[de(n.$slots,"default",{},void 0,!0)]),_:3},40,["shown"]))}}),hr=et(_r,[["__scopeId","data-v-37bde6b7"]]);var ce={},Cn={},Pn={},Bn;function mr(){return Bn||(Bn=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});function g(o,l,f){const b=document.querySelector("#initial-state-".concat(o,"-").concat(l));if(b===null){if(f!==void 0)return f;throw new Error("Could not find initial state ".concat(l," of ").concat(o))}try{return JSON.parse(atob(b.value))}catch(v){throw new Error("Could not parse initial state ".concat(l," of ").concat(o))}}c.loadState=g}(Pn)),Pn}var Fn;function gr(){return Fn||(Fn=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});const g=mr();function o(){try{return g.loadState("core","capabilities")}catch(l){return console.debug("Could not find capabilities initial state fall back to _oc_capabilities"),"_oc_capabilities"in window?window._oc_capabilities:{}}}c.getCapabilities=o}(Cn)),Cn}var jn={},Mn={},Un={},Ln;function Kn(){return Ln||(Ln=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});const g=Ei(),o=Ni(),l=r=>r&&r.__esModule?r:{default:r},f=l(g),b=l(o);class v{constructor(u){Ie(this,"bus");typeof u.getVersion!="function"||!f.default(u.getVersion())?console.warn("Proxying an event bus with an unknown or invalid version"):b.default(u.getVersion())!==b.default(this.getVersion())&&console.warn("Proxying an event bus of version "+u.getVersion()+" with "+this.getVersion()),this.bus=u}getVersion(){return"3.3.2"}subscribe(u,_){this.bus.subscribe(u,_)}unsubscribe(u,_){this.bus.unsubscribe(u,_)}emit(u,..._){this.bus.emit(u,..._)}}class I{constructor(){Ie(this,"handlers",new Map)}getVersion(){return"3.3.2"}subscribe(u,_){this.handlers.set(u,(this.handlers.get(u)||[]).concat(_))}unsubscribe(u,_){this.handlers.set(u,(this.handlers.get(u)||[]).filter(y=>y!==_))}emit(u,..._){(this.handlers.get(u)||[]).forEach(y=>{try{y(_[0])}catch(p){console.error("could not invoke event listener",p)}})}}let A=null;function T(){var r;return A!==null?A:typeof window>"u"?new Proxy({},{get:()=>()=>console.error("Window not available, EventBus can not be established!")}):((r=window.OC)!=null&&r._eventBus&&typeof window._nc_event_bus>"u"&&(console.warn("found old event bus instance at OC._eventBus. Update your version!"),window._nc_event_bus=window.OC._eventBus),typeof(window==null?void 0:window._nc_event_bus)<"u"?A=new v(window._nc_event_bus):A=window._nc_event_bus=new I,A)}function B(r,u){T().subscribe(r,u)}function e(r,u){T().unsubscribe(r,u)}function n(r,...u){T().emit(r,...u)}c.ProxyBus=v,c.SimpleBus=I,c.emit=n,c.subscribe=B,c.unsubscribe=e}(Un)),Un}const yr=Ri(Ci);var Dn;function br(){return Dn||(Dn=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});const g=Kn(),o=yr;let l;const f=[];function b(){var x;return l===void 0&&(l=(x=document.head.dataset.requesttoken)!=null?x:null),l}function v(x){f.push(x)}g.subscribe("csrf-token-update",x=>{l=x.token,f.forEach(C=>{try{C(l)}catch(F){console.error("Error updating CSRF token observer",F)}})});function I(){const x=document==null?void 0:document.querySelector('meta[name="csp-nonce"]');if(!x){const C=b();return C?btoa(C):void 0}return x.nonce}const A=o.getBuilder("public").persist().build();class T{constructor(){Ie(this,"_displayName");Ie(this,"uid");Ie(this,"isAdmin");A.getItem("guestUid")||A.setItem("guestUid",u()),this._displayName=A.getItem("guestNickname")||"",this.uid=A.getItem("guestUid")||u(),this.isAdmin=!1,g.subscribe("user:info:changed",C=>{this._displayName=C.displayName,A.setItem("guestNickname",C.displayName||"")})}get displayName(){return this._displayName}set displayName(C){this._displayName=C,A.setItem("guestNickname",C),g.emit("user:info:changed",this)}}let B;function e(){return B||(B=new T),B}function n(){var x;return((x=e())==null?void 0:x.displayName)||null}function r(x){if(!x||x.trim().length===0)throw new Error("Nickname cannot be empty");e().displayName=x}function u(){var x;return(x=globalThis.crypto)!=null&&x.randomUUID?globalThis.crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,C=>{const F=Math.random()*16|0;return(C==="x"?F:F&3|8).toString(16)})}let _;function y(x,C){return x?x.getAttribute(C):null}function p(){if(_!==void 0)return _;const x=document==null?void 0:document.getElementsByTagName("head")[0];if(!x)return null;const C=y(x,"data-user");return C===null?(_=null,_):(_={uid:C,displayName:y(x,"data-user-displayname"),isAdmin:!!window._oc_isadmin},_)}c.getCSPNonce=I,c.getCurrentUser=p,c.getGuestNickname=n,c.getGuestUser=e,c.getRequestToken=b,c.onRequestTokenUpdate=v,c.setGuestNickname=r}(Mn)),Mn}var It,qn;function wr(){if(qn)return It;qn=1;function c(t,i){return function(){return t.apply(i,arguments)}}const{toString:g}=Object.prototype,{getPrototypeOf:o}=Object,{iterator:l,toStringTag:f}=Symbol,b=(t=>i=>{const s=g.call(i);return t[s]||(t[s]=s.slice(8,-1).toLowerCase())})(Object.create(null)),v=t=>(t=t.toLowerCase(),i=>b(i)===t),I=t=>i=>typeof i===t,{isArray:A}=Array,T=I("undefined");function B(t){return t!==null&&!T(t)&&t.constructor!==null&&!T(t.constructor)&&u(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const e=v("ArrayBuffer");function n(t){let i;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?i=ArrayBuffer.isView(t):i=t&&t.buffer&&e(t.buffer),i}const r=I("string"),u=I("function"),_=I("number"),y=t=>t!==null&&typeof t=="object",p=t=>t===!0||t===!1,x=t=>{if(b(t)!=="object")return!1;const i=o(t);return(i===null||i===Object.prototype||Object.getPrototypeOf(i)===null)&&!(f in t)&&!(l in t)},C=t=>{if(!y(t)||B(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch(i){return!1}},F=v("Date"),H=v("File"),re=v("Blob"),Te=v("FileList"),Ee=t=>y(t)&&u(t.pipe),D=t=>{let i;return t&&(typeof FormData=="function"&&t instanceof FormData||u(t.append)&&((i=b(t))==="formdata"||i==="object"&&u(t.toString)&&t.toString()==="[object FormData]"))},je=v("URLSearchParams"),[Me,ot,Ue,pe]=["ReadableStream","Request","Response","Headers"].map(v),it=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Ne(t,i,{allOwnKeys:s=!1}={}){if(t===null||typeof t>"u")return;let a,d;if(typeof t!="object"&&(t=[t]),A(t))for(a=0,d=t.length;a0;)if(d=s[a],i===d.toLowerCase())return d;return null}const be=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:Oe,Bt=t=>!T(t)&&t!==be;function rt(){const{caseless:t,skipUndefined:i}=Bt(this)&&this||{},s={},a=(d,m)=>{const h=t&&Pt(s,m)||m;x(s[h])&&x(d)?s[h]=rt(s[h],d):x(d)?s[h]=rt({},d):A(d)?s[h]=d.slice():(!i||!T(d))&&(s[h]=d)};for(let d=0,m=arguments.length;d(Ne(i,(d,m)=>{s&&u(d)?t[m]=c(d,s):t[m]=d},{allOwnKeys:a}),t),to=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),no=(t,i,s,a)=>{t.prototype=Object.create(i.prototype,a),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:i.prototype}),s&&Object.assign(t.prototype,s)},oo=(t,i,s,a)=>{let d,m,h;const k={};if(i=i||{},t==null)return i;do{for(d=Object.getOwnPropertyNames(t),m=d.length;m-- >0;)h=d[m],(!a||a(h,t,i))&&!k[h]&&(i[h]=t[h],k[h]=!0);t=s!==!1&&o(t)}while(t&&(!s||s(t,i))&&t!==Object.prototype);return i},io=(t,i,s)=>{t=String(t),(s===void 0||s>t.length)&&(s=t.length),s-=i.length;const a=t.indexOf(i,s);return a!==-1&&a===s},ro=t=>{if(!t)return null;if(A(t))return t;let i=t.length;if(!_(i))return null;const s=new Array(i);for(;i-- >0;)s[i]=t[i];return s},so=(t=>i=>t&&i instanceof t)(typeof Uint8Array<"u"&&o(Uint8Array)),ao=(t,i)=>{const s=(t&&t[l]).call(t);let a;for(;(a=s.next())&&!a.done;){const d=a.value;i.call(t,d[0],d[1])}},uo=(t,i)=>{let s;const a=[];for(;(s=t.exec(i))!==null;)a.push(s);return a},lo=v("HTMLFormElement"),co=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(i,s,a){return s.toUpperCase()+a}),Ft=(({hasOwnProperty:t})=>(i,s)=>t.call(i,s))(Object.prototype),fo=v("RegExp"),jt=(t,i)=>{const s=Object.getOwnPropertyDescriptors(t),a={};Ne(s,(d,m)=>{let h;(h=i(d,m,t))!==!1&&(a[m]=h||d)}),Object.defineProperties(t,a)},po=t=>{jt(t,(i,s)=>{if(u(t)&&["arguments","caller","callee"].indexOf(s)!==-1)return!1;const a=t[s];if(u(a)){if(i.enumerable=!1,"writable"in i){i.writable=!1;return}i.set||(i.set=()=>{throw Error("Can not rewrite read-only method '"+s+"'")})}})},_o=(t,i)=>{const s={},a=d=>{d.forEach(m=>{s[m]=!0})};return A(t)?a(t):a(String(t).split(i)),s},ho=()=>{},mo=(t,i)=>t!=null&&Number.isFinite(t=+t)?t:i;function go(t){return!!(t&&u(t.append)&&t[f]==="FormData"&&t[l])}const yo=t=>{const i=new Array(10),s=(a,d)=>{if(y(a)){if(i.indexOf(a)>=0)return;if(B(a))return a;if(!("toJSON"in a)){i[d]=a;const m=A(a)?[]:{};return Ne(a,(h,k)=>{const N=s(h,d+1);!T(N)&&(m[k]=N)}),i[d]=void 0,m}}return a};return s(t,0)},bo=v("AsyncFunction"),wo=t=>t&&(y(t)||u(t))&&u(t.then)&&u(t.catch),Mt=((t,i)=>t?setImmediate:i?((s,a)=>(be.addEventListener("message",({source:d,data:m})=>{d===be&&m===s&&a.length&&a.shift()()},!1),d=>{a.push(d),be.postMessage(s,"*")}))("axios@".concat(Math.random()),[]):s=>setTimeout(s))(typeof setImmediate=="function",u(be.postMessage)),vo=typeof queueMicrotask<"u"?queueMicrotask.bind(be):typeof kn<"u"&&kn.nextTick||Mt;var w={isArray:A,isArrayBuffer:e,isBuffer:B,isFormData:D,isArrayBufferView:n,isString:r,isNumber:_,isBoolean:p,isObject:y,isPlainObject:x,isEmptyObject:C,isReadableStream:Me,isRequest:ot,isResponse:Ue,isHeaders:pe,isUndefined:T,isDate:F,isFile:H,isBlob:re,isRegExp:fo,isFunction:u,isStream:Ee,isURLSearchParams:je,isTypedArray:so,isFileList:Te,forEach:Ne,merge:rt,extend:eo,trim:it,stripBOM:to,inherits:no,toFlatObject:oo,kindOf:b,kindOfTest:v,endsWith:io,toArray:ro,forEachEntry:ao,matchAll:uo,isHTMLForm:lo,hasOwnProperty:Ft,hasOwnProp:Ft,reduceDescriptors:jt,freezeMethods:po,toObjectSet:_o,toCamelCase:co,noop:ho,toFiniteNumber:mo,findKey:Pt,global:be,isContextDefined:Bt,isSpecCompliantForm:go,toJSONObject:yo,isAsyncFn:bo,isThenable:wo,setImmediate:Mt,asap:vo,isIterable:t=>t!=null&&u(t[l])};function U(t,i,s,a,d){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",i&&(this.code=i),s&&(this.config=s),a&&(this.request=a),d&&(this.response=d,this.status=d.status?d.status:null)}w.inherits(U,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:w.toJSONObject(this.config),code:this.code,status:this.status}}});const Ut=U.prototype,Lt={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{Lt[t]={value:t}}),Object.defineProperties(U,Lt),Object.defineProperty(Ut,"isAxiosError",{value:!0}),U.from=(t,i,s,a,d,m)=>{const h=Object.create(Ut);w.toFlatObject(t,h,function(S){return S!==Error.prototype},S=>S!=="isAxiosError");const k=t&&t.message?t.message:"Error",N=i==null&&t?t.code:i;return U.call(h,k,N,s,a,d),t&&h.cause==null&&Object.defineProperty(h,"cause",{value:t,configurable:!0}),h.name=t&&t.name||"Error",m&&Object.assign(h,m),h};var Ao=null;function st(t){return w.isPlainObject(t)||w.isArray(t)}function Dt(t){return w.endsWith(t,"[]")?t.slice(0,-2):t}function qt(t,i,s){return t?t.concat(i).map(function(a,d){return a=Dt(a),!s&&d?"["+a+"]":a}).join(s?".":""):i}function To(t){return w.isArray(t)&&!t.some(st)}const xo=w.toFlatObject(w,{},null,function(t){return/^is[A-Z]/.test(t)});function Le(t,i,s){if(!w.isObject(t))throw new TypeError("target must be an object");i=i||new FormData,s=w.toFlatObject(s,{metaTokens:!0,dots:!1,indexes:!1},!1,function(L,O){return!w.isUndefined(O[L])});const a=s.metaTokens,d=s.visitor||S,m=s.dots,h=s.indexes,k=(s.Blob||typeof Blob<"u"&&Blob)&&w.isSpecCompliantForm(i);if(!w.isFunction(d))throw new TypeError("visitor must be a function");function N(L){if(L===null)return"";if(w.isDate(L))return L.toISOString();if(w.isBoolean(L))return L.toString();if(!k&&w.isBlob(L))throw new U("Blob is not supported. Use a Buffer instead.");return w.isArrayBuffer(L)||w.isTypedArray(L)?k&&typeof Blob=="function"?new Blob([L]):Pi.from(L):L}function S(L,O,R){let V=L;if(L&&!R&&typeof L=="object"){if(w.endsWith(O,"{}"))O=a?O:O.slice(0,-2),L=JSON.stringify(L);else if(w.isArray(L)&&To(L)||(w.isFileList(L)||w.endsWith(O,"[]"))&&(V=w.toArray(L)))return O=Dt(O),V.forEach(function(Q,W){!(w.isUndefined(Q)||Q===null)&&i.append(h===!0?qt([O],W,m):h===null?O:O+"[]",N(Q))}),!1}return st(L)?!0:(i.append(qt(R,O,m),N(L)),!1)}const E=[],M=Object.assign(xo,{defaultVisitor:S,convertValue:N,isVisitable:st});function q(L,O){if(!w.isUndefined(L)){if(E.indexOf(L)!==-1)throw Error("Circular reference detected in "+O.join("."));E.push(L),w.forEach(L,function(R,V){(!(w.isUndefined(R)||R===null)&&d.call(i,R,w.isString(V)?V.trim():V,O,M))===!0&&q(R,O?O.concat(V):[V])}),E.pop()}}if(!w.isObject(t))throw new TypeError("data must be an object");return q(t),i}function Ht(t){const i={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(s){return i[s]})}function at(t,i){this._pairs=[],t&&Le(t,this,i)}const Vt=at.prototype;Vt.append=function(t,i){this._pairs.push([t,i])},Vt.toString=function(t){const i=t?function(s){return t.call(this,s,Ht)}:Ht;return this._pairs.map(function(s){return i(s[0])+"="+i(s[1])},"").join("&")};function ko(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function $t(t,i,s){if(!i)return t;const a=s&&s.encode||ko;w.isFunction(s)&&(s={serialize:s});const d=s&&s.serialize;let m;if(d?m=d(i,s):m=w.isURLSearchParams(i)?i.toString():new at(i,s).toString(a),m){const h=t.indexOf("#");h!==-1&&(t=t.slice(0,h)),t+=(t.indexOf("?")===-1?"?":"&")+m}return t}class So{constructor(){this.handlers=[]}use(i,s,a){return this.handlers.push({fulfilled:i,rejected:s,synchronous:a?a.synchronous:!1,runWhen:a?a.runWhen:null}),this.handlers.length-1}eject(i){this.handlers[i]&&(this.handlers[i]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(i){w.forEach(this.handlers,function(s){s!==null&&i(s)})}}var Gt=So,zt={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Io=typeof URLSearchParams<"u"?URLSearchParams:at,Oo=typeof FormData<"u"?FormData:null,Eo=typeof Blob<"u"?Blob:null,No={isBrowser:!0,classes:{URLSearchParams:Io,FormData:Oo,Blob:Eo},protocols:["http","https","file","blob","url","data"]};const ut=typeof window<"u"&&typeof document<"u",lt=typeof navigator=="object"&&navigator||void 0,Ro=ut&&(!lt||["ReactNative","NativeScript","NS"].indexOf(lt.product)<0),Co=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Po=ut&&window.location.href||"http://localhost";var Bo=Object.freeze({__proto__:null,hasBrowserEnv:ut,hasStandardBrowserWebWorkerEnv:Co,hasStandardBrowserEnv:Ro,navigator:lt,origin:Po}),K=oe(oe({},Bo),No);function Fo(t,i){return Le(t,new K.classes.URLSearchParams,oe({visitor:function(s,a,d,m){return K.isNode&&w.isBuffer(s)?(this.append(a,s.toString("base64")),!1):m.defaultVisitor.apply(this,arguments)}},i))}function jo(t){return w.matchAll(/\w+|\[(\w*)]/g,t).map(i=>i[0]==="[]"?"":i[1]||i[0])}function Mo(t){const i={},s=Object.keys(t);let a;const d=s.length;let m;for(a=0;a=s.length;return h=!h&&w.isArray(d)?d.length:h,N?(w.hasOwnProp(d,h)?d[h]=[d[h],a]:d[h]=a,!k):((!d[h]||!w.isObject(d[h]))&&(d[h]=[]),i(s,a,d[h],m)&&w.isArray(d[h])&&(d[h]=Mo(d[h])),!k)}if(w.isFormData(t)&&w.isFunction(t.entries)){const s={};return w.forEachEntry(t,(a,d)=>{i(jo(a),d,s,0)}),s}return null}function Uo(t,i,s){if(w.isString(t))try{return(i||JSON.parse)(t),w.trim(t)}catch(a){if(a.name!=="SyntaxError")throw a}return(s||JSON.stringify)(t)}const ct={transitional:zt,adapter:["xhr","http","fetch"],transformRequest:[function(t,i){const s=i.getContentType()||"",a=s.indexOf("application/json")>-1,d=w.isObject(t);if(d&&w.isHTMLForm(t)&&(t=new FormData(t)),w.isFormData(t))return a?JSON.stringify(Wt(t)):t;if(w.isArrayBuffer(t)||w.isBuffer(t)||w.isStream(t)||w.isFile(t)||w.isBlob(t)||w.isReadableStream(t))return t;if(w.isArrayBufferView(t))return t.buffer;if(w.isURLSearchParams(t))return i.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let m;if(d){if(s.indexOf("application/x-www-form-urlencoded")>-1)return Fo(t,this.formSerializer).toString();if((m=w.isFileList(t))||s.indexOf("multipart/form-data")>-1){const h=this.env&&this.env.FormData;return Le(m?{"files[]":t}:t,h&&new h,this.formSerializer)}}return d||a?(i.setContentType("application/json",!1),Uo(t)):t}],transformResponse:[function(t){const i=this.transitional||ct.transitional,s=i&&i.forcedJSONParsing,a=this.responseType==="json";if(w.isResponse(t)||w.isReadableStream(t))return t;if(t&&w.isString(t)&&(s&&!this.responseType||a)){const d=!(i&&i.silentJSONParsing)&&a;try{return JSON.parse(t,this.parseReviver)}catch(m){if(d)throw m.name==="SyntaxError"?U.from(m,U.ERR_BAD_RESPONSE,this,null,this.response):m}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:K.classes.FormData,Blob:K.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};w.forEach(["delete","get","head","post","put","patch"],t=>{ct.headers[t]={}});var dt=ct;const Lo=w.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]);var Do=t=>{const i={};let s,a,d;return t&&t.split("\n").forEach(function(m){d=m.indexOf(":"),s=m.substring(0,d).trim().toLowerCase(),a=m.substring(d+1).trim(),!(!s||i[s]&&Lo[s])&&(s==="set-cookie"?i[s]?i[s].push(a):i[s]=[a]:i[s]=i[s]?i[s]+", "+a:a)}),i};const Jt=Symbol("internals");function Re(t){return t&&String(t).trim().toLowerCase()}function De(t){return t===!1||t==null?t:w.isArray(t)?t.map(De):String(t)}function qo(t){const i=Object.create(null),s=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let a;for(;a=s.exec(t);)i[a[1]]=a[2];return i}const Ho=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function ft(t,i,s,a,d){if(w.isFunction(a))return a.call(this,i,s);if(d&&(i=s),!!w.isString(i)){if(w.isString(a))return i.indexOf(a)!==-1;if(w.isRegExp(a))return a.test(i)}}function Vo(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(i,s,a)=>s.toUpperCase()+a)}function $o(t,i){const s=w.toCamelCase(" "+i);["get","set","has"].forEach(a=>{Object.defineProperty(t,a+s,{value:function(d,m,h){return this[a].call(this,i,d,m,h)},configurable:!0})})}class qe{constructor(i){i&&this.set(i)}set(i,s,a){const d=this;function m(k,N,S){const E=Re(N);if(!E)throw new Error("header name must be a non-empty string");const M=w.findKey(d,E);(!M||d[M]===void 0||S===!0||S===void 0&&d[M]!==!1)&&(d[M||N]=De(k))}const h=(k,N)=>w.forEach(k,(S,E)=>m(S,E,N));if(w.isPlainObject(i)||i instanceof this.constructor)h(i,s);else if(w.isString(i)&&(i=i.trim())&&!Ho(i))h(Do(i),s);else if(w.isObject(i)&&w.isIterable(i)){let k={},N,S;for(const E of i){if(!w.isArray(E))throw TypeError("Object iterator must return a key-value pair");k[S=E[0]]=(N=k[S])?w.isArray(N)?[...N,E[1]]:[N,E[1]]:E[1]}h(k,s)}else i!=null&&m(s,i,a);return this}get(i,s){if(i=Re(i),i){const a=w.findKey(this,i);if(a){const d=this[a];if(!s)return d;if(s===!0)return qo(d);if(w.isFunction(s))return s.call(this,d,a);if(w.isRegExp(s))return s.exec(d);throw new TypeError("parser must be boolean|regexp|function")}}}has(i,s){if(i=Re(i),i){const a=w.findKey(this,i);return!!(a&&this[a]!==void 0&&(!s||ft(this,this[a],a,s)))}return!1}delete(i,s){const a=this;let d=!1;function m(h){if(h=Re(h),h){const k=w.findKey(a,h);k&&(!s||ft(a,a[k],k,s))&&(delete a[k],d=!0)}}return w.isArray(i)?i.forEach(m):m(i),d}clear(i){const s=Object.keys(this);let a=s.length,d=!1;for(;a--;){const m=s[a];(!i||ft(this,this[m],m,i,!0))&&(delete this[m],d=!0)}return d}normalize(i){const s=this,a={};return w.forEach(this,(d,m)=>{const h=w.findKey(a,m);if(h){s[h]=De(d),delete s[m];return}const k=i?Vo(m):String(m).trim();k!==m&&delete s[m],s[k]=De(d),a[k]=!0}),this}concat(...i){return this.constructor.concat(this,...i)}toJSON(i){const s=Object.create(null);return w.forEach(this,(a,d)=>{a!=null&&a!==!1&&(s[d]=i&&w.isArray(a)?a.join(", "):a)}),s}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([i,s])=>i+": "+s).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(i){return i instanceof this?i:new this(i)}static concat(i,...s){const a=new this(i);return s.forEach(d=>a.set(d)),a}static accessor(i){const s=(this[Jt]=this[Jt]={accessors:{}}).accessors,a=this.prototype;function d(m){const h=Re(m);s[h]||($o(a,m),s[h]=!0)}return w.isArray(i)?i.forEach(d):d(i),this}}qe.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),w.reduceDescriptors(qe.prototype,({value:t},i)=>{let s=i[0].toUpperCase()+i.slice(1);return{get:()=>t,set(a){this[s]=a}}}),w.freezeMethods(qe);var ne=qe;function pt(t,i){const s=this||dt,a=i||s,d=ne.from(a.headers);let m=a.data;return w.forEach(t,function(h){m=h.call(s,m,d.normalize(),i?i.status:void 0)}),d.normalize(),m}function Xt(t){return!!(t&&t.__CANCEL__)}function xe(t,i,s){U.call(this,t!=null?t:"canceled",U.ERR_CANCELED,i,s),this.name="CanceledError"}w.inherits(xe,U,{__CANCEL__:!0});function Zt(t,i,s){const a=s.config.validateStatus;!s.status||!a||a(s.status)?t(s):i(new U("Request failed with status code "+s.status,[U.ERR_BAD_REQUEST,U.ERR_BAD_RESPONSE][Math.floor(s.status/100)-4],s.config,s.request,s))}function Go(t){const i=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return i&&i[1]||""}function zo(t,i){t=t||10;const s=new Array(t),a=new Array(t);let d=0,m=0,h;return i=i!==void 0?i:1e3,function(k){const N=Date.now(),S=a[m];h||(h=N),s[d]=k,a[d]=N;let E=m,M=0;for(;E!==d;)M+=s[E++],E=E%t;if(d=(d+1)%t,d===m&&(m=(m+1)%t),N-h{s=N,d=null,m&&(clearTimeout(m),m=null),t(...k)};return[(...k)=>{const N=Date.now(),S=N-s;S>=a?h(k,N):(d=k,m||(m=setTimeout(()=>{m=null,h(d)},a-S)))},()=>d&&h(d)]}const He=(t,i,s=3)=>{let a=0;const d=zo(50,250);return Wo(m=>{const h=m.loaded,k=m.lengthComputable?m.total:void 0,N=h-a,S=d(N),E=h<=k;a=h;const M={loaded:h,total:k,progress:k?h/k:void 0,bytes:N,rate:S||void 0,estimated:S&&k&&E?(k-h)/S:void 0,event:m,lengthComputable:k!=null,[i?"download":"upload"]:!0};t(M)},s)},Kt=(t,i)=>{const s=t!=null;return[a=>i[0]({lengthComputable:s,total:t,loaded:a}),i[1]]},Qt=t=>(...i)=>w.asap(()=>t(...i));var Jo=K.hasStandardBrowserEnv?((t,i)=>s=>(s=new URL(s,K.origin),t.protocol===s.protocol&&t.host===s.host&&(i||t.port===s.port)))(new URL(K.origin),K.navigator&&/(msie|trident)/i.test(K.navigator.userAgent)):()=>!0,Xo=K.hasStandardBrowserEnv?{write(t,i,s,a,d,m){const h=[t+"="+encodeURIComponent(i)];w.isNumber(s)&&h.push("expires="+new Date(s).toGMTString()),w.isString(a)&&h.push("path="+a),w.isString(d)&&h.push("domain="+d),m===!0&&h.push("secure"),document.cookie=h.join("; ")},read(t){const i=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return i?decodeURIComponent(i[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Zo(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Ko(t,i){return i?t.replace(/\/?\/$/,"")+"/"+i.replace(/^\/+/,""):t}function Yt(t,i,s){let a=!Zo(i);return t&&(a||s==!1)?Ko(t,i):i}const en=t=>t instanceof ne?oe({},t):t;function we(t,i){i=i||{};const s={};function a(S,E,M,q){return w.isPlainObject(S)&&w.isPlainObject(E)?w.merge.call({caseless:q},S,E):w.isPlainObject(E)?w.merge({},E):w.isArray(E)?E.slice():E}function d(S,E,M,q){if(w.isUndefined(E)){if(!w.isUndefined(S))return a(void 0,S,M,q)}else return a(S,E,M,q)}function m(S,E){if(!w.isUndefined(E))return a(void 0,E)}function h(S,E){if(w.isUndefined(E)){if(!w.isUndefined(S))return a(void 0,S)}else return a(void 0,E)}function k(S,E,M){if(M in i)return a(S,E);if(M in t)return a(void 0,S)}const N={url:m,method:m,data:m,baseURL:h,transformRequest:h,transformResponse:h,paramsSerializer:h,timeout:h,timeoutMessage:h,withCredentials:h,withXSRFToken:h,adapter:h,responseType:h,xsrfCookieName:h,xsrfHeaderName:h,onUploadProgress:h,onDownloadProgress:h,decompress:h,maxContentLength:h,maxBodyLength:h,beforeRedirect:h,transport:h,httpAgent:h,httpsAgent:h,cancelToken:h,socketPath:h,responseEncoding:h,validateStatus:k,headers:(S,E,M)=>d(en(S),en(E),M,!0)};return w.forEach(Object.keys(oe(oe({},t),i)),function(S){const E=N[S]||d,M=E(t[S],i[S],S);w.isUndefined(M)&&E!==k||(s[S]=M)}),s}var tn=t=>{const i=we({},t);let{data:s,withXSRFToken:a,xsrfHeaderName:d,xsrfCookieName:m,headers:h,auth:k}=i;if(i.headers=h=ne.from(h),i.url=$t(Yt(i.baseURL,i.url,i.allowAbsoluteUrls),t.params,t.paramsSerializer),k&&h.set("Authorization","Basic "+btoa((k.username||"")+":"+(k.password?unescape(encodeURIComponent(k.password)):""))),w.isFormData(s)){if(K.hasStandardBrowserEnv||K.hasStandardBrowserWebWorkerEnv)h.setContentType(void 0);else if(w.isFunction(s.getHeaders)){const N=s.getHeaders(),S=["content-type","content-length"];Object.entries(N).forEach(([E,M])=>{S.includes(E.toLowerCase())&&h.set(E,M)})}}if(K.hasStandardBrowserEnv&&(a&&w.isFunction(a)&&(a=a(i)),a||a!==!1&&Jo(i.url))){const N=d&&m&&Xo.read(m);N&&h.set(d,N)}return i},Qo=typeof XMLHttpRequest<"u"&&function(t){return new Promise(function(i,s){const a=tn(t);let d=a.data;const m=ne.from(a.headers).normalize();let{responseType:h,onUploadProgress:k,onDownloadProgress:N}=a,S,E,M,q,L;function O(){q&&q(),L&&L(),a.cancelToken&&a.cancelToken.unsubscribe(S),a.signal&&a.signal.removeEventListener("abort",S)}let R=new XMLHttpRequest;R.open(a.method.toUpperCase(),a.url,!0),R.timeout=a.timeout;function V(){if(!R)return;const W=ne.from("getAllResponseHeaders"in R&&R.getAllResponseHeaders()),ae={data:!h||h==="text"||h==="json"?R.responseText:R.response,status:R.status,statusText:R.statusText,headers:W,config:t,request:R};Zt(function(_e){i(_e),O()},function(_e){s(_e),O()},ae),R=null}"onloadend"in R?R.onloadend=V:R.onreadystatechange=function(){!R||R.readyState!==4||R.status===0&&!(R.responseURL&&R.responseURL.indexOf("file:")===0)||setTimeout(V)},R.onabort=function(){R&&(s(new U("Request aborted",U.ECONNABORTED,t,R)),R=null)},R.onerror=function(W){const ae=W&&W.message?W.message:"Network Error",_e=new U(ae,U.ERR_NETWORK,t,R);_e.event=W||null,s(_e),R=null},R.ontimeout=function(){let W=a.timeout?"timeout of "+a.timeout+"ms exceeded":"timeout exceeded";const ae=a.transitional||zt;a.timeoutErrorMessage&&(W=a.timeoutErrorMessage),s(new U(W,ae.clarifyTimeoutError?U.ETIMEDOUT:U.ECONNABORTED,t,R)),R=null},d===void 0&&m.setContentType(null),"setRequestHeader"in R&&w.forEach(m.toJSON(),function(W,ae){R.setRequestHeader(ae,W)}),w.isUndefined(a.withCredentials)||(R.withCredentials=!!a.withCredentials),h&&h!=="json"&&(R.responseType=a.responseType),N&&([M,L]=He(N,!0),R.addEventListener("progress",M)),k&&R.upload&&([E,q]=He(k),R.upload.addEventListener("progress",E),R.upload.addEventListener("loadend",q)),(a.cancelToken||a.signal)&&(S=W=>{R&&(s(!W||W.type?new xe(null,t,R):W),R.abort(),R=null)},a.cancelToken&&a.cancelToken.subscribe(S),a.signal&&(a.signal.aborted?S():a.signal.addEventListener("abort",S)));const Q=Go(a.url);if(Q&&K.protocols.indexOf(Q)===-1){s(new U("Unsupported protocol "+Q+":",U.ERR_BAD_REQUEST,t));return}R.send(d||null)})},Yo=(t,i)=>{const{length:s}=t=t?t.filter(Boolean):[];if(i||s){let a=new AbortController,d;const m=function(S){if(!d){d=!0,k();const E=S instanceof Error?S:this.reason;a.abort(E instanceof U?E:new xe(E instanceof Error?E.message:E))}};let h=i&&setTimeout(()=>{h=null,m(new U("timeout ".concat(i," of ms exceeded"),U.ETIMEDOUT))},i);const k=()=>{t&&(h&&clearTimeout(h),h=null,t.forEach(S=>{S.unsubscribe?S.unsubscribe(m):S.removeEventListener("abort",m)}),t=null)};t.forEach(S=>S.addEventListener("abort",m));const{signal:N}=a;return N.unsubscribe=()=>w.asap(k),N}};const ei=function*(t,i){let s=t.byteLength;if(s{const d=ti(t,i);let m=0,h,k=N=>{h||(h=!0,a&&a(N))};return new ReadableStream({async pull(N){try{const{done:S,value:E}=await d.next();if(S){k(),N.close();return}let M=E.byteLength;if(s){let q=m+=M;s(q)}N.enqueue(new Uint8Array(E))}catch(S){throw k(S),S}},cancel(N){return k(N),d.return()}},{highWaterMark:2})},on=64*1024,{isFunction:Ve}=w,oi=(({Request:t,Response:i})=>({Request:t,Response:i}))(w.global),{ReadableStream:rn,TextEncoder:sn}=w.global,an=(t,...i)=>{try{return!!t(...i)}catch(s){return!1}},ii=t=>{t=w.merge.call({skipUndefined:!0},oi,t);const{fetch:i,Request:s,Response:a}=t,d=i?Ve(i):typeof fetch=="function",m=Ve(s),h=Ve(a);if(!d)return!1;const k=d&&Ve(rn),N=d&&(typeof sn=="function"?(O=>R=>O.encode(R))(new sn):async O=>new Uint8Array(await new s(O).arrayBuffer())),S=m&&k&&an(()=>{let O=!1;const R=new s(K.origin,{body:new rn,method:"POST",get duplex(){return O=!0,"half"}}).headers.has("Content-Type");return O&&!R}),E=h&&k&&an(()=>w.isReadableStream(new a("").body)),M={stream:E&&(O=>O.body)};d&&["text","arrayBuffer","blob","formData","stream"].forEach(O=>{!M[O]&&(M[O]=(R,V)=>{let Q=R&&R[O];if(Q)return Q.call(R);throw new U("Response type '".concat(O,"' is not supported"),U.ERR_NOT_SUPPORT,V)})});const q=async O=>{if(O==null)return 0;if(w.isBlob(O))return O.size;if(w.isSpecCompliantForm(O))return(await new s(K.origin,{method:"POST",body:O}).arrayBuffer()).byteLength;if(w.isArrayBufferView(O)||w.isArrayBuffer(O))return O.byteLength;if(w.isURLSearchParams(O)&&(O=O+""),w.isString(O))return(await N(O)).byteLength},L=async(O,R)=>{const V=w.toFiniteNumber(O.getContentLength());return V!=null?V:q(R)};return async O=>{let{url:R,method:V,data:Q,signal:W,cancelToken:ae,timeout:_e,onDownloadProgress:yt,onUploadProgress:hn,responseType:he,headers:bt,withCredentials:Je="same-origin",fetchOptions:mn}=tn(O),gn=i||fetch;he=he?(he+"").toLowerCase():"text";let Xe=Yo([W,ae&&ae.toAbortSignal()],_e),Ce=null;const ve=Xe&&Xe.unsubscribe&&(()=>{Xe.unsubscribe()});let yn;try{if(hn&&S&&V!=="get"&&V!=="head"&&(yn=await L(bt,Q))!==0){let ge=new s(R,{method:"POST",body:Q,duplex:"half"}),ke;if(w.isFormData(Q)&&(ke=ge.headers.get("content-type"))&&bt.setContentType(ke),ge.body){const[wt,Ze]=Kt(yn,He(Qt(hn)));Q=nn(ge.body,on,wt,Ze)}}w.isString(Je)||(Je=Je?"include":"omit");const ue=m&&"credentials"in s.prototype,bn=Pe(oe({},mn),{signal:Xe,method:V.toUpperCase(),headers:bt.normalize().toJSON(),body:Q,duplex:"half",credentials:ue?Je:void 0});Ce=m&&new s(R,bn);let me=await(m?gn(Ce,mn):gn(R,bn));const wn=E&&(he==="stream"||he==="response");if(E&&(yt||wn&&ve)){const ge={};["status","statusText","headers"].forEach(vn=>{ge[vn]=me[vn]});const ke=w.toFiniteNumber(me.headers.get("content-length")),[wt,Ze]=yt&&Kt(ke,He(Qt(yt),!0))||[];me=new a(nn(me.body,on,wt,()=>{Ze&&Ze(),ve&&ve()}),ge)}he=he||"text";let fi=await M[w.findKey(M,he)||"text"](me,O);return!wn&&ve&&ve(),await new Promise((ge,ke)=>{Zt(ge,ke,{data:fi,headers:ne.from(me.headers),status:me.status,statusText:me.statusText,config:O,request:Ce})})}catch(ue){throw ve&&ve(),ue&&ue.name==="TypeError"&&/Load failed|fetch/i.test(ue.message)?Object.assign(new U("Network Error",U.ERR_NETWORK,O,Ce),{cause:ue.cause||ue}):U.from(ue,ue&&ue.code,O,Ce)}}},ri=new Map,un=t=>{let i=t?t.env:{};const{fetch:s,Request:a,Response:d}=i,m=[a,d,s];let h=m.length,k=h,N,S,E=ri;for(;k--;)N=m[k],S=E.get(N),S===void 0&&E.set(N,S=k?new Map:ii(i)),E=S;return S};un();const _t={http:Ao,xhr:Qo,fetch:{get:un}};w.forEach(_t,(t,i)=>{if(t){try{Object.defineProperty(t,"name",{value:i})}catch(s){}Object.defineProperty(t,"adapterName",{value:i})}});const ln=t=>"- ".concat(t),si=t=>w.isFunction(t)||t===null||t===!1;var cn={getAdapter:(t,i)=>{t=w.isArray(t)?t:[t];const{length:s}=t;let a,d;const m={};for(let h=0;h"adapter ".concat(N," ")+(S===!1?"is not supported by the environment":"is not available in the build"));let k=s?h.length>1?"since :\n"+h.map(ln).join("\n"):" "+ln(h[0]):"as no adapter specified";throw new U("There is no suitable adapter to dispatch the request "+k,"ERR_NOT_SUPPORT")}return d},adapters:_t};function ht(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new xe(null,t)}function dn(t){return ht(t),t.headers=ne.from(t.headers),t.data=pt.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),cn.getAdapter(t.adapter||dt.adapter,t)(t).then(function(i){return ht(t),i.data=pt.call(t,t.transformResponse,i),i.headers=ne.from(i.headers),i},function(i){return Xt(i)||(ht(t),i&&i.response&&(i.response.data=pt.call(t,t.transformResponse,i.response),i.response.headers=ne.from(i.response.headers))),Promise.reject(i)})}const fn="1.12.2",$e={};["object","boolean","number","function","string","symbol"].forEach((t,i)=>{$e[t]=function(s){return typeof s===t||"a"+(i<1?"n ":" ")+t}});const pn={};$e.transitional=function(t,i,s){function a(d,m){return"[Axios v"+fn+"] Transitional option '"+d+"'"+m+(s?". "+s:"")}return(d,m,h)=>{if(t===!1)throw new U(a(m," has been removed"+(i?" in "+i:"")),U.ERR_DEPRECATED);return i&&!pn[m]&&(pn[m]=!0,console.warn(a(m," has been deprecated since v"+i+" and will be removed in the near future"))),t?t(d,m,h):!0}},$e.spelling=function(t){return(i,s)=>(console.warn("".concat(s," is likely a misspelling of ").concat(t)),!0)};function ai(t,i,s){if(typeof t!="object")throw new U("options must be an object",U.ERR_BAD_OPTION_VALUE);const a=Object.keys(t);let d=a.length;for(;d-- >0;){const m=a[d],h=i[m];if(h){const k=t[m],N=k===void 0||h(k,m,t);if(N!==!0)throw new U("option "+m+" must be "+N,U.ERR_BAD_OPTION_VALUE);continue}if(s!==!0)throw new U("Unknown option "+m,U.ERR_BAD_OPTION)}}var Ge={assertOptions:ai,validators:$e};const se=Ge.validators;class ze{constructor(i){this.defaults=i||{},this.interceptors={request:new Gt,response:new Gt}}async request(i,s){try{return await this._request(i,s)}catch(a){if(a instanceof Error){let d={};Error.captureStackTrace?Error.captureStackTrace(d):d=new Error;const m=d.stack?d.stack.replace(/^.+\n/,""):"";try{a.stack?m&&!String(a.stack).endsWith(m.replace(/^.+\n.+\n/,""))&&(a.stack+="\n"+m):a.stack=m}catch(h){}}throw a}}_request(i,s){typeof i=="string"?(s=s||{},s.url=i):s=i||{},s=we(this.defaults,s);const{transitional:a,paramsSerializer:d,headers:m}=s;a!==void 0&&Ge.assertOptions(a,{silentJSONParsing:se.transitional(se.boolean),forcedJSONParsing:se.transitional(se.boolean),clarifyTimeoutError:se.transitional(se.boolean)},!1),d!=null&&(w.isFunction(d)?s.paramsSerializer={serialize:d}:Ge.assertOptions(d,{encode:se.function,serialize:se.function},!0)),s.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?s.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:s.allowAbsoluteUrls=!0),Ge.assertOptions(s,{baseUrl:se.spelling("baseURL"),withXsrfToken:se.spelling("withXSRFToken")},!0),s.method=(s.method||this.defaults.method||"get").toLowerCase();let h=m&&w.merge(m.common,m[s.method]);m&&w.forEach(["delete","get","head","post","put","patch","common"],O=>{delete m[O]}),s.headers=ne.concat(h,m);const k=[];let N=!0;this.interceptors.request.forEach(function(O){typeof O.runWhen=="function"&&O.runWhen(s)===!1||(N=N&&O.synchronous,k.unshift(O.fulfilled,O.rejected))});const S=[];this.interceptors.response.forEach(function(O){S.push(O.fulfilled,O.rejected)});let E,M=0,q;if(!N){const O=[dn.bind(this),void 0];for(O.unshift(...k),O.push(...S),q=O.length,E=Promise.resolve(s);M{if(!a._listeners)return;let m=a._listeners.length;for(;m-- >0;)a._listeners[m](d);a._listeners=null}),this.promise.then=d=>{let m;const h=new Promise(k=>{a.subscribe(k),m=k}).then(d);return h.cancel=function(){a.unsubscribe(m)},h},i(function(d,m,h){a.reason||(a.reason=new xe(d,m,h),s(a.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(i){if(this.reason){i(this.reason);return}this._listeners?this._listeners.push(i):this._listeners=[i]}unsubscribe(i){if(!this._listeners)return;const s=this._listeners.indexOf(i);s!==-1&&this._listeners.splice(s,1)}toAbortSignal(){const i=new AbortController,s=a=>{i.abort(a)};return this.subscribe(s),i.signal.unsubscribe=()=>this.unsubscribe(s),i.signal}static source(){let i;return{token:new mt(function(s){i=s}),cancel:i}}}var ui=mt;function li(t){return function(i){return t.apply(null,i)}}function ci(t){return w.isObject(t)&&t.isAxiosError===!0}const gt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(gt).forEach(([t,i])=>{gt[i]=t});var di=gt;function _n(t){const i=new We(t),s=c(We.prototype.request,i);return w.extend(s,We.prototype,i,{allOwnKeys:!0}),w.extend(s,i,null,{allOwnKeys:!0}),s.create=function(a){return _n(we(t,a))},s}const z=_n(dt);return z.Axios=We,z.CanceledError=xe,z.CancelToken=ui,z.isCancel=Xt,z.VERSION=fn,z.toFormData=Le,z.AxiosError=U,z.Cancel=z.CanceledError,z.all=function(t){return Promise.all(t)},z.spread=li,z.isAxiosError=ci,z.mergeConfig=we,z.AxiosHeaders=ne,z.formToJSON=t=>Wt(w.isHTMLForm(t)?new FormData(t):t),z.getAdapter=cn.getAdapter,z.HttpStatusCode=di,z.default=z,It=z,It}var Hn={},Vn;function vr(){return Vn||(Vn=1,function(c){Object.defineProperty(c,Symbol.toStringTag,{value:"Module"});const g=(n,r)=>A(n,"",r),o=n=>"/remote.php/"+n,l=(n,r)=>{var u;return((u=r==null?void 0:r.baseURL)!=null?u:T())+o(n)},f=(n,r,u)=>{var _;const y=Object.assign({ocsVersion:2},u||{}).ocsVersion===1?1:2;return((_=u==null?void 0:u.baseURL)!=null?_:T())+"/ocs/v"+y+".php"+b(n,r,u)},b=(n,r,u)=>{const _=Object.assign({escape:!0},u||{}),y=function(p,x){return x=x||{},p.replace(/{([^{}]*)}/g,function(C,F){const H=x[F];return _.escape?encodeURIComponent(typeof H=="string"||typeof H=="number"?H.toString():C):typeof H=="string"||typeof H=="number"?H.toString():C})};return n.charAt(0)!=="/"&&(n="/"+n),y(n,r||{})},v=(n,r,u)=>{var _,y,p;const x=Object.assign({noRewrite:!1},u||{}),C=(_=u==null?void 0:u.baseURL)!=null?_:B();return((p=(y=window==null?void 0:window.OC)==null?void 0:y.config)==null?void 0:p.modRewriteWorking)===!0&&!x.noRewrite?C+b(n,r,u):C+"/index.php"+b(n,r,u)},I=(n,r)=>r.includes(".")?A(n,"img",r):A(n,"img","".concat(r,".svg")),A=(n,r,u)=>{var _,y,p;const x=(p=(y=(_=window==null?void 0:window.OC)==null?void 0:_.coreApps)==null?void 0:y.includes(n))!=null?p:!1,C=u.slice(-3)==="php";let F=B();return C&&!x?(F+="/index.php/apps/".concat(n),r&&(F+="/".concat(encodeURI(r))),u!=="index.php"&&(F+="/".concat(u))):!C&&!x?(F=e(n),r&&(F+="/".concat(r,"/")),F.at(-1)!=="/"&&(F+="/"),F+=u):((n==="settings"||n==="core"||n==="search")&&r==="ajax"&&(F+="/index.php"),n&&(F+="/".concat(n)),r&&(F+="/".concat(r)),F+="/".concat(u)),F},T=()=>window.location.protocol+"//"+window.location.host+B();function B(){let n=window._oc_webroot;if(typeof n>"u"){n=location.pathname;const r=n.indexOf("/index.php/");if(r!==-1)n=n.slice(0,r);else{const u=n.indexOf("/",1);n=n.slice(0,u>0?u:void 0)}}return n}function e(n){var r,u;return(u=((r=window._oc_appswebroots)!=null?r:{})[n])!=null?u:""}c.generateFilePath=A,c.generateOcsUrl=f,c.generateRemoteUrl=l,c.generateUrl=v,c.getAppRootUrl=e,c.getBaseUrl=T,c.getRootUrl=B,c.imagePath=I,c.linkTo=g}(Hn)),Hn}var $n;function Ar(){return $n||($n=1,function(c){var n;Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const g=br(),o=wr(),l=vr(),f=(r=>r&&r.__esModule?r:{default:r})(o),b=f.default.create({headers:{requesttoken:(n=g.getRequestToken())!=null?n:"","X-Requested-With":"XMLHttpRequest"}});g.onRequestTokenUpdate(r=>{b.defaults.headers.requesttoken=r});const v=Object.assign(b,{CancelToken:f.default.CancelToken,isCancel:f.default.isCancel}),I=Symbol("csrf-retry");function A(r){return async u=>{var C;if(!o.isAxiosError(u))throw u;const{config:_,response:y,request:p}=u,x=p==null?void 0:p.responseURL;if(_&&!_[I]&&(y==null?void 0:y.status)===412&&((C=y==null?void 0:y.data)==null?void 0:C.message)==="CSRF check failed"){console.warn("Request to ".concat(x," failed because of a CSRF mismatch. Fetching a new token"));const{data:{token:F}}=await r.get(l.generateUrl("/csrftoken"));return console.debug("New request token ".concat(F," fetched")),r.defaults.headers.requesttoken=F,r(Pe(oe({},_),{headers:Pe(oe({},_.headers),{requesttoken:F}),[I]:!0}))}throw u}}const T=Symbol("retryDelay");function B(r){return async u=>{if(!o.isAxiosError(u))throw u;const{config:_,response:y,request:p}=u,x=p==null?void 0:p.responseURL,C=y==null?void 0:y.status,F=y==null?void 0:y.headers;let H=typeof(_==null?void 0:_[T])=="number"?_==null?void 0:_[T]:1;if(C===503&&(F==null?void 0:F["x-nextcloud-maintenance-mode"])==="1"&&(_!=null&&_.retryIfMaintenanceMode)){if(H*=2,H>32)throw console.error("Retry delay exceeded one minute, giving up.",{responseURL:x}),u;return console.warn("Request to ".concat(x," failed because of maintenance mode. Retrying in ").concat(H,"s")),await new Promise(re=>{setTimeout(re,H*1e3)}),r(Pe(oe({},_),{[T]:H}))}throw u}}async function e(r){var u;if(o.isAxiosError(r)){const{config:_,response:y,request:p}=r,x=p==null?void 0:p.responseURL;(y==null?void 0:y.status)===401&&((u=y==null?void 0:y.data)==null?void 0:u.message)==="Current user is not logged in"&&(_!=null&&_.reloadExpiredSession)&&(window!=null&&window.location)&&(console.error("Request to ".concat(x," failed because the user session expired. Reloading the page …")),window.location.reload())}throw r}v.interceptors.response.use(r=>r,A(v)),v.interceptors.response.use(r=>r,B(v)),v.interceptors.response.use(r=>r,e),Object.defineProperty(c,"isAxiosError",{enumerable:!0,get:()=>o.isAxiosError}),Object.defineProperty(c,"isCancel",{enumerable:!0,get:()=>o.isCancel}),c.default=v}(jn)),jn}var Gn;function Tr(){if(Gn)return ce;Gn=1;var c=ce&&ce.__importDefault||function(A){return A&&A.__esModule?A:{default:A}};Object.defineProperty(ce,"__esModule",{value:!0}),ce.listen=ce.getSupportedTypes=void 0;const g=gr(),o=c(Ar()),l=Kn();function f(){const A=(0,g.getCapabilities)();return A.notify_push?A.notify_push.type:[]}ce.getSupportedTypes=f;function b(A,T,B={}){return v(B),window._notify_push_listeners[A]||(window._notify_push_listeners[A]=[]),window._notify_push_listeners[A].push(T),window._notify_push_ws!==null&&typeof window._notify_push_ws=="object"?window._notify_push_ws.send("listen "+A):I(B),window._notify_push_available}ce.listen=b;function v(A={}){typeof window._notify_push_listeners>"u"&&(window._notify_push_listeners={},window._notify_push_ws=null,window._notify_push_online=!0,window._notify_push_available=!1,window._notify_push_error_count=0,(0,l.subscribe)("networkOffline",()=>{window._notify_push_online=!1,window._notify_push_ws=null}),(0,l.subscribe)("networkOnline",()=>{window._notify_push_error_count=0,window._notify_push_online=!0,I(A)}))}async function I(A={}){if(window._notify_push_ws)return!0;window._notify_push_ws=!0;const T=(0,g.getCapabilities)();if(!T.notify_push)return window._notify_push_available=!1,window._notify_push_ws=null,!1;window._notify_push_available=!0;let B;return A.credentials||(B=(await o.default.post(T.notify_push.endpoints.pre_auth)).data),window._notify_push_ws=new WebSocket(T.notify_push.endpoints.websocket),window._notify_push_ws.onopen=()=>{if(typeof window._notify_push_ws=="object"&&window._notify_push_ws){B?(window._notify_push_ws.send(""),window._notify_push_ws.send(B)):A.credentials&&(window._notify_push_ws.send(A.credentials.username),window._notify_push_ws.send(A.credentials.password));for(let e in window._notify_push_listeners)window._notify_push_ws.send("listen "+e)}},window._notify_push_ws.onmessage=e=>{if(e.data==="authenticated")window._notify_push_error_count=0;else{const n=e.data.indexOf(" ");let[r,u]=n>0?[e.data.slice(0,n),e.data.slice(n+1)]:[e.data,null];if(u&&(u=JSON.parse(u)),window._notify_push_listeners[r])for(let _ of window._notify_push_listeners[r])_(r,u)}},window._notify_push_ws.onerror=window._notify_push_ws.onclose=()=>{window._notify_push_ws=null,window._notify_push_error_count+=1,setTimeout(()=>{window._notify_push_online&&I(A)},1e3*window._notify_push_error_count)},!0}return ce}var xr=Tr();const kr={name:"BellOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Sr=["aria-hidden","aria-label"],Ir=["fill","width","height"],Or={d:"M10 21H14C14 22.1 13.1 23 12 23S10 22.1 10 21M21 19V20H3V19L5 17V11C5 7.9 7 5.2 10 4.3V4C10 2.9 10.9 2 12 2S14 2.9 14 4V4.3C17 5.2 19 7.9 19 11V17L21 19M17 11C17 8.2 14.8 6 12 6S7 8.2 7 11V18H17V11Z"},Er={key:0};function Nr(c,g,o,l,f,b){return P(),j("span",Fe(c.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon bell-outline-icon",role:"img",onClick:g[0]||(g[0]=v=>c.$emit("click",v))}),[(P(),j("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[X("path",Or,[o.title?(P(),j("title",Er,$(o.title),1)):G("",!0)])],8,Ir))],16,Sr)}const Rr=fe(kr,[["render",Nr]]),Cr={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Pr=["aria-hidden","aria-label"],Br=["fill","width","height"],Fr={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},jr={key:0};function Mr(c,g,o,l,f,b){return P(),j("span",Fe(c.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon close-icon",role:"img",onClick:g[0]||(g[0]=v=>c.$emit("click",v))}),[(P(),j("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[X("path",Fr,[o.title?(P(),j("title",jr,$(o.title),1)):G("",!0)])],8,Br))],16,Pr)}const Qn=fe(Cr,[["render",Mr]]),Ur={name:"MessageOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Lr=["aria-hidden","aria-label"],Dr=["fill","width","height"],qr={d:"M20 2H4C2.9 2 2 2.9 2 4V22L6 18H20C21.1 18 22 17.1 22 16V4C22 2.9 21.1 2 20 2M20 16H5.2L4 17.2V4H20V16Z"},Hr={key:0};function Vr(c,g,o,l,f,b){return P(),j("span",Fe(c.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon message-outline-icon",role:"img",onClick:g[0]||(g[0]=v=>c.$emit("click",v))}),[(P(),j("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[X("path",qr,[o.title?(P(),j("title",Hr,$(o.title),1)):G("",!0)])],8,Dr))],16,Lr)}const Yn=fe(Ur,[["render",Vr]]),$r={name:"BellIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Gr=["aria-hidden","aria-label"],zr=["fill","width","height"],Wr={d:"M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21"},Jr={key:0};function Xr(c,g,o,l,f,b){return P(),j("span",Fe(c.$attrs,{"aria-hidden":o.title?null:"true","aria-label":o.title,class:"material-design-icon bell-icon",role:"img",onClick:g[0]||(g[0]=v=>c.$emit("click",v))}),[(P(),j("svg",{fill:o.fillColor,class:"material-design-icon__svg",width:o.size,height:o.size,viewBox:"0 0 24 24"},[X("path",Wr,[o.title?(P(),j("title",Jr,$(o.title),1)):G("",!0)])],8,zr))],16,Gr)}const Zr=fe($r,[["render",Xr]]),Kr={key:0,class:"notifications-button__icon"},Qr=["width","height"],Yr={__name:"IconNotification",props:{showDot:{type:Boolean,default:!1},showWarning:{type:Boolean,default:!1},size:{type:Number,default:20}},setup(c){var v;const g=(v=Bi())==null?void 0:v.theming,o=/^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/;function l(I){const A=parseInt(I.substring(1,3),16)/255,T=parseInt(I.substring(3,5),16)/255,B=parseInt(I.substring(5,7),16)/255,e=Math.max(A,T,B),n=Math.min(A,T,B);let r=0,u=0;const _=(e+n)/2;if(e!==n){const y=e-n;switch(u=_>.5?y/(2-e-n):y/(e+n),e){case A:r=(T-B)/y+(T{if(!(g!=null&&g.color)||!o.test(g==null?void 0:g.color))return!1;const[I,A,T]=l(g.color);return(I>=330||I<=15)&&A>.4&&(T>.1||T<.6)}),b=te(()=>{if(!(g!=null&&g.color)||!o.test(g==null?void 0:g.color))return!1;const[I,A,T]=l(g.color);return(I>=305||I<=64)&&A>.7&&(T>.1||T<.6)});return(I,A)=>c.showDot||c.showWarning?(P(),j("span",Kr,[(P(),j("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1",width:c.size,height:c.size,viewBox:"0 0 24 24",fill:"currentColor"},[A[0]||(A[0]=X("path",{d:"M 19,11.79 C 18.5,11.92 18,12 17.5,12 14.47,12 12,9.53 12,6.5 12,5.03 12.58,3.7 13.5,2.71 13.15,2.28 12.61,2 12,2 10.9,2 10,2.9 10,4 V 4.29 C 7.03,5.17 5,7.9 5,11 v 6 l -2,2 v 1 H 21 V 19 L 19,17 V 11.79 M 12,23 c 1.11,0 2,-0.89 2,-2 h -4 c 0,1.11 0.9,2 2,2 z"},null,-1)),X("path",{class:Ct(["notification__dot",{"notification__dot--warning":c.showWarning&&!b.value,"notification__dot--white":f.value||c.showWarning&&b.value}]),d:"M 21,6.5 C 21,8.43 19.43,10 17.5,10 15.57,10 14,8.43 14,6.5 14,4.57 15.57,3 17.5,3 19.43,3 21,4.57 21,6.5"},null,2)],8,Qr))])):(P(),Z(Zr,{key:1,class:"notifications-button__icon",size:c.size},null,8,["size"]))}},es={__name:"ActionButton",props:{action:{type:Object,required:!0}},emits:["click"],setup(c,{emit:g}){const o=c,l=g,f=te(()=>o.action.type==="WEB");function b(v){const I={url:o.action.link,type:o.action.type||"GET"};l("click",{event:v,action:I})}return(v,I)=>(P(),Z(ye(tt),{variant:f.value||c.action.primary?"primary":"secondary",href:f.value?c.action.link:void 0,class:"action-button pull-right",onClick:b},{default:J(()=>[Be($(c.action.label),1)]),_:1},8,["variant","href"]))}},ts={name:"DefaultParameter",props:{type:{type:String,required:!0},id:{type:[Number,String],required:!0},name:{type:String,required:!0},link:{type:String,default:""}},computed:{hasInternalLink(){return this.link&&(this.type==="deck-board"||this.type==="deck-card")}}},ns=["href"],os=["href"],is={key:2};function rs(c,g,o,l,f,b){return b.hasInternalLink?(P(),j("a",{key:0,href:o.link},[X("strong",null,$(o.name),1)],8,ns)):o.link?(P(),j("a",{key:1,href:o.link,class:"external",target:"_blank",rel:"noopener noreferrer"},[X("strong",null,$(o.name),1)],8,os)):(P(),j("strong",is,$(o.name),1))}const ss=fe(ts,[["render",rs],["__scopeId","data-v-9803ab31"]]),as={name:"FileParameter",props:{type:{type:String,required:!0},id:{type:[Number,String],required:!0},name:{type:String,required:!0},path:{type:String,default:""},link:{type:String,default:""}},computed:{title(){const c=this.path.lastIndexOf("/"),g=this.path.indexOf("/"),o=this.path.substring(g===0?1:0,c);return o.length===0?"":le("notifications","in {path}",{path:o})}}},us=["title","href"];function ls(c,g,o,l,f,b){return P(),j("a",{title:b.title,class:"filename",href:o.link},$(o.name),9,us)}const cs=fe(as,[["render",ls]]),ds={name:"UserParameter",components:{NcUserBubble:hr},props:{type:{type:String,required:!0},id:{type:String,required:!0},name:{type:String,required:!0},server:{type:String,default:""}},computed:{cloudId(){return this.server?this.id+"@"+this.server:""}}},fs={class:"mention"},ps=["title"];function _s(c,g,o,l,f,b){const v=ee("NcUserBubble");return P(),j("div",fs,[b.cloudId?(P(),j("strong",{key:1,title:b.cloudId},$(o.name),9,ps)):(P(),Z(v,{key:0,"display-name":o.name,user:o.id},null,8,["display-name","user"]))])}const hs=fe(ds,[["render",_s],["__scopeId","data-v-85edf4b2"]]),ms={name:"NotificationItem",components:{ActionButton:es,NcButton:tt,NcDateTime:nr,IconClose:Qn,IconMessageOutline:Yn,NcRichText:Fi},props:{notification:{type:Object,required:!0}},emits:["remove"],data(){return{showFullMessage:!1}},computed:{timestamp(){return this.notification.datetime==="warning"?0:new Date(this.notification.datetime).valueOf()},useLink(){if(!this.notification.link)return!1;let c=!1;return Object.keys(Object(this.notification.subjectRichParameters)).forEach(g=>{Object(this.notification.subjectRichParameters)[g].link&&(c=!0)}),!c},preparedSubjectParameters(){return this.prepareParameters(this.notification.subjectRichParameters)},preparedMessageParameters(){return this.prepareParameters(this.notification.messageRichParameters)},isCollapsedMessage(){return this.notification.message.length>200&&!this.showFullMessage}},methods:{t:le,prepareParameters(c={}){const g={};return Object.keys(c).forEach(o=>{const l=c[o].type;l==="user"?g[o]={component:hs,props:c[o]}:l==="file"?g[o]={component:cs,props:c[o]}:g[o]={component:ss,props:c[o]}}),g},onClickMessage(c){c.target.closest(".rich-text--wrapper")?this.showFullMessage=!this.showFullMessage:!this.notification.messageRich&&this.notification.message&&(this.showFullMessage=!this.showFullMessage)},async onClickAction({event:c,action:g}){try{const o={cancelAction:!1,notification:this.notification,action:g};if(await Qe("notifications:action:execute",o),g.type==="WEB"){o.cancelAction&&c.preventDefault();return}if(o.cancelAction)return;await Ke({method:g.type,url:g.url}),this.$emit("remove"),Qe("notifications:action:executed",c)}catch(o){console.error("Failed to perform action",o),Et(le("notifications","Failed to perform action"))}},onDismissNotification(){Ke.delete(Rt("apps/notifications/api/v2/notifications/{id}",{id:this.notification.notificationId})).then(()=>{this.$emit("remove")}).catch(()=>{Et(le("notifications","Failed to dismiss notification"))})}}},gs=["data-id","data-timestamp","data-object-type","data-app"],ys={class:"notification-heading"},bs=["href"],ws={key:0,class:"image"},vs=["src"],As={class:"subject"},Ts=["href"],xs={key:0,class:"image"},ks=["src"],Ss={key:2,class:"subject"},Is={key:2,class:"notification-subject"},Os={key:0,class:"image"},Es=["src"],Ns={key:2,class:"subject"},Rs={key:1},Cs={key:0,class:"notification-overflow"},Ps={key:4,class:"notification-actions"},Bs={key:5,class:"notification-actions"};function Fs(c,g,o,l,f,b){const v=ee("NcDateTime"),I=ee("IconClose"),A=ee("NcButton"),T=ee("NcRichText"),B=ee("ActionButton"),e=ee("IconMessageOutline");return P(),j("li",{class:"notification","data-id":o.notification.notificationId,"data-timestamp":b.timestamp,"data-object-type":o.notification.objectType,"data-app":o.notification.app},[X("div",ys,[b.timestamp?(P(),Z(v,{key:0,class:"notification-time","ignore-seconds":"",format:{timeStyle:"short",dateStyle:"long"},timestamp:b.timestamp},null,8,["timestamp"])):G("",!0),b.timestamp?(P(),Z(A,{key:1,class:"notification-dismiss-button",variant:"tertiary","aria-label":b.t("notifications","Dismiss"),onClick:b.onDismissNotification},{icon:J(()=>[ie(I,{size:20})]),_:1},8,["aria-label","onClick"])):G("",!0)]),o.notification.externalLink?(P(),j("a",{key:0,href:o.notification.externalLink,class:"notification-subject full-subject-link external",target:"_blank",rel:"noreferrer noopener"},[o.notification.icon?(P(),j("span",ws,[X("img",{src:o.notification.icon,class:"notification-icon",alt:""},null,8,vs)])):G("",!0),X("span",As,$(o.notification.subject)+" ↗",1)],8,bs)):b.useLink?(P(),j("a",{key:1,href:o.notification.link,class:"notification-subject full-subject-link"},[o.notification.icon?(P(),j("span",xs,[X("img",{src:o.notification.icon,class:"notification-icon",alt:""},null,8,ks)])):G("",!0),o.notification.subjectRich?(P(),Z(T,{key:1,text:o.notification.subjectRich,arguments:b.preparedSubjectParameters},null,8,["text","arguments"])):(P(),j("span",Ss,$(o.notification.subject),1))],8,Ts)):(P(),j("div",Is,[o.notification.icon?(P(),j("span",Os,[X("img",{src:o.notification.icon,class:"notification-icon",alt:""},null,8,Es)])):G("",!0),o.notification.subjectRich?(P(),Z(T,{key:1,text:o.notification.subjectRich,arguments:b.preparedSubjectParameters},null,8,["text","arguments"])):(P(),j("span",Ns,$(o.notification.subject),1))])),o.notification.message?(P(),j("div",{key:3,class:"notification-message",onClick:g[0]||(g[0]=(...n)=>b.onClickMessage&&b.onClickMessage(...n))},[X("div",{class:Ct(["message-container",{collapsed:b.isCollapsedMessage}])},[o.notification.messageRich?(P(),Z(T,{key:0,text:o.notification.messageRich,arguments:b.preparedMessageParameters,autolink:!0},null,8,["text","arguments"])):(P(),j("span",Rs,$(o.notification.message),1))],2),b.isCollapsedMessage?(P(),j("div",Cs)):G("",!0)])):G("",!0),o.notification.actions.length?(P(),j("div",Ps,[(P(!0),j(Xn,null,Zn(o.notification.actions,(n,r)=>(P(),Z(B,{key:r,action:n,onClick:b.onClickAction,onRemove:g[1]||(g[1]=u=>c.$emit("remove"))},null,8,["action","onClick"]))),128))])):o.notification.externalLink?(P(),j("div",Bs,[ie(A,{variant:"primary",href:"https://nextcloud.com/fairusepolicy",class:"action-button pull-right",target:"_blank",rel:"noreferrer noopener"},{icon:J(()=>[ie(e,{size:20})]),default:J(()=>[Be(" "+$(b.t("notifications","Contact Nextcloud GmbH"))+" ↗ ",1)]),_:1})])):G("",!0)],8,gs)}const js=fe(ms,[["render",Fs],["__scopeId","data-v-58882784"]]);async function Ms(c,g,o,l){const f=parseInt(Y.getItem("lastUpdated"),10),b=Y.getItem("tabId"),v=Math.floor(Date.now()/1e3);return(o||b===c&&f+25=0&&e<=1){if(n._volume=e,n._muted)return n;n.usingWebAudio&&n.masterGain.gain.setValueAtTime(e,o.ctx.currentTime);for(var r=0;r=0;n--)e._howls[n].unload();return e.usingWebAudio&&e.ctx&&typeof e.ctx.close<"u"&&(e.ctx.close(),e.ctx=null,B()),e},codecs:function(e){return(this||o)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||o;if(e.state=e.ctx&&e.ctx.state||"suspended",e._autoSuspend(),!e.usingWebAudio)if(typeof Audio<"u")try{var n=new Audio;typeof n.oncanplaythrough>"u"&&(e._canPlayEvent="canplay")}catch(r){e.noAudio=!0}else e.noAudio=!0;try{var n=new Audio;n.muted&&(e.noAudio=!0)}catch(r){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||o,n=null;try{n=typeof Audio<"u"?new Audio:null}catch(F){return e}if(!n||typeof n.canPlayType!="function")return e;var r=n.canPlayType("audio/mpeg;").replace(/^no$/,""),u=e._navigator?e._navigator.userAgent:"",_=u.match(/OPR\/(\d+)/g),y=_&&parseInt(_[0].split("/")[1],10)<33,p=u.indexOf("Safari")!==-1&&u.indexOf("Chrome")===-1,x=u.match(/Version\/(.*?) /),C=p&&x&&parseInt(x[1],10)<15;return e._codecs={mp3:!!(!y&&(r||n.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!r,opus:!!n.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(n.canPlayType('audio/wav; codecs="1"')||n.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!n.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!n.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(n.canPlayType("audio/x-m4a;")||n.canPlayType("audio/m4a;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(n.canPlayType("audio/x-m4b;")||n.canPlayType("audio/m4b;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(n.canPlayType("audio/x-mp4;")||n.canPlayType("audio/mp4;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!(!C&&n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),webm:!!(!C&&n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,"")),dolby:!!n.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(n.canPlayType("audio/x-flac;")||n.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||o;if(!(e._audioUnlocked||!e.ctx)){e._audioUnlocked=!1,e.autoUnlock=!1,!e._mobileUnloaded&&e.ctx.sampleRate!==44100&&(e._mobileUnloaded=!0,e.unload()),e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var n=function(r){for(;e._html5AudioPool.length"u"?C.noteOn(0):C.start(0),typeof e.ctx.resume=="function"&&e.ctx.resume(),C.onended=function(){C.disconnect(0),e._audioUnlocked=!0,document.removeEventListener("touchstart",n,!0),document.removeEventListener("touchend",n,!0),document.removeEventListener("click",n,!0),document.removeEventListener("keydown",n,!0);for(var F=0;F"u"||!o.usingWebAudio)){for(var n=0;n"u"||!o.usingWebAudio))return e.state==="running"&&e.ctx.state!=="interrupted"&&e._suspendTimer?(clearTimeout(e._suspendTimer),e._suspendTimer=null):e.state==="suspended"||e.state==="running"&&e.ctx.state==="interrupted"?(e.ctx.resume().then(function(){e.state="running";for(var n=0;n"u"&&(e="__default",!r._playLock)){for(var _=0,y=0;y0?p._seek:r._sprite[e][0]/1e3),F=Math.max(0,(r._sprite[e][0]+r._sprite[e][1])/1e3-C),H=F*1e3/Math.abs(p._rate),re=r._sprite[e][0]/1e3,Te=(r._sprite[e][0]+r._sprite[e][1])/1e3;p._sprite=e,p._ended=!1;var Ee=function(){p._paused=!1,p._seek=C,p._start=re,p._stop=Te,p._loop=!!(p._loop||r._sprite[e][2])};if(C>=Te){r._ended(p);return}var D=p._node;if(r._webAudio){var je=function(){r._playLock=!1,Ee(),r._refreshBuffer(p);var pe=p._muted||r._muted?0:p._volume;D.gain.setValueAtTime(pe,o.ctx.currentTime),p._playStart=o.ctx.currentTime,typeof D.bufferSource.start>"u"?p._loop?D.bufferSource.noteGrainOn(0,C,86400):D.bufferSource.noteGrainOn(0,C,F):p._loop?D.bufferSource.start(0,C,86400):D.bufferSource.start(0,C,F),H!==1/0&&(r._endTimers[p._id]=setTimeout(r._ended.bind(r,p),H)),n||setTimeout(function(){r._emit("play",p._id),r._loadQueue()},0)};o.state==="running"&&o.ctx.state!=="interrupted"?je():(r._playLock=!0,r.once("resume",je),r._clearTimer(p._id))}else{var Me=function(){D.currentTime=C,D.muted=p._muted||r._muted||o._muted||D.muted,D.volume=p._volume*o.volume(),D.playbackRate=p._rate;try{var pe=D.play();if(pe&&typeof Promise<"u"&&(pe instanceof Promise||typeof pe.then=="function")?(r._playLock=!0,Ee(),pe.then(function(){r._playLock=!1,D._unlocked=!0,n?r._loadQueue():r._emit("play",p._id)}).catch(function(){r._playLock=!1,r._emit("playerror",p._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction."),p._ended=!0,p._paused=!0})):n||(r._playLock=!1,Ee(),r._emit("play",p._id)),D.playbackRate=p._rate,D.paused){r._emit("playerror",p._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}e!=="__default"||p._loop?r._endTimers[p._id]=setTimeout(r._ended.bind(r,p),H):(r._endTimers[p._id]=function(){r._ended(p),D.removeEventListener("ended",r._endTimers[p._id],!1)},D.addEventListener("ended",r._endTimers[p._id],!1))}catch(it){r._emit("playerror",p._id,it)}};D.src==="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"&&(D.src=r._src,D.load());var ot=window&&window.ejecta||!D.readyState&&o._navigator.isCocoonJS;if(D.readyState>=3||ot)Me();else{r._playLock=!0,r._state="loading";var Ue=function(){r._state="loaded",Me(),D.removeEventListener(o._canPlayEvent,Ue,!1)};D.addEventListener(o._canPlayEvent,Ue,!1),r._clearTimer(p._id)}}return p._id},pause:function(e){var n=this;if(n._state!=="loaded"||n._playLock)return n._queue.push({event:"pause",action:function(){n.pause(e)}}),n;for(var r=n._getSoundIds(e),u=0;u"u"?_._node.bufferSource.noteOff(0):_._node.bufferSource.stop(0),n._cleanBuffer(_._node)}else(!isNaN(_._node.duration)||_._node.duration===1/0)&&_._node.pause();arguments[1]||n._emit("pause",_?_._id:null)}return n},stop:function(e,n){var r=this;if(r._state!=="loaded"||r._playLock)return r._queue.push({event:"stop",action:function(){r.stop(e)}}),r;for(var u=r._getSoundIds(e),_=0;_"u"?y._node.bufferSource.noteOff(0):y._node.bufferSource.stop(0),r._cleanBuffer(y._node)):(!isNaN(y._node.duration)||y._node.duration===1/0)&&(y._node.currentTime=y._start||0,y._node.pause(),y._node.duration===1/0&&r._clearSound(y._node))),n||r._emit("stop",y._id))}return r},mute:function(e,n){var r=this;if(r._state!=="loaded"||r._playLock)return r._queue.push({event:"mute",action:function(){r.mute(e,n)}}),r;if(typeof n>"u")if(typeof e=="boolean")r._muted=e;else return r._muted;for(var u=r._getSoundIds(n),_=0;_"u"){var _=e._getSoundIds(),y=_.indexOf(n[0]);y>=0?u=parseInt(n[0],10):r=parseFloat(n[0])}else n.length>=2&&(r=parseFloat(n[0]),u=parseInt(n[1],10));var p;if(typeof r<"u"&&r>=0&&r<=1){if(e._state!=="loaded"||e._playLock)return e._queue.push({event:"volume",action:function(){e.volume.apply(e,n)}}),e;typeof u>"u"&&(e._volume=r),u=e._getSoundIds(u);for(var x=0;x"u")}}return _},_startFadeInterval:function(e,n,r,u,_,y){var p=this,x=n,C=r-n,F=Math.abs(C/.01),H=Math.max(4,F>0?u/F:u),re=Date.now();e._fadeTo=r,e._interval=setInterval(function(){var Te=(Date.now()-re)/u;re=Date.now(),x+=C*Te,x=Math.round(x*100)/100,C<0?x=Math.max(r,x):x=Math.min(r,x),p._webAudio?e._volume=x:p.volume(x,e._id,!0),y&&(p._volume=x),(rn&&x>=r)&&(clearInterval(e._interval),e._interval=null,e._fadeTo=null,p.volume(r,e._id),p._emit("fade",e._id))},H)},_stopFade:function(e){var n=this,r=n._soundById(e);return r&&r._interval&&(n._webAudio&&r._node.gain.cancelScheduledValues(o.ctx.currentTime),clearInterval(r._interval),r._interval=null,n.volume(r._fadeTo,e),r._fadeTo=null,n._emit("fade",e)),n},loop:function(){var e=this,n=arguments,r,u,_;if(n.length===0)return e._loop;if(n.length===1)if(typeof n[0]=="boolean")r=n[0],e._loop=r;else return _=e._soundById(parseInt(n[0],10)),_?_._loop:!1;else n.length===2&&(r=n[0],u=parseInt(n[1],10));for(var y=e._getSoundIds(u),p=0;p=0?u=parseInt(n[0],10):r=parseFloat(n[0])}else n.length===2&&(r=parseFloat(n[0]),u=parseInt(n[1],10));var p;if(typeof r=="number"){if(e._state!=="loaded"||e._playLock)return e._queue.push({event:"rate",action:function(){e.rate.apply(e,n)}}),e;typeof u>"u"&&(e._rate=r),u=e._getSoundIds(u);for(var x=0;x=0?u=parseInt(n[0],10):e._sounds.length&&(u=e._sounds[0]._id,r=parseFloat(n[0]))}else n.length===2&&(r=parseFloat(n[0]),u=parseInt(n[1],10));if(typeof u>"u")return 0;if(typeof r=="number"&&(e._state!=="loaded"||e._playLock))return e._queue.push({event:"seek",action:function(){e.seek.apply(e,n)}}),e;var p=e._soundById(u);if(p)if(typeof r=="number"&&r>=0){var x=e.playing(u);x&&e.pause(u,!0),p._seek=r,p._ended=!1,e._clearTimer(u),!e._webAudio&&p._node&&!isNaN(p._node.duration)&&(p._node.currentTime=r);var C=function(){x&&e.play(u,!0),e._emit("seek",u)};if(x&&!e._webAudio){var F=function(){e._playLock?setTimeout(F,0):C()};setTimeout(F,0)}else C()}else if(e._webAudio){var H=e.playing(u)?o.ctx.currentTime-p._playStart:0,re=p._rateSeek?p._rateSeek-p._seek:0;return p._seek+(re+H*Math.abs(p._rate))}else return p._node.currentTime;return e},playing:function(e){var n=this;if(typeof e=="number"){var r=n._soundById(e);return r?!r._paused:!1}for(var u=0;u=0&&o._howls.splice(u,1);var _=!0;for(r=0;r=0){_=!1;break}return b&&_&&delete b[e._src],o.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,n,r,u){var _=this,y=_["_on"+e];return typeof n=="function"&&y.push(u?{id:r,fn:n,once:u}:{id:r,fn:n}),_},off:function(e,n,r){var u=this,_=u["_on"+e],y=0;if(typeof n=="number"&&(r=n,n=null),n||r)for(y=0;y<_.length;y++){var p=r===_[y].id;if(n===_[y].fn&&p||!n&&p){_.splice(y,1);break}}else if(e)u["_on"+e]=[];else{var x=Object.keys(u);for(y=0;y=0;y--)(!_[y].id||_[y].id===n||e==="load")&&(setTimeout(function(p){p.call(this,n,r)}.bind(u,_[y].fn),0),_[y].once&&u.off(e,_[y].fn,_[y].id));return u._loadQueue(e),u},_loadQueue:function(e){var n=this;if(n._queue.length>0){var r=n._queue[0];r.event===e&&(n._queue.shift(),n._loadQueue()),e||r.action()}return n},_ended:function(e){var n=this,r=e._sprite;if(!n._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;u--){if(r<=n)return;e._sounds[u]._ended&&(e._webAudio&&e._sounds[u]._node&&e._sounds[u]._node.disconnect(0),e._sounds.splice(u,1),r--)}}},_getSoundIds:function(e){var n=this;if(typeof e>"u"){for(var r=[],u=0;u=0;if(!e.bufferSource)return n;if(o._scratchBuffer&&e.bufferSource&&(e.bufferSource.onended=null,e.bufferSource.disconnect(0),r))try{e.bufferSource.buffer=o._scratchBuffer}catch(u){}return e.bufferSource=null,n},_clearSound:function(e){var n=/MSIE |Trident\//.test(o._navigator&&o._navigator.userAgent);n||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var f=function(e){this._parent=e,this.init()};f.prototype={init:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++o._counter,n._sounds.push(e),e.create(),e},create:function(){var e=this,n=e._parent,r=o._muted||e._muted||e._parent._muted?0:e._volume;return n._webAudio?(e._node=typeof o.ctx.createGain>"u"?o.ctx.createGainNode():o.ctx.createGain(),e._node.gain.setValueAtTime(r,o.ctx.currentTime),e._node.paused=!0,e._node.connect(o.masterGain)):o.noAudio||(e._node=o._obtainHtml5Audio(),e._errorFn=e._errorListener.bind(e),e._node.addEventListener("error",e._errorFn,!1),e._loadFn=e._loadListener.bind(e),e._node.addEventListener(o._canPlayEvent,e._loadFn,!1),e._endFn=e._endListener.bind(e),e._node.addEventListener("ended",e._endFn,!1),e._node.src=n._src,e._node.preload=n._preload===!0?"auto":n._preload,e._node.volume=r*o.volume(),e._node.load()),e},reset:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++o._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0),e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,n=e._parent;n._duration=Math.ceil(e._node.duration*10)/10,Object.keys(n._sprite).length===0&&(n._sprite={__default:[0,n._duration*1e3]}),n._state!=="loaded"&&(n._state="loaded",n._emit("load"),n._loadQueue()),e._node.removeEventListener(o._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,n=e._parent;n._duration===1/0&&(n._duration=Math.ceil(e._node.duration*10)/10,n._sprite.__default[1]===1/0&&(n._sprite.__default[1]=n._duration*1e3),n._ended(e)),e._node.removeEventListener("ended",e._endFn,!1)}};var b={},v=function(e){var n=e._src;if(b[n]){e._duration=b[n].duration,T(e);return}if(/^data:[^;]+;base64,/.test(n)){for(var r=atob(n.split(",")[1]),u=new Uint8Array(r.length),_=0;_0?(b[n._src]=_,T(n,_)):r()};typeof Promise<"u"&&o.ctx.decodeAudioData.length===1?o.ctx.decodeAudioData(e).then(u).catch(r):o.ctx.decodeAudioData(e,u,r)},T=function(e,n){n&&!e._duration&&(e._duration=n.duration),Object.keys(e._sprite).length===0&&(e._sprite={__default:[0,e._duration*1e3]}),e._state!=="loaded"&&(e._state="loaded",e._emit("load"),e._loadQueue())},B=function(){if(o.usingWebAudio){try{typeof AudioContext<"u"?o.ctx=new AudioContext:typeof webkitAudioContext<"u"?o.ctx=new webkitAudioContext:o.usingWebAudio=!1}catch(_){o.usingWebAudio=!1}o.ctx||(o.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(o._navigator&&o._navigator.platform),n=o._navigator&&o._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),r=n?parseInt(n[1],10):null;if(e&&r&&r<9){var u=/safari/.test(o._navigator&&o._navigator.userAgent.toLowerCase());o._navigator&&!u&&(o.usingWebAudio=!1)}o.usingWebAudio&&(o.masterGain=typeof o.ctx.createGain>"u"?o.ctx.createGainNode():o.ctx.createGain(),o.masterGain.gain.setValueAtTime(o._muted?0:o._volume,o.ctx.currentTime),o.masterGain.connect(o.ctx.destination)),o._setup()}};c.Howler=o,c.Howl=l,typeof Oe<"u"?(Oe.HowlerGlobal=g,Oe.Howler=o,Oe.Howl=l,Oe.Sound=f):typeof window<"u"&&(window.HowlerGlobal=g,window.Howler=o,window.Howl=l,window.Sound=f)})(),function(){HowlerGlobal.prototype._pos=[0,0,0],HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0],HowlerGlobal.prototype.stereo=function(o){var l=this;if(!l.ctx||!l.ctx.listener)return l;for(var f=l._howls.length-1;f>=0;f--)l._howls[f].stereo(o);return l},HowlerGlobal.prototype.pos=function(o,l,f){var b=this;if(!b.ctx||!b.ctx.listener)return b;if(l=typeof l!="number"?b._pos[1]:l,f=typeof f!="number"?b._pos[2]:f,typeof o=="number")b._pos=[o,l,f],typeof b.ctx.listener.positionX<"u"?(b.ctx.listener.positionX.setTargetAtTime(b._pos[0],Howler.ctx.currentTime,.1),b.ctx.listener.positionY.setTargetAtTime(b._pos[1],Howler.ctx.currentTime,.1),b.ctx.listener.positionZ.setTargetAtTime(b._pos[2],Howler.ctx.currentTime,.1)):b.ctx.listener.setPosition(b._pos[0],b._pos[1],b._pos[2]);else return b._pos;return b},HowlerGlobal.prototype.orientation=function(o,l,f,b,v,I){var A=this;if(!A.ctx||!A.ctx.listener)return A;var T=A._orientation;if(l=typeof l!="number"?T[1]:l,f=typeof f!="number"?T[2]:f,b=typeof b!="number"?T[3]:b,v=typeof v!="number"?T[4]:v,I=typeof I!="number"?T[5]:I,typeof o=="number")A._orientation=[o,l,f,b,v,I],typeof A.ctx.listener.forwardX<"u"?(A.ctx.listener.forwardX.setTargetAtTime(o,Howler.ctx.currentTime,.1),A.ctx.listener.forwardY.setTargetAtTime(l,Howler.ctx.currentTime,.1),A.ctx.listener.forwardZ.setTargetAtTime(f,Howler.ctx.currentTime,.1),A.ctx.listener.upX.setTargetAtTime(b,Howler.ctx.currentTime,.1),A.ctx.listener.upY.setTargetAtTime(v,Howler.ctx.currentTime,.1),A.ctx.listener.upZ.setTargetAtTime(I,Howler.ctx.currentTime,.1)):A.ctx.listener.setOrientation(o,l,f,b,v,I);else return T;return A},Howl.prototype.init=function(o){return function(l){var f=this;return f._orientation=l.orientation||[1,0,0],f._stereo=l.stereo||null,f._pos=l.pos||null,f._pannerAttr={coneInnerAngle:typeof l.coneInnerAngle<"u"?l.coneInnerAngle:360,coneOuterAngle:typeof l.coneOuterAngle<"u"?l.coneOuterAngle:360,coneOuterGain:typeof l.coneOuterGain<"u"?l.coneOuterGain:0,distanceModel:typeof l.distanceModel<"u"?l.distanceModel:"inverse",maxDistance:typeof l.maxDistance<"u"?l.maxDistance:1e4,panningModel:typeof l.panningModel<"u"?l.panningModel:"HRTF",refDistance:typeof l.refDistance<"u"?l.refDistance:1,rolloffFactor:typeof l.rolloffFactor<"u"?l.rolloffFactor:1},f._onstereo=l.onstereo?[{fn:l.onstereo}]:[],f._onpos=l.onpos?[{fn:l.onpos}]:[],f._onorientation=l.onorientation?[{fn:l.onorientation}]:[],o.call(this,l)}}(Howl.prototype.init),Howl.prototype.stereo=function(o,l){var f=this;if(!f._webAudio)return f;if(f._state!=="loaded")return f._queue.push({event:"stereo",action:function(){f.stereo(o,l)}}),f;var b=typeof Howler.ctx.createStereoPanner>"u"?"spatial":"stereo";if(typeof l>"u")if(typeof o=="number")f._stereo=o,f._pos=[o,0,0];else return f._stereo;for(var v=f._getSoundIds(l),I=0;I"u")if(typeof o=="number")v._pos=[o,l,f];else return v._pos;for(var I=v._getSoundIds(b),A=0;A"u")if(typeof o=="number")v._orientation=[o,l,f];else return v._orientation;for(var I=v._getSoundIds(b),A=0;A"u"&&(f.pannerAttr||(f.pannerAttr={coneInnerAngle:f.coneInnerAngle,coneOuterAngle:f.coneOuterAngle,coneOuterGain:f.coneOuterGain,distanceModel:f.distanceModel,maxDistance:f.maxDistance,refDistance:f.refDistance,rolloffFactor:f.rolloffFactor,panningModel:f.panningModel}),o._pannerAttr={coneInnerAngle:typeof f.pannerAttr.coneInnerAngle<"u"?f.pannerAttr.coneInnerAngle:o._coneInnerAngle,coneOuterAngle:typeof f.pannerAttr.coneOuterAngle<"u"?f.pannerAttr.coneOuterAngle:o._coneOuterAngle,coneOuterGain:typeof f.pannerAttr.coneOuterGain<"u"?f.pannerAttr.coneOuterGain:o._coneOuterGain,distanceModel:typeof f.pannerAttr.distanceModel<"u"?f.pannerAttr.distanceModel:o._distanceModel,maxDistance:typeof f.pannerAttr.maxDistance<"u"?f.pannerAttr.maxDistance:o._maxDistance,refDistance:typeof f.pannerAttr.refDistance<"u"?f.pannerAttr.refDistance:o._refDistance,rolloffFactor:typeof f.pannerAttr.rolloffFactor<"u"?f.pannerAttr.rolloffFactor:o._rolloffFactor,panningModel:typeof f.pannerAttr.panningModel<"u"?f.pannerAttr.panningModel:o._panningModel});else return v=o._soundById(parseInt(l[0],10)),v?v._pannerAttr:o._pannerAttr;else l.length===2&&(f=l[0],b=parseInt(l[1],10));for(var I=o._getSoundIds(b),A=0;Aconsole.debug("Audio output successfully redirected to secondary speaker")).catch(n=>console.error("Failed to redirect audio output:",n)),e.play()}}}else Ye("notifications","sound_notification")&&new Ot.Howl({src:[Sn("notifications","img","notification.ogg")],volume:.5}).play()}const Vs=Ye("core","config",{session_keepalive:!0}).session_keepalive,$s=Ye("notifications","throttled_push_notifications"),Gs={notificationId:-1,app:"core",user:"",datetime:"warning",objectId:"",objectType:"",subject:le("notifications","Push notifications might be unreliable"),message:le("notifications","Nextcloud GmbH sponsors a free push notification gateway for private users. To ensure good service, the gateway limits the number of push notifications per server. For enterprise users, a more scalable gateway is available. Contact Nextcloud GmbH for more information."),link:"https://nextcloud.com/fairusepolicy",actions:[],externalLink:"https://nextcloud.com/fairusepolicy",icon:Li("core","actions/alert-outline.svg")},zs={name:"NotificationsApp",components:{IconBellOutline:Rr,IconClose:Qn,IconMessageOutline:Yn,IconNotification:Yr,NcButton:tt,NcEmptyContent:er,NcHeaderMenu:ur,NotificationItem:js},setup(){return{fairUsePolicyNotification:Gs,hasThrottledPushNotifications:$s}},data(){return{webNotificationsGranted:!1,backgroundFetching:!1,hasNotifyPush:!1,shutdown:!1,notifications:[],lastETag:null,lastTabId:null,userStatus:null,tabId:null,webNotificationsThresholdId:0,pollIntervalBase:3e4,pollIntervalCurrent:3e4,interval:null,pushEndpoints:null,open:!1}},computed:{showBrowserNotifications(){return this.backgroundFetching&&this.webNotificationsGranted&&this.userStatus!=="dnd"&&this.tabId===this.lastTabId},emptyContentMessage(){return this.webNotificationsGranted===null?le("notifications","Requesting browser permissions to show notifications"):this.hasThrottledPushNotifications?this.fairUsePolicyNotification.subject:le("notifications","No notifications")},emptyContentDescription(){return this.hasThrottledPushNotifications?this.fairUsePolicyNotification.message:""}},mounted(){this.tabId=Ui()||""+Math.random(),this._oldcount=0,this.checkWebNotificationPermissions(),this._fetch(),xr.listen("notify_notification",()=>{this._fetchAfterNotifyPush()})&&(console.debug("Has notify_push enabled, slowing polling to 15 minutes"),this.pollIntervalBase=15*60*1e3,this.hasNotifyPush=!0),this._setPollingInterval(this.pollIntervalBase),this._watchTabVisibility(),kt("networkOffline",this.handleNetworkOffline),kt("networkOnline",this.handleNetworkOnline),kt("user_status:status.updated",this.userStatusUpdated)},beforeUnmount(){xt("user_status:status.updated",this.userStatusUpdated),xt("networkOffline",this.handleNetworkOffline),xt("networkOnline",this.handleNetworkOnline)},methods:{t:le,userStatusUpdated(c){Mi().uid===c.userId&&(this.userStatus=c.status)},onOpen(){this.requestWebNotificationPermissions()},handleNetworkOffline(){console.debug("Network is offline, slowing down pollingInterval to "+this.pollIntervalBase*10),this._setPollingInterval(this.pollIntervalBase*10)},handleNetworkOnline(){this._fetch(),console.debug("Network is online, reseting pollingInterval to "+this.pollIntervalBase),this._setPollingInterval(this.pollIntervalBase)},setupBackgroundFetcher(){Vs?(console.debug("Started background fetcher as session_keepalive is enabled"),this.interval=window.setInterval(this._backgroundFetch.bind(this),this.pollIntervalCurrent)):console.debug("Did not start background fetcher as session_keepalive is off")},onDismissAll(){Ke.delete(Rt("apps/notifications/api/v2/notifications")).then(()=>{this.notifications=[]}).catch(()=>{Et(le("notifications","Failed to dismiss all notifications"))})},onRemove(c){this.notifications.splice(c,1)},_updateDocTitleOnNewNotifications(c){c.length>this._oldcount&&(this._oldcount=c.length,this.backgroundFetching&&document.hidden&&(document.title.startsWith("* ")||(document.title="* "+document.title)))},_restoreTitle(){document.title.startsWith("* ")&&(document.title=document.title.substring(2))},_fetchAfterNotifyPush(){this.backgroundFetching=!0,this.hasNotifyPush&&this.tabId!==this.lastTabId?(console.debug("Deferring notification refresh from browser storage are notify_push event to give the last tab the chance to do it"),setTimeout(()=>{this._fetch()},5e3)):(console.debug("Refreshing notifications are notify_push event"),this._fetch())},async _fetch(){this.notifications.length&&this.notifications[0].notificationId>this.webNotificationsThresholdId&&(this.webNotificationsThresholdId=this.notifications[0].notificationId);const c=await Ms(this.tabId,this.lastETag,!this.backgroundFetching,this.hasNotifyPush);c.status===204?(console.debug("Fetching notifications but no content, slowing down polling to "+this.pollIntervalBase*10),this._setPollingInterval(this.pollIntervalBase*10)):c.status===200?(this.userStatus=c.headers["x-nextcloud-user-status"],this.lastETag=c.headers.etag,this.lastTabId=c.tabId,this.notifications=c.data,this.processWebNotifications(c.data),console.debug("Got notification data, restoring default polling interval."),this._setPollingInterval(this.pollIntervalBase),this._updateDocTitleOnNewNotifications(this.notifications),!this.backgroundFetching&&this.notifications.length&&(this.webNotificationsThresholdId=this.notifications[0].notificationId)):c.status===304?this._setPollingInterval(this.pollIntervalBase):c.status===503?(console.info("Slowing down notifications: instance is in maintenance mode."),this._setPollingInterval(this.pollIntervalBase*10)):c.status===404?(console.info("Slowing down notifications: app is disabled."),this._setPollingInterval(this.pollIntervalBase*10)):(console.info("Slowing down notifications: Status "+c.status),this._setPollingInterval(this.pollIntervalBase*10))},_backgroundFetch(){this.backgroundFetching=!0,this._fetch()},_watchTabVisibility(){document.addEventListener("visibilitychange",this._visibilityChange,!1)},_visibilityChange(){document.hidden||this._restoreTitle()},_setPollingInterval(c){this.interval&&c===this.pollIntervalCurrent||(console.debug("Polling interval updated to "+c),this.interval&&(window.clearInterval(this.interval),this.interval=null),this.pollIntervalCurrent=c,this.setupBackgroundFetcher())},_shutDownNotifications(c){console.debug("Shutting down notifications "+(c?"temporary":"bye")),this.interval&&(window.clearInterval(this.interval),this.interval=null),this.shutdown=!c},checkWebNotificationPermissions(){if(!("Notification"in window)){console.info("Browser does not support notifications"),this.webNotificationsGranted=!1;return}if(window.Notification.permission==="granted"){console.debug("Notifications permissions granted"),this.webNotificationsGranted=!0;return}if(window.Notification.permission==="denied"){console.debug("Notifications permissions denied"),this.webNotificationsGranted=!1;return}if(window.location.protocol==="http:"){console.debug("Notifications require HTTPS"),this.webNotificationsGranted=!1;return}console.info("Notifications permissions not yet requested"),this.webNotificationsGranted=null},async requestWebNotificationPermissions(){this.webNotificationsGranted===null&&(console.info("Requesting notifications permissions"),window.Notification.requestPermission().then(c=>{this.webNotificationsGranted=c==="granted"}))},processWebNotifications(c){c.forEach(g=>{this.backgroundFetching&&Qe("notifications:notification:received",{notification:g}),this.showBrowserNotifications&&this.webNotificationsThresholdIdf.open=u),class:"notifications-button","exclude-click-outside-selectors":[".popover"],"aria-label":b.t("notifications","Notifications"),title:b.t("notifications","Notifications"),onOpened:b.onOpen},{trigger:J(()=>[ie(v,{size:20,"show-dot":f.notifications.length!==0||f.webNotificationsGranted===null,"show-warning":l.hasThrottledPushNotifications},null,8,["show-dot","show-warning"])]),default:J(()=>[X("div",Ws,[ie(Gi,{name:"fade",mode:"out-in"},{default:J(()=>[f.notifications.length>0?(P(),Z(zi,{key:0,class:"notification-wrapper",name:"list",tag:"ul"},{default:J(()=>[l.hasThrottledPushNotifications?(P(),Z(I,{key:-2016,notification:l.fairUsePolicyNotification},null,8,["notification"])):G("",!0),(P(!0),j(Xn,null,Zn(f.notifications,(u,_)=>(P(),Z(I,{key:u.notificationId,notification:u,onRemove:y=>b.onRemove(_)},null,8,["notification","onRemove"]))),128))]),_:1})):(P(),Z(e,{key:1,name:b.emptyContentMessage,description:b.emptyContentDescription},Wi({icon:J(()=>[l.hasThrottledPushNotifications?(P(),j("span",Js)):(P(),Z(A,{key:0}))]),_:2},[l.hasThrottledPushNotifications?{name:"action",fn:J(()=>[ie(B,{variant:"primary",href:"https://nextcloud.com/fairusepolicy",target:"_blank",rel:"noreferrer noopener"},{icon:J(()=>[ie(T,{size:20})]),default:J(()=>[Be(" "+$(b.t("notifications","Contact Nextcloud GmbH"))+" ↗ ",1)]),_:1})]),key:"0"}:void 0]),1032,["name","description"]))]),_:1}),f.notifications.length>0?(P(),j("div",Xs,[ie(B,{variant:"tertiary",wide:"",onClick:b.onDismissAll},{icon:J(()=>[ie(n,{size:20})]),default:J(()=>[Be(" "+$(b.t("notifications","Dismiss all notifications")),1)]),_:1},8,["onClick"])])):G("",!0)])]),_:1},8,["open","aria-label","title","onOpened"]))}const na=fe(zs,[["render",Zs],["__scopeId","data-v-344260f0"]]);export{na as default}; -//# sourceMappingURL=NotificationsApp-CnHRKMHH.chunk.mjs.map diff --git a/js/NotificationsApp-CnHRKMHH.chunk.mjs.map b/js/NotificationsApp-CnHRKMHH.chunk.mjs.map deleted file mode 100644 index 93417933b..000000000 --- a/js/NotificationsApp-CnHRKMHH.chunk.mjs.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"NotificationsApp-CnHRKMHH.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcEmptyContent-BdOezubv.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDateTime.vue_vue_type_script_setup_true_lang-BhB8yA4U.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHeaderMenu-DfO7ghiM.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcUserBubble-DfxVEEZg.mjs","../node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state/dist/index.cjs","../node_modules/@nextcloud/capabilities/dist/index.cjs","../node_modules/@nextcloud/event-bus/dist/index.cjs","../node_modules/@nextcloud/auth/dist/index.cjs","../node_modules/axios/dist/browser/axios.cjs","../node_modules/@nextcloud/router/dist/index.cjs","../node_modules/@nextcloud/axios/dist/index.cjs","../node_modules/@nextcloud/notify_push/dist/index.js","../node_modules/vue-material-design-icons/BellOutline.vue","../node_modules/vue-material-design-icons/Close.vue","../node_modules/vue-material-design-icons/MessageOutline.vue","../node_modules/vue-material-design-icons/Bell.vue","../src/Components/IconNotification.vue","../src/Components/ActionButton.vue","../src/Components/Parameters/DefaultParameter.vue","../src/Components/Parameters/FileParameter.vue","../src/Components/Parameters/UserParameter.vue","../src/Components/NotificationItem.vue","../src/services/notificationsService.js","../node_modules/howler/dist/howler.js","../src/services/webNotificationsService.js","../src/NotificationsApp.vue"],"sourcesContent":["import '../assets/NcEmptyContent-q-geAf0w.css';\nimport { defineComponent, createElementBlock, openBlock, createCommentVNode, renderSlot, toDisplayString, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = {\n class: \"empty-content\",\n role: \"note\"\n};\nconst _hoisted_2 = {\n key: 0,\n class: \"empty-content__icon\",\n \"aria-hidden\": \"true\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"empty-content__name\"\n};\nconst _hoisted_4 = {\n key: 1,\n class: \"empty-content__description\"\n};\nconst _hoisted_5 = {\n key: 2,\n class: \"empty-content__action\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcEmptyContent\",\n props: {\n description: { default: \"\" },\n name: { default: \"\" }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n _ctx.$slots.icon ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"icon\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"name\", {}, () => [\n _ctx.name !== \"\" ? (openBlock(), createElementBlock(\"span\", _hoisted_3, toDisplayString(_ctx.name), 1)) : createCommentVNode(\"\", true)\n ], true),\n _ctx.description !== \"\" || _ctx.$slots.description ? (openBlock(), createElementBlock(\"p\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"description\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ], true)\n ])) : createCommentVNode(\"\", true),\n _ctx.$slots.action ? (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n renderSlot(_ctx.$slots, \"action\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nconst NcEmptyContent = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-697cfd8f\"]]);\nexport {\n NcEmptyContent as N\n};\n//# sourceMappingURL=NcEmptyContent-BdOezubv.mjs.map\n","import { defineComponent, computed, toRef, createElementBlock, openBlock, toDisplayString, unref } from \"vue\";\nimport { useFormatTime, useFormatRelativeTime } from \"../composables/useFormatDateTime/index.mjs\";\nconst _hoisted_1 = [\"data-timestamp\", \"title\", \"textContent\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcDateTime\",\n props: {\n timestamp: {},\n format: { default: () => ({ timeStyle: \"medium\", dateStyle: \"short\" }) },\n relativeTime: { type: [Boolean, String], default: \"long\" },\n ignoreSeconds: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const timeOptions = computed(() => ({ format: props.format }));\n const relativeTimeOptions = computed(() => ({\n ignoreSeconds: props.ignoreSeconds,\n relativeTime: props.relativeTime || \"long\",\n update: props.relativeTime !== false\n }));\n const title = useFormatTime(toRef(() => props.timestamp), timeOptions);\n const relativeTime = useFormatRelativeTime(toRef(() => props.timestamp), relativeTimeOptions);\n const formattedTime = computed(() => props.relativeTime ? relativeTime.value : title.value);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"span\", {\n class: \"nc-datetime\",\n dir: \"auto\",\n \"data-timestamp\": _ctx.timestamp,\n title: unref(title),\n textContent: toDisplayString(formattedTime.value)\n }, null, 8, _hoisted_1);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcDateTime.vue_vue_type_script_setup_true_lang-BhB8yA4U.mjs.map\n","import '../assets/NcHeaderMenu-Hy0UKyUu.css';\nimport { defineComponent, ref, computed, useTemplateRef, watch, nextTick, createBlock, openBlock, resolveDynamicComponent, normalizeClass, unref, withCtx, createVNode, createElementBlock, createCommentVNode, withDirectives, withModifiers, renderSlot, toDisplayString, createElementVNode, vShow } from \"vue\";\nimport { onClickOutside } from \"@vueuse/core\";\nimport { createFocusTrap } from \"focus-trap\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport { useHotKey } from \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport { u as useTrapStackControl } from \"./useTrapStackControl-B6cEicto.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { N as NcButton } from \"./NcButton-DkC5k3Lb.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = { class: \"header-menu__caret\" };\nconst _hoisted_3 = [\"id\"];\nconst _hoisted_4 = {\n ref: \"contentContainer\",\n class: \"header-menu__content\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHeaderMenu\",\n props: {\n id: {},\n ariaLabel: { default: () => void 0 },\n open: { type: Boolean, default: false },\n isNav: { type: Boolean, default: false },\n description: { default: () => void 0 },\n excludeClickOutsideSelectors: { default: () => [] }\n },\n emits: [\"closed\", \"opened\", \"update:open\"],\n setup(__props, { emit: __emit }) {\n const emit = __emit;\n const descriptionId = createElementId();\n const triggerId = createElementId();\n const focusTrap = ref();\n const isOpened = ref(__props.open);\n const wrapperTag = computed(() => __props.isNav ? \"nav\" : \"div\");\n const contentContainerElement = useTemplateRef(\"contentContainer\");\n const headerMenuElement = useTemplateRef(\"headerMenu\");\n const triggerButtonInstance = useTemplateRef(\"triggerButton\");\n const ignore = computed(() => Array.isArray(__props.excludeClickOutsideSelectors) ? __props.excludeClickOutsideSelectors : __props.excludeClickOutsideSelectors.split(\" \"));\n onClickOutside(headerMenuElement, () => setMenuState(false), { ignore });\n useHotKey(\"Escape\", () => setMenuState(false), { prevent: true });\n useTrapStackControl(isOpened, {\n disabled: () => !__props.isNav\n });\n watch(() => __props.open, (state) => setMenuState(state));\n function toggleMenu() {\n setMenuState(!isOpened.value);\n }\n async function setMenuState(state) {\n if (state === isOpened.value) {\n return;\n }\n isOpened.value = state;\n emit(\"update:open\", state);\n await nextTick();\n await (state ? addFocusTrap() : clearFocusTrap());\n emit(state ? \"opened\" : \"closed\");\n }\n function onFocusOut(event) {\n if (!__props.isNav) {\n return;\n }\n if (!(event.relatedTarget instanceof Node)) {\n return;\n }\n if (headerMenuElement.value?.contains(event.relatedTarget)) {\n setMenuState(false);\n }\n }\n async function addFocusTrap() {\n if (__props.isNav || focusTrap.value) {\n return;\n }\n focusTrap.value = createFocusTrap(contentContainerElement.value, {\n allowOutsideClick: true,\n trapStack: getTrapStack(),\n fallbackFocus: triggerButtonInstance.value?.$el\n });\n focusTrap.value.activate();\n }\n function clearFocusTrap() {\n focusTrap.value?.deactivate();\n focusTrap.value = void 0;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(wrapperTag.value), {\n id: _ctx.id,\n ref: \"headerMenu\",\n \"aria-labelledby\": _ctx.isNav ? unref(triggerId) : null,\n class: normalizeClass([{ \"header-menu--opened\": isOpened.value }, \"header-menu\"]),\n onFocusout: onFocusOut\n }, {\n default: withCtx(() => [\n createVNode(unref(NcButton), {\n id: _ctx.isNav ? unref(triggerId) : null,\n ref: \"triggerButton\",\n \"aria-controls\": `header-menu-${_ctx.id}`,\n \"aria-expanded\": isOpened.value.toString(),\n \"aria-label\": _ctx.ariaLabel,\n class: \"header-menu__trigger\",\n size: \"large\",\n variant: \"tertiary-no-background\",\n onClick: withModifiers(toggleMenu, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"trigger\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"id\", \"aria-controls\", \"aria-expanded\", \"aria-label\"]),\n _ctx.description ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n id: unref(descriptionId),\n class: \"header-menu__description hidden-visually\"\n }, toDisplayString(_ctx.description), 9, _hoisted_1)) : createCommentVNode(\"\", true),\n withDirectives(createElementVNode(\"div\", _hoisted_2, null, 512), [\n [vShow, isOpened.value]\n ]),\n withDirectives(createElementVNode(\"div\", {\n id: `header-menu-${_ctx.id}`,\n class: \"header-menu__wrapper\"\n }, [\n createElementVNode(\"div\", _hoisted_4, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 512)\n ], 8, _hoisted_3), [\n [vShow, isOpened.value]\n ])\n ]),\n _: 3\n }, 40, [\"id\", \"aria-labelledby\", \"class\"]);\n };\n }\n});\nconst NcHeaderMenu = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d45c5788\"]]);\nexport {\n NcHeaderMenu as N\n};\n//# sourceMappingURL=NcHeaderMenu-DfO7ghiM.mjs.map\n","import '../assets/NcUserBubble-ChgvvPPf.css';\nimport { createElementBlock, openBlock, renderSlot, defineComponent, mergeModels, useModel, computed, warn, watch, createBlock, resolveDynamicComponent, unref, withCtx, mergeProps, createVNode, createElementVNode, createCommentVNode, normalizeStyle, toDisplayString } from \"vue\";\nimport { RouterLink } from \"vue-router\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-BkmHv-oY.mjs\";\nimport { N as NcPopover } from \"./NcPopover-C-MTaPCs.mjs\";\nconst _sfc_main$1 = {};\nfunction _sfc_render(_ctx, _cache) {\n return openBlock(), createElementBlock(\"div\", null, [\n renderSlot(_ctx.$slots, \"trigger\")\n ]);\n}\nconst NcUserBubbleDiv = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst _hoisted_1 = { class: \"user-bubble__name\" };\nconst _hoisted_2 = {\n key: 0,\n class: \"user-bubble__secondary\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcUserBubble\",\n props: /* @__PURE__ */ mergeModels({\n avatarImage: { default: void 0 },\n user: { default: void 0 },\n displayName: { default: void 0 },\n showUserStatus: { type: Boolean },\n url: { default: void 0 },\n to: { default: void 0 },\n primary: { type: Boolean },\n size: { default: 20 },\n margin: { default: 2 }\n }, {\n \"open\": { type: Boolean },\n \"openModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"click\"], [\"update:open\"]),\n setup(__props, { emit: __emit }) {\n const isOpen = useModel(__props, \"open\");\n const props = __props;\n const emit = __emit;\n const isAvatarUrl = computed(() => {\n if (!props.avatarImage) {\n return false;\n }\n try {\n const url = new URL(props.avatarImage);\n return !!url;\n } catch {\n return false;\n }\n });\n const isCustomAvatar = computed(() => !!props.avatarImage);\n const avatarStyle = computed(() => ({\n marginInlineStart: `${props.margin}px`\n }));\n const hasUrl = computed(() => {\n if (!props.url || props.url.trim() === \"\") {\n return false;\n }\n try {\n const url = new URL(props.url, props.url?.startsWith?.(\"/\") ? window.location.href : void 0);\n return !!url;\n } catch {\n warn(\"[NcUserBubble] Invalid URL passed\", { url: props.url });\n return false;\n }\n });\n const href = computed(() => hasUrl.value ? props.url : void 0);\n const contentComponent = computed(() => {\n if (hasUrl.value) {\n return \"a\";\n } else if (props.to) {\n return RouterLink;\n } else {\n return \"div\";\n }\n });\n const contentStyle = computed(() => ({\n height: `${props.size}px`,\n lineHeight: `${props.size}px`,\n borderRadius: `${props.size / 2}px`\n }));\n watch([() => props.displayName, () => props.user], () => {\n if (!props.displayName && !props.user) {\n warn(\"[NcUserBubble] At least `displayName` or `user` property should be set.\");\n }\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(resolveDynamicComponent(!!_ctx.$slots.default ? unref(NcPopover) : NcUserBubbleDiv), {\n shown: isOpen.value,\n \"onUpdate:shown\": _cache[1] || (_cache[1] = ($event) => isOpen.value = $event),\n class: \"user-bubble__wrapper\",\n trigger: \"hover focus\"\n }, {\n trigger: withCtx(({ attrs }) => [\n (openBlock(), createBlock(resolveDynamicComponent(contentComponent.value), mergeProps({\n class: [\"user-bubble__content\", { \"user-bubble__content--primary\": _ctx.primary }],\n style: contentStyle.value,\n to: _ctx.to,\n href: href.value\n }, attrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => emit(\"click\", $event))\n }), {\n default: withCtx(() => [\n createVNode(unref(NcAvatar), {\n url: isCustomAvatar.value && isAvatarUrl.value ? _ctx.avatarImage : void 0,\n \"icon-class\": isCustomAvatar.value && !isAvatarUrl.value ? _ctx.avatarImage : void 0,\n user: _ctx.user,\n \"display-name\": _ctx.displayName,\n size: _ctx.size - _ctx.margin * 2,\n style: normalizeStyle(avatarStyle.value),\n \"disable-tooltip\": true,\n \"disable-menu\": true,\n \"hide-status\": !_ctx.showUserStatus,\n class: \"user-bubble__avatar\"\n }, null, 8, [\"url\", \"icon-class\", \"user\", \"display-name\", \"size\", \"style\", \"hide-status\"]),\n createElementVNode(\"span\", _hoisted_1, toDisplayString(_ctx.displayName || _ctx.user), 1),\n !!_ctx.$slots.name ? (openBlock(), createElementBlock(\"span\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"name\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 2\n }, 1040, [\"class\", \"style\", \"to\", \"href\"]))\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 40, [\"shown\"]);\n };\n }\n});\nconst NcUserBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-37bde6b7\"]]);\nexport {\n NcUserBubble as N\n};\n//# sourceMappingURL=NcUserBubble-DfxVEEZg.mjs.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nfunction loadState(app, key, fallback) {\n const elem = document.querySelector(`#initial-state-${app}-${key}`);\n if (elem === null) {\n if (fallback !== void 0) {\n return fallback;\n }\n throw new Error(`Could not find initial state ${key} of ${app}`);\n }\n try {\n return JSON.parse(atob(elem.value));\n } catch (e) {\n throw new Error(`Could not parse initial state ${key} of ${app}`);\n }\n}\nexports.loadState = loadState;\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst i = require(\"@nextcloud/initial-state\");\nfunction t() {\n try {\n return i.loadState(\"core\", \"capabilities\");\n } catch {\n return console.debug(\"Could not find capabilities initial state fall back to _oc_capabilities\"), \"_oc_capabilities\" in window ? window._oc_capabilities : {};\n }\n}\nexports.getCapabilities = t;\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst valid = require(\"semver/functions/valid.js\");\nconst major = require(\"semver/functions/major.js\");\nconst _interopDefault = (e) => e && e.__esModule ? e : { default: e };\nconst valid__default = /* @__PURE__ */ _interopDefault(valid);\nconst major__default = /* @__PURE__ */ _interopDefault(major);\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid__default.default(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major__default.default(bus2.getVersion()) !== major__default.default(this.getVersion())) {\n console.warn(\n \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n );\n }\n this.bus = bus2;\n }\n getVersion() {\n return \"3.3.2\";\n }\n subscribe(name, handler) {\n this.bus.subscribe(name, handler);\n }\n unsubscribe(name, handler) {\n this.bus.unsubscribe(name, handler);\n }\n emit(name, ...event) {\n this.bus.emit(name, ...event);\n }\n}\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.2\";\n }\n subscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).concat(\n handler\n )\n );\n }\n unsubscribe(name, handler) {\n this.handlers.set(\n name,\n (this.handlers.get(name) || []).filter((h) => h !== handler)\n );\n }\n emit(name, ...event) {\n const handlers = this.handlers.get(name) || [];\n handlers.forEach((h) => {\n try {\n ;\n h(event[0]);\n } catch (e) {\n console.error(\"could not invoke event listener\", e);\n }\n });\n }\n}\nlet bus = null;\nfunction getBus() {\n if (bus !== null) {\n return bus;\n }\n if (typeof window === \"undefined\") {\n return new Proxy({}, {\n get: () => {\n return () => console.error(\n \"Window not available, EventBus can not be established!\"\n );\n }\n });\n }\n if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n console.warn(\n \"found old event bus instance at OC._eventBus. Update your version!\"\n );\n window._nc_event_bus = window.OC._eventBus;\n }\n if (typeof window?._nc_event_bus !== \"undefined\") {\n bus = new ProxyBus(window._nc_event_bus);\n } else {\n bus = window._nc_event_bus = new SimpleBus();\n }\n return bus;\n}\nfunction subscribe(name, handler) {\n getBus().subscribe(name, handler);\n}\nfunction unsubscribe(name, handler) {\n getBus().unsubscribe(name, handler);\n}\nfunction emit(name, ...event) {\n getBus().emit(name, ...event);\n}\nexports.ProxyBus = ProxyBus;\nexports.SimpleBus = SimpleBus;\nexports.emit = emit;\nexports.subscribe = subscribe;\nexports.unsubscribe = unsubscribe;\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst eventBus = require(\"@nextcloud/event-bus\");\nconst browserStorage$1 = require(\"@nextcloud/browser-storage\");\nlet token;\nconst observers = [];\nfunction getRequestToken() {\n if (token === void 0) {\n token = document.head.dataset.requesttoken ?? null;\n }\n return token;\n}\nfunction onRequestTokenUpdate(observer) {\n observers.push(observer);\n}\neventBus.subscribe(\"csrf-token-update\", (e) => {\n token = e.token;\n observers.forEach((observer) => {\n try {\n observer(token);\n } catch (error) {\n console.error(\"Error updating CSRF token observer\", error);\n }\n });\n});\nfunction getCSPNonce() {\n const meta = document?.querySelector('meta[name=\"csp-nonce\"]');\n if (!meta) {\n const token2 = getRequestToken();\n return token2 ? btoa(token2) : void 0;\n }\n return meta.nonce;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nconst browserStorage = browserStorage$1.getBuilder(\"public\").persist().build();\nclass GuestUser {\n _displayName;\n uid;\n isAdmin;\n constructor() {\n if (!browserStorage.getItem(\"guestUid\")) {\n browserStorage.setItem(\"guestUid\", randomUUID());\n }\n this._displayName = browserStorage.getItem(\"guestNickname\") || \"\";\n this.uid = browserStorage.getItem(\"guestUid\") || randomUUID();\n this.isAdmin = false;\n eventBus.subscribe(\"user:info:changed\", (guest) => {\n this._displayName = guest.displayName;\n browserStorage.setItem(\"guestNickname\", guest.displayName || \"\");\n });\n }\n get displayName() {\n return this._displayName;\n }\n set displayName(displayName) {\n this._displayName = displayName;\n browserStorage.setItem(\"guestNickname\", displayName);\n eventBus.emit(\"user:info:changed\", this);\n }\n}\nlet currentUser$1;\nfunction getGuestUser() {\n if (!currentUser$1) {\n currentUser$1 = new GuestUser();\n }\n return currentUser$1;\n}\nfunction getGuestNickname() {\n return getGuestUser()?.displayName || null;\n}\nfunction setGuestNickname(nickname) {\n if (!nickname || nickname.trim().length === 0) {\n throw new Error(\"Nickname cannot be empty\");\n }\n getGuestUser().displayName = nickname;\n}\nfunction randomUUID() {\n if (globalThis.crypto?.randomUUID) {\n return globalThis.crypto.randomUUID();\n }\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (c) => {\n const r = Math.random() * 16 | 0;\n const v = c === \"x\" ? r : r & 3 | 8;\n return v.toString(16);\n });\n}\nlet currentUser;\nfunction getAttribute(el, attribute) {\n if (el) {\n return el.getAttribute(attribute);\n }\n return null;\n}\nfunction getCurrentUser() {\n if (currentUser !== void 0) {\n return currentUser;\n }\n const head = document?.getElementsByTagName(\"head\")[0];\n if (!head) {\n return null;\n }\n const uid = getAttribute(head, \"data-user\");\n if (uid === null) {\n currentUser = null;\n return currentUser;\n }\n currentUser = {\n uid,\n displayName: getAttribute(head, \"data-user-displayname\"),\n isAdmin: !!window._oc_isadmin\n };\n return currentUser;\n}\nexports.getCSPNonce = getCSPNonce;\nexports.getCurrentUser = getCurrentUser;\nexports.getGuestNickname = getGuestNickname;\nexports.getGuestUser = getGuestUser;\nexports.getRequestToken = getRequestToken;\nexports.onRequestTokenUpdate = onRequestTokenUpdate;\nexports.setGuestNickname = setGuestNickname;\n//# sourceMappingURL=index.cjs.map\n","/*! Axios v1.12.2 Copyright (c) 2025 Matt Zabriskie and contributors */\n'use strict';\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n};\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction$1(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction$1 = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction$1(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction$1(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction$1(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)){\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless, skipUndefined} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction$1(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction$1(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction$1(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n};\n\n\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction$1(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction$1(thing)) && isFunction$1(thing.then) && isFunction$1(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction$1(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction$1(thing[iterator]);\n\n\nvar utils$1 = {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction: isFunction$1,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils$1.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils$1.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype$1 = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype$1, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype$1);\n\n utils$1.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n const msg = error && error.message ? error.message : 'Error';\n\n // Prefer explicit code; otherwise copy the low-level error's code (e.g. ECONNREFUSED)\n const errCode = code == null && error ? error.code : code;\n AxiosError.call(axiosError, msg, errCode, config, request, response);\n\n // Chain the original error on the standard field; non-enumerable to avoid JSON noise\n if (error && axiosError.cause == null) {\n Object.defineProperty(axiosError, 'cause', { value: error, configurable: true });\n }\n\n axiosError.name = (error && error.name) || 'Error';\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n// eslint-disable-next-line strict\nvar httpAdapter = null;\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils$1.isPlainObject(thing) || utils$1.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils$1.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils$1.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils$1.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils$1.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils$1.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);\n\n if (!utils$1.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils$1.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils$1.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils$1.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils$1.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils$1.isArray(value) && isFlatArray(value)) ||\n ((utils$1.isFileList(value) || utils$1.endsWith(key, '[]')) && (arr = utils$1.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils$1.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils$1.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils$1.forEach(value, function each(el, key) {\n const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils$1.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils$1.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode$1(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode$1);\n } : encode$1;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils$1.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils$1.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils$1.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nvar InterceptorManager$1 = InterceptorManager;\n\nvar transitionalDefaults = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n\nvar URLSearchParams$1 = typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n\nvar FormData$1 = typeof FormData !== 'undefined' ? FormData : null;\n\nvar Blob$1 = typeof Blob !== 'undefined' ? Blob : null;\n\nvar platform$1 = {\n isBrowser: true,\n classes: {\n URLSearchParams: URLSearchParams$1,\n FormData: FormData$1,\n Blob: Blob$1\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n\nconst hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nvar utils = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hasBrowserEnv: hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv: hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv: hasStandardBrowserEnv,\n navigator: _navigator,\n origin: origin\n});\n\nvar platform = {\n ...utils,\n ...platform$1\n};\n\nfunction toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils$1.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils$1.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils$1.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils$1.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils$1.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils$1.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {\n const obj = {};\n\n utils$1.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils$1.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils$1.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils$1.isObject(data);\n\n if (isObjectPayload && utils$1.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils$1.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils$1.isArrayBuffer(data) ||\n utils$1.isBuffer(data) ||\n utils$1.isStream(data) ||\n utils$1.isFile(data) ||\n utils$1.isBlob(data) ||\n utils$1.isReadableStream(data)\n ) {\n return data;\n }\n if (utils$1.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils$1.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils$1.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils$1.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils$1.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nvar defaults$1 = defaults;\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils$1.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nvar parseHeaders = rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils$1.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils$1.isString(value)) return;\n\n if (utils$1.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils$1.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils$1.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils$1.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils$1.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if(utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils$1.isObject(header) && utils$1.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils$1.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils$1.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils$1.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils$1.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils$1.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils$1.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils$1.forEach(this, (value, header) => {\n const key = utils$1.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils$1.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils$1.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils$1.freezeMethods(AxiosHeaders);\n\nvar AxiosHeaders$1 = AxiosHeaders;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || defaults$1;\n const context = response || config;\n const headers = AxiosHeaders$1.from(context.headers);\n let data = context.data;\n\n utils$1.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils$1.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n };\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs);\n }, threshold - passed);\n }\n }\n };\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nconst progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n};\n\nconst progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n};\n\nconst asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args));\n\nvar isURLSameOrigin = platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n\nvar cookies = platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils$1.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils$1.isString(path) && cookie.push('path=' + path);\n\n utils$1.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {\n return utils$1.merge.call({caseless}, target, source);\n } else if (utils$1.isPlainObject(source)) {\n return utils$1.merge({}, source);\n } else if (utils$1.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils$1.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils$1.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils$1.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n\nvar resolveConfig = (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders$1.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils$1.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils$1.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n};\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nvar xhrAdapter = isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders$1.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils$1.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n};\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n };\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT));\n }, timeout);\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n };\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils$1.asap(unsubscribe);\n\n return signal;\n }\n};\n\nvar composeSignals$1 = composeSignals;\n\nconst streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n};\n\nconst readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n};\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n};\n\nconst trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n };\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n};\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils$1;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils$1.global);\n\nconst {\n ReadableStream: ReadableStream$1, TextEncoder\n} = utils$1.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n};\n\nconst factory = (env) => {\n env = utils$1.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream$1);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream$1(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils$1.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n });\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils$1.isBlob(body)) {\n return body.size;\n }\n\n if (utils$1.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils$1.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils$1.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n };\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils$1.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n };\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals$1([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader);\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils$1.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils$1.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders$1.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n });\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n }\n};\n\nconst seedCache = new Map();\n\nconst getFetch = (config) => {\n let env = config ? config.env : {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)));\n\n map = target;\n }\n\n return target;\n};\n\ngetFetch();\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: getFetch,\n }\n};\n\nutils$1.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;\n\nvar adapters = {\n getAdapter: (adapters, config) => {\n adapters = utils$1.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils$1.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n};\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders$1.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders$1.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders$1.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n\nconst VERSION = \"1.12.2\";\n\nconst validators$1 = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators$1[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators$1.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators$1.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nvar validator = {\n assertOptions,\n validators: validators$1\n};\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager$1(),\n response: new InterceptorManager$1()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack;\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils$1.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n };\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) ; else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils$1.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils$1.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders$1.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils$1.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils$1.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nvar Axios$1 = Axios;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nvar CancelToken$1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return utils$1.isObject(payload) && (payload.isAxiosError === true);\n}\n\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nvar HttpStatusCode$1 = HttpStatusCode;\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios$1(defaultConfig);\n const instance = bind(Axios$1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils$1.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils$1.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults$1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios$1;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken$1;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders$1;\n\naxios.formToJSON = thing => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode$1;\n\naxios.default = axios;\n\nmodule.exports = axios;\n//# sourceMappingURL=axios.cjs.map\n","\"use strict\";\nObject.defineProperty(exports, Symbol.toStringTag, { value: \"Module\" });\nconst w = (e, n) => u(e, \"\", n), U = (e) => \"/remote.php/\" + e, R = (e, n) => {\n var o;\n return ((o = n == null ? void 0 : n.baseURL) != null ? o : f()) + U(e);\n}, h = (e, n, o) => {\n var r;\n const c = Object.assign({\n ocsVersion: 2\n }, o || {}).ocsVersion === 1 ? 1 : 2;\n return ((r = o == null ? void 0 : o.baseURL) != null ? r : f()) + \"/ocs/v\" + c + \".php\" + g(e, n, o);\n}, g = (e, n, o) => {\n const r = Object.assign({\n escape: !0\n }, o || {}), s = function(c, i) {\n return i = i || {}, c.replace(\n /{([^{}]*)}/g,\n function(l, t) {\n const a = i[t];\n return r.escape ? encodeURIComponent(typeof a == \"string\" || typeof a == \"number\" ? a.toString() : l) : typeof a == \"string\" || typeof a == \"number\" ? a.toString() : l;\n }\n );\n };\n return e.charAt(0) !== \"/\" && (e = \"/\" + e), s(e, n || {});\n}, v = (e, n, o) => {\n var r, s, c;\n const i = Object.assign({\n noRewrite: !1\n }, o || {}), l = (r = o == null ? void 0 : o.baseURL) != null ? r : d();\n return ((c = (s = window == null ? void 0 : window.OC) == null ? void 0 : s.config) == null ? void 0 : c.modRewriteWorking) === !0 && !i.noRewrite ? l + g(e, n, o) : l + \"/index.php\" + g(e, n, o);\n}, _ = (e, n) => n.includes(\".\") ? u(e, \"img\", n) : u(e, \"img\", \"\".concat(n, \".svg\")), u = (e, n, o) => {\n var r, s, c;\n const i = (c = (s = (r = window == null ? void 0 : window.OC) == null ? void 0 : r.coreApps) == null ? void 0 : s.includes(e)) != null ? c : !1, l = o.slice(-3) === \"php\";\n let t = d();\n return l && !i ? (t += \"/index.php/apps/\".concat(e), n && (t += \"/\".concat(encodeURI(n))), o !== \"index.php\" && (t += \"/\".concat(o))) : !l && !i ? (t = b(e), n && (t += \"/\".concat(n, \"/\")), t.at(-1) !== \"/\" && (t += \"/\"), t += o) : ((e === \"settings\" || e === \"core\" || e === \"search\") && n === \"ajax\" && (t += \"/index.php\"), e && (t += \"/\".concat(e)), n && (t += \"/\".concat(n)), t += \"/\".concat(o)), t;\n}, f = () => window.location.protocol + \"//\" + window.location.host + d();\nfunction d() {\n let e = window._oc_webroot;\n if (typeof e > \"u\") {\n e = location.pathname;\n const n = e.indexOf(\"/index.php/\");\n if (n !== -1)\n e = e.slice(0, n);\n else {\n const o = e.indexOf(\"/\", 1);\n e = e.slice(0, o > 0 ? o : void 0);\n }\n }\n return e;\n}\nfunction b(e) {\n var n, o;\n return (o = ((n = window._oc_appswebroots) != null ? n : {})[e]) != null ? o : \"\";\n}\nexports.generateFilePath = u;\nexports.generateOcsUrl = h;\nexports.generateRemoteUrl = R;\nexports.generateUrl = v;\nexports.getAppRootUrl = b;\nexports.getBaseUrl = f;\nexports.getRootUrl = d;\nexports.imagePath = _;\nexports.linkTo = w;\n","\"use strict\";\nObject.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: \"Module\" } });\nconst auth = require(\"@nextcloud/auth\");\nconst Axios = require(\"axios\");\nconst router = require(\"@nextcloud/router\");\nconst _interopDefault = (e) => e && e.__esModule ? e : { default: e };\nconst Axios__default = /* @__PURE__ */ _interopDefault(Axios);\n/*!\n * SPDX-License-Identifier: GPL-3.0-or-later\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n */\nconst client = Axios__default.default.create({\n headers: {\n requesttoken: auth.getRequestToken() ?? \"\",\n \"X-Requested-With\": \"XMLHttpRequest\"\n }\n});\nauth.onRequestTokenUpdate((token) => {\n client.defaults.headers.requesttoken = token;\n});\nconst cancelableClient = Object.assign(client, {\n CancelToken: Axios__default.default.CancelToken,\n isCancel: Axios__default.default.isCancel\n});\nconst RETRY_KEY = Symbol(\"csrf-retry\");\nfunction onCsrfTokenError(axios) {\n return async (error) => {\n if (!Axios.isAxiosError(error)) {\n throw error;\n }\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n if (config && !config[RETRY_KEY] && response?.status === 412 && response?.data?.message === \"CSRF check failed\") {\n console.warn(`Request to ${responseURL} failed because of a CSRF mismatch. Fetching a new token`);\n const { data: { token } } = await axios.get(router.generateUrl(\"/csrftoken\"));\n console.debug(`New request token ${token} fetched`);\n axios.defaults.headers.requesttoken = token;\n return axios({\n ...config,\n headers: {\n ...config.headers,\n requesttoken: token\n },\n [RETRY_KEY]: true\n });\n }\n throw error;\n };\n}\nconst RETRY_DELAY_KEY = Symbol(\"retryDelay\");\nfunction onMaintenanceModeError(axios) {\n return async (error) => {\n if (!Axios.isAxiosError(error)) {\n throw error;\n }\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n const status = response?.status;\n const headers = response?.headers;\n let retryDelay = typeof config?.[RETRY_DELAY_KEY] === \"number\" ? config?.[RETRY_DELAY_KEY] : 1;\n if (status === 503 && headers?.[\"x-nextcloud-maintenance-mode\"] === \"1\" && config?.retryIfMaintenanceMode) {\n retryDelay *= 2;\n if (retryDelay > 32) {\n console.error(\"Retry delay exceeded one minute, giving up.\", { responseURL });\n throw error;\n }\n console.warn(`Request to ${responseURL} failed because of maintenance mode. Retrying in ${retryDelay}s`);\n await new Promise((resolve) => {\n setTimeout(resolve, retryDelay * 1e3);\n });\n return axios({\n ...config,\n [RETRY_DELAY_KEY]: retryDelay\n });\n }\n throw error;\n };\n}\nasync function onNotLoggedInError(error) {\n if (Axios.isAxiosError(error)) {\n const { config, response, request } = error;\n const responseURL = request?.responseURL;\n const status = response?.status;\n if (status === 401 && response?.data?.message === \"Current user is not logged in\" && config?.reloadExpiredSession && window?.location) {\n console.error(`Request to ${responseURL} failed because the user session expired. Reloading the page …`);\n window.location.reload();\n }\n }\n throw error;\n}\ncancelableClient.interceptors.response.use((r) => r, onCsrfTokenError(cancelableClient));\ncancelableClient.interceptors.response.use((r) => r, onMaintenanceModeError(cancelableClient));\ncancelableClient.interceptors.response.use((r) => r, onNotLoggedInError);\nObject.defineProperty(exports, \"isAxiosError\", {\n enumerable: true,\n get: () => Axios.isAxiosError\n});\nObject.defineProperty(exports, \"isCancel\", {\n enumerable: true,\n get: () => Axios.isCancel\n});\nexports.default = cancelableClient;\n//# sourceMappingURL=index.cjs.map\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.listen = exports.getSupportedTypes = void 0;\nconst capabilities_1 = require(\"@nextcloud/capabilities\");\nconst axios_1 = __importDefault(require(\"@nextcloud/axios\"));\nconst event_bus_1 = require(\"@nextcloud/event-bus\");\n/**\n * Get the list of supported notification types as reported by the server\n *\n * @return string[]\n */\nfunction getSupportedTypes() {\n const capabilities = (0, capabilities_1.getCapabilities)();\n if (capabilities.notify_push) {\n return capabilities.notify_push.type;\n }\n else {\n return [];\n }\n}\nexports.getSupportedTypes = getSupportedTypes;\n/**\n * Register a listener for notify_push events\n *\n * @param name name of the event\n * @param handler callback invoked for every matching event pushed\n * @param [options]\n * @param [options.credentials] optional credentials used instead of the pre_auth request\n * @param [options.credentials.username] username\n * @param [options.credentials.password] app password\n * @return boolean whether push is set up correctly\n */\nfunction listen(name, handler, options = {}) {\n setupGlobals(options);\n if (!window._notify_push_listeners[name]) {\n window._notify_push_listeners[name] = [];\n }\n window._notify_push_listeners[name].push(handler);\n if (window._notify_push_ws !== null && typeof window._notify_push_ws === \"object\") {\n window._notify_push_ws.send('listen ' + name);\n }\n else {\n setupSocket(options);\n }\n return window._notify_push_available;\n}\nexports.listen = listen;\nfunction setupGlobals(options = {}) {\n if (typeof window._notify_push_listeners === \"undefined\") {\n window._notify_push_listeners = {};\n window._notify_push_ws = null;\n window._notify_push_online = true;\n window._notify_push_available = false;\n window._notify_push_error_count = 0;\n (0, event_bus_1.subscribe)('networkOffline', () => {\n window._notify_push_online = false;\n window._notify_push_ws = null;\n });\n (0, event_bus_1.subscribe)('networkOnline', () => {\n window._notify_push_error_count = 0;\n window._notify_push_online = true;\n setupSocket(options);\n });\n }\n}\nasync function setupSocket(options = {}) {\n if (window._notify_push_ws) {\n return true;\n }\n window._notify_push_ws = true;\n const capabilities = (0, capabilities_1.getCapabilities)();\n if (!capabilities.notify_push) {\n window._notify_push_available = false;\n window._notify_push_ws = null;\n return false;\n }\n window._notify_push_available = true;\n let preAuth;\n if (!options.credentials) {\n const response = await axios_1.default.post(capabilities.notify_push.endpoints.pre_auth);\n preAuth = response.data;\n }\n window._notify_push_ws = new WebSocket(capabilities.notify_push.endpoints.websocket);\n window._notify_push_ws.onopen = () => {\n if (typeof window._notify_push_ws === \"object\" && window._notify_push_ws) {\n if (preAuth) {\n window._notify_push_ws.send('');\n window._notify_push_ws.send(preAuth);\n }\n else if (options.credentials) {\n window._notify_push_ws.send(options.credentials.username);\n window._notify_push_ws.send(options.credentials.password);\n }\n for (let name in window._notify_push_listeners) {\n window._notify_push_ws.send('listen ' + name);\n }\n }\n };\n window._notify_push_ws.onmessage = message => {\n if (message.data === \"authenticated\") {\n window._notify_push_error_count = 0;\n }\n else {\n const i = message.data.indexOf(' ');\n let [event, body] = i > 0 ? [message.data.slice(0, i), message.data.slice(i + 1)] : [message.data, null];\n if (body) {\n body = JSON.parse(body);\n }\n if (window._notify_push_listeners[event]) {\n for (let cb of window._notify_push_listeners[event]) {\n cb(event, body);\n }\n }\n }\n };\n window._notify_push_ws.onerror = window._notify_push_ws.onclose = () => {\n window._notify_push_ws = null;\n window._notify_push_error_count += 1;\n setTimeout(() => {\n if (window._notify_push_online) {\n setupSocket(options);\n }\n }, 1000 * window._notify_push_error_count);\n };\n return true;\n}\n","\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport BrowserStorage from './BrowserStorage.js'\n\n/**\n * @param {string|null} tabId unique id for browser tab\n * @param {string} lastETag last ETag\n * @param {boolean} forceRefresh whether to refresh data forcefully\n * @param {boolean} hasNotifyPush whether has notify_push enabled\n */\nasync function getNotificationsData(tabId, lastETag, forceRefresh, hasNotifyPush) {\n\tconst lastUpdated = parseInt(BrowserStorage.getItem('lastUpdated'), 10)\n\tconst lastTab = BrowserStorage.getItem('tabId')\n\tconst now = Math.floor(Date.now() / 1000)\n\n\tif (forceRefresh\n\t\t// Allow the same tab to refresh with less than the timeout,\n\t\t|| (lastTab === tabId && lastUpdated + 25 < now)\n\t\t// Allow the same tab to refresh with notify push,\n\t\t|| (lastTab === tabId && hasNotifyPush)\n\t\t// and at the same time give it some more time against other tabs.\n\t\t|| lastUpdated + 35 < now) {\n\t\tBrowserStorage.setItem('tabId', tabId)\n\t\tBrowserStorage.setItem('lastUpdated', now.toString())\n\t\t// console.debug('Refetching data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t\tawait refreshData(lastETag)\n\t// } else {\n\t// console.debug('Reusing data in ' + tabId + ' (prev: ' + lastTab + ' age: ' + (now - lastUpdated) + ')')\n\t}\n\n\treturn {\n\t\tstatus: parseInt(BrowserStorage.getItem('status'), 10),\n\t\theaders: JSON.parse(BrowserStorage.getItem('headers') || '[]'),\n\t\tdata: JSON.parse(BrowserStorage.getItem('data') || '[]'),\n\t\ttabId: BrowserStorage.getItem('tabId'),\n\t\tlastUpdated: parseInt(BrowserStorage.getItem('lastUpdated'), 10),\n\t}\n}\n\n/**\n * @param {object} notification notification object\n */\nfunction remapAttributes(notification) {\n\tnotification.notificationId = notification.notification_id\n\tnotification.objectId = notification.object_id\n\tnotification.objectType = notification.object_type\n\n\tdelete notification.notification_id\n\tdelete notification.object_id\n\tdelete notification.object_type\n\n\treturn notification\n}\n\n/**\n * @param {string} lastETag last ETag\n */\nasync function refreshData(lastETag) {\n\tlet requestConfig = {}\n\tif (lastETag) {\n\t\trequestConfig = {\n\t\t\theaders: {\n\t\t\t\t'If-None-Match': lastETag,\n\t\t\t},\n\t\t}\n\t}\n\n\ttry {\n\t\tconst response = await axios.get(generateOcsUrl('apps/notifications/api/v2/notifications'), requestConfig)\n\n\t\tBrowserStorage.setItem('status', '' + response.status)\n\t\tif (response.status !== 204) {\n\t\t\tBrowserStorage.setItem('headers', JSON.stringify(response.headers))\n\t\t\tBrowserStorage.setItem('data', JSON.stringify(response.data.ocs.data.map(remapAttributes)))\n\t\t}\n\t} catch (error) {\n\t\tif (error?.response?.status) {\n\t\t\tBrowserStorage.setItem('status', '' + error.response.status)\n\t\t} else {\n\t\t\t// Setting to 500 in case no request was made so it's retried on the next attempt\n\t\t\tBrowserStorage.setItem('status', '500')\n\t\t}\n\t}\n}\n\nexport {\n\tgetNotificationsData,\n}\n","/*!\n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Create the global controller. All contained methods and properties apply\n * to all sounds that are currently playing or will be in the future.\n */\n var HowlerGlobal = function() {\n this.init();\n };\n HowlerGlobal.prototype = {\n /**\n * Initialize the global Howler object.\n * @return {Howler}\n */\n init: function() {\n var self = this || Howler;\n\n // Create a global ID counter.\n self._counter = 1000;\n\n // Pool of unlocked HTML5 Audio objects.\n self._html5AudioPool = [];\n self.html5PoolSize = 10;\n\n // Internal properties.\n self._codecs = {};\n self._howls = [];\n self._muted = false;\n self._volume = 1;\n self._canPlayEvent = 'canplaythrough';\n self._navigator = (typeof window !== 'undefined' && window.navigator) ? window.navigator : null;\n\n // Public properties.\n self.masterGain = null;\n self.noAudio = false;\n self.usingWebAudio = true;\n self.autoSuspend = true;\n self.ctx = null;\n\n // Set to false to disable the auto audio unlocker.\n self.autoUnlock = true;\n\n // Setup the various state values for global tracking.\n self._setup();\n\n return self;\n },\n\n /**\n * Get/set the global volume for all sounds.\n * @param {Float} vol Volume from 0.0 to 1.0.\n * @return {Howler/Float} Returns self or current volume.\n */\n volume: function(vol) {\n var self = this || Howler;\n vol = parseFloat(vol);\n\n // If we don't have an AudioContext created yet, run the setup.\n if (!self.ctx) {\n setupAudioContext();\n }\n\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n self._volume = vol;\n\n // Don't update any of the nodes if we are muted.\n if (self._muted) {\n return self;\n }\n\n // When using Web Audio, we just need to adjust the master gain.\n if (self.usingWebAudio) {\n self.masterGain.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n }\n\n // Loop through and change volume for all HTML5 audio nodes.\n for (var i=0; i=0; i--) {\n self._howls[i].unload();\n }\n\n // Create a new AudioContext to make sure it is fully reset.\n if (self.usingWebAudio && self.ctx && typeof self.ctx.close !== 'undefined') {\n self.ctx.close();\n self.ctx = null;\n setupAudioContext();\n }\n\n return self;\n },\n\n /**\n * Check for codec support of specific extension.\n * @param {String} ext Audio file extention.\n * @return {Boolean}\n */\n codecs: function(ext) {\n return (this || Howler)._codecs[ext.replace(/^x-/, '')];\n },\n\n /**\n * Setup various state values for global tracking.\n * @return {Howler}\n */\n _setup: function() {\n var self = this || Howler;\n\n // Keeps track of the suspend/resume state of the AudioContext.\n self.state = self.ctx ? self.ctx.state || 'suspended' : 'suspended';\n\n // Automatically begin the 30-second suspend process\n self._autoSuspend();\n\n // Check if audio is available.\n if (!self.usingWebAudio) {\n // No audio is available on this system if noAudio is set to true.\n if (typeof Audio !== 'undefined') {\n try {\n var test = new Audio();\n\n // Check if the canplaythrough event is available.\n if (typeof test.oncanplaythrough === 'undefined') {\n self._canPlayEvent = 'canplay';\n }\n } catch(e) {\n self.noAudio = true;\n }\n } else {\n self.noAudio = true;\n }\n }\n\n // Test to make sure audio isn't disabled in Internet Explorer.\n try {\n var test = new Audio();\n if (test.muted) {\n self.noAudio = true;\n }\n } catch (e) {}\n\n // Check for supported codecs.\n if (!self.noAudio) {\n self._setupCodecs();\n }\n\n return self;\n },\n\n /**\n * Check for browser support for various codecs and cache the results.\n * @return {Howler}\n */\n _setupCodecs: function() {\n var self = this || Howler;\n var audioTest = null;\n\n // Must wrap in a try/catch because IE11 in server mode throws an error.\n try {\n audioTest = (typeof Audio !== 'undefined') ? new Audio() : null;\n } catch (err) {\n return self;\n }\n\n if (!audioTest || typeof audioTest.canPlayType !== 'function') {\n return self;\n }\n\n var mpegTest = audioTest.canPlayType('audio/mpeg;').replace(/^no$/, '');\n\n // Opera version <33 has mixed MP3 support, so we need to check for and block it.\n var ua = self._navigator ? self._navigator.userAgent : '';\n var checkOpera = ua.match(/OPR\\/(\\d+)/g);\n var isOldOpera = (checkOpera && parseInt(checkOpera[0].split('/')[1], 10) < 33);\n var checkSafari = ua.indexOf('Safari') !== -1 && ua.indexOf('Chrome') === -1;\n var safariVersion = ua.match(/Version\\/(.*?) /);\n var isOldSafari = (checkSafari && safariVersion && parseInt(safariVersion[1], 10) < 15);\n\n self._codecs = {\n mp3: !!(!isOldOpera && (mpegTest || audioTest.canPlayType('audio/mp3;').replace(/^no$/, ''))),\n mpeg: !!mpegTest,\n opus: !!audioTest.canPlayType('audio/ogg; codecs=\"opus\"').replace(/^no$/, ''),\n ogg: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n oga: !!audioTest.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/, ''),\n wav: !!(audioTest.canPlayType('audio/wav; codecs=\"1\"') || audioTest.canPlayType('audio/wav')).replace(/^no$/, ''),\n aac: !!audioTest.canPlayType('audio/aac;').replace(/^no$/, ''),\n caf: !!audioTest.canPlayType('audio/x-caf;').replace(/^no$/, ''),\n m4a: !!(audioTest.canPlayType('audio/x-m4a;') || audioTest.canPlayType('audio/m4a;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n m4b: !!(audioTest.canPlayType('audio/x-m4b;') || audioTest.canPlayType('audio/m4b;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n mp4: !!(audioTest.canPlayType('audio/x-mp4;') || audioTest.canPlayType('audio/mp4;') || audioTest.canPlayType('audio/aac;')).replace(/^no$/, ''),\n weba: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n webm: !!(!isOldSafari && audioTest.canPlayType('audio/webm; codecs=\"vorbis\"').replace(/^no$/, '')),\n dolby: !!audioTest.canPlayType('audio/mp4; codecs=\"ec-3\"').replace(/^no$/, ''),\n flac: !!(audioTest.canPlayType('audio/x-flac;') || audioTest.canPlayType('audio/flac;')).replace(/^no$/, '')\n };\n\n return self;\n },\n\n /**\n * Some browsers/devices will only allow audio to be played after a user interaction.\n * Attempt to automatically unlock audio on the first user interaction.\n * Concept from: http://paulbakaus.com/tutorials/html5/web-audio-on-ios/\n * @return {Howler}\n */\n _unlockAudio: function() {\n var self = this || Howler;\n\n // Only run this if Web Audio is supported and it hasn't already been unlocked.\n if (self._audioUnlocked || !self.ctx) {\n return;\n }\n\n self._audioUnlocked = false;\n self.autoUnlock = false;\n\n // Some mobile devices/platforms have distortion issues when opening/closing tabs and/or web views.\n // Bugs in the browser (especially Mobile Safari) can cause the sampleRate to change from 44100 to 48000.\n // By calling Howler.unload(), we create a new AudioContext with the correct sampleRate.\n if (!self._mobileUnloaded && self.ctx.sampleRate !== 44100) {\n self._mobileUnloaded = true;\n self.unload();\n }\n\n // Scratch buffer for enabling iOS to dispose of web audio buffers correctly, as per:\n // http://stackoverflow.com/questions/24119684\n self._scratchBuffer = self.ctx.createBuffer(1, 1, 22050);\n\n // Call this method on touch start to create and play a buffer,\n // then check if the audio actually played to determine if\n // audio has now been unlocked on iOS, Android, etc.\n var unlock = function(e) {\n // Create a pool of unlocked HTML5 Audio objects that can\n // be used for playing sounds without user interaction. HTML5\n // Audio objects must be individually unlocked, as opposed\n // to the WebAudio API which only needs a single activation.\n // This must occur before WebAudio setup or the source.onended\n // event will not fire.\n while (self._html5AudioPool.length < self.html5PoolSize) {\n try {\n var audioNode = new Audio();\n\n // Mark this Audio object as unlocked to ensure it can get returned\n // to the unlocked pool when released.\n audioNode._unlocked = true;\n\n // Add the audio node to the pool.\n self._releaseHtml5Audio(audioNode);\n } catch (e) {\n self.noAudio = true;\n break;\n }\n }\n\n // Loop through any assigned audio nodes and unlock them.\n for (var i=0; i= 55.\n if (typeof self.ctx.resume === 'function') {\n self.ctx.resume();\n }\n\n // Setup a timeout to check that we are unlocked on the next event loop.\n source.onended = function() {\n source.disconnect(0);\n\n // Update the unlocked state and prevent this check from happening again.\n self._audioUnlocked = true;\n\n // Remove the touch start listener.\n document.removeEventListener('touchstart', unlock, true);\n document.removeEventListener('touchend', unlock, true);\n document.removeEventListener('click', unlock, true);\n document.removeEventListener('keydown', unlock, true);\n\n // Let all sounds know that audio has been unlocked.\n for (var i=0; i 0 ? sound._seek : self._sprite[sprite][0] / 1000);\n var duration = Math.max(0, ((self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000) - seek);\n var timeout = (duration * 1000) / Math.abs(sound._rate);\n var start = self._sprite[sprite][0] / 1000;\n var stop = (self._sprite[sprite][0] + self._sprite[sprite][1]) / 1000;\n sound._sprite = sprite;\n\n // Mark the sound as ended instantly so that this async playback\n // doesn't get grabbed by another call to play while this one waits to start.\n sound._ended = false;\n\n // Update the parameters of the sound.\n var setParams = function() {\n sound._paused = false;\n sound._seek = seek;\n sound._start = start;\n sound._stop = stop;\n sound._loop = !!(sound._loop || self._sprite[sprite][2]);\n };\n\n // End the sound instantly if seek is at the end.\n if (seek >= stop) {\n self._ended(sound);\n return;\n }\n\n // Begin the actual playback.\n var node = sound._node;\n if (self._webAudio) {\n // Fire this when the sound is ready to play to begin Web Audio playback.\n var playWebAudio = function() {\n self._playLock = false;\n setParams();\n self._refreshBuffer(sound);\n\n // Setup the playback params.\n var vol = (sound._muted || self._muted) ? 0 : sound._volume;\n node.gain.setValueAtTime(vol, Howler.ctx.currentTime);\n sound._playStart = Howler.ctx.currentTime;\n\n // Play the sound using the supported method.\n if (typeof node.bufferSource.start === 'undefined') {\n sound._loop ? node.bufferSource.noteGrainOn(0, seek, 86400) : node.bufferSource.noteGrainOn(0, seek, duration);\n } else {\n sound._loop ? node.bufferSource.start(0, seek, 86400) : node.bufferSource.start(0, seek, duration);\n }\n\n // Start a new timer if none is present.\n if (timeout !== Infinity) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n if (!internal) {\n setTimeout(function() {\n self._emit('play', sound._id);\n self._loadQueue();\n }, 0);\n }\n };\n\n if (Howler.state === 'running' && Howler.ctx.state !== 'interrupted') {\n playWebAudio();\n } else {\n self._playLock = true;\n\n // Wait for the audio context to resume before playing.\n self.once('resume', playWebAudio);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n } else {\n // Fire this when the sound is ready to play to begin HTML5 Audio playback.\n var playHtml5 = function() {\n node.currentTime = seek;\n node.muted = sound._muted || self._muted || Howler._muted || node.muted;\n node.volume = sound._volume * Howler.volume();\n node.playbackRate = sound._rate;\n\n // Some browsers will throw an error if this is called without user interaction.\n try {\n var play = node.play();\n\n // Support older browsers that don't support promises, and thus don't have this issue.\n if (play && typeof Promise !== 'undefined' && (play instanceof Promise || typeof play.then === 'function')) {\n // Implements a lock to prevent DOMException: The play() request was interrupted by a call to pause().\n self._playLock = true;\n\n // Set param values immediately.\n setParams();\n\n // Releases the lock and executes queued actions.\n play\n .then(function() {\n self._playLock = false;\n node._unlocked = true;\n if (!internal) {\n self._emit('play', sound._id);\n } else {\n self._loadQueue();\n }\n })\n .catch(function() {\n self._playLock = false;\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n\n // Reset the ended and paused values.\n sound._ended = true;\n sound._paused = true;\n });\n } else if (!internal) {\n self._playLock = false;\n setParams();\n self._emit('play', sound._id);\n }\n\n // Setting rate before playing won't work in IE, so we set it again here.\n node.playbackRate = sound._rate;\n\n // If the node is still paused, then we can assume there was a playback issue.\n if (node.paused) {\n self._emit('playerror', sound._id, 'Playback was unable to start. This is most commonly an issue ' +\n 'on mobile devices and Chrome where playback was not within a user interaction.');\n return;\n }\n\n // Setup the end timer on sprites or listen for the ended event.\n if (sprite !== '__default' || sound._loop) {\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n } else {\n self._endTimers[sound._id] = function() {\n // Fire ended on this audio node.\n self._ended(sound);\n\n // Clear this listener.\n node.removeEventListener('ended', self._endTimers[sound._id], false);\n };\n node.addEventListener('ended', self._endTimers[sound._id], false);\n }\n } catch (err) {\n self._emit('playerror', sound._id, err);\n }\n };\n\n // If this is streaming audio, make sure the src is set and load again.\n if (node.src === 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA') {\n node.src = self._src;\n node.load();\n }\n\n // Play immediately if ready, or wait for the 'canplaythrough'e vent.\n var loadedNoReadyState = (window && window.ejecta) || (!node.readyState && Howler._navigator.isCocoonJS);\n if (node.readyState >= 3 || loadedNoReadyState) {\n playHtml5();\n } else {\n self._playLock = true;\n self._state = 'loading';\n\n var listener = function() {\n self._state = 'loaded';\n \n // Begin playback.\n playHtml5();\n\n // Clear this listener.\n node.removeEventListener(Howler._canPlayEvent, listener, false);\n };\n node.addEventListener(Howler._canPlayEvent, listener, false);\n\n // Cancel the end timer.\n self._clearTimer(sound._id);\n }\n }\n\n return sound._id;\n },\n\n /**\n * Pause playback and save current position.\n * @param {Number} id The sound ID (empty to pause all in group).\n * @return {Howl}\n */\n pause: function(id) {\n var self = this;\n\n // If the sound hasn't loaded or a play() promise is pending, add it to the load queue to pause when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'pause',\n action: function() {\n self.pause(id);\n }\n });\n\n return self;\n }\n\n // If no id is passed, get all ID's to be paused.\n var ids = self._getSoundIds(id);\n\n for (var i=0; i Returns the group's volume value.\n * volume(id) -> Returns the sound id's current volume.\n * volume(vol) -> Sets the volume of all sounds in this Howl group.\n * volume(vol, id) -> Sets the volume of passed sound id.\n * @return {Howl/Number} Returns self or current volume.\n */\n volume: function() {\n var self = this;\n var args = arguments;\n var vol, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the value of the groups' volume.\n return self._volume;\n } else if (args.length === 1 || args.length === 2 && typeof args[1] === 'undefined') {\n // First check if this is an ID, and if not, assume it is a new volume.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n vol = parseFloat(args[0]);\n }\n } else if (args.length >= 2) {\n vol = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the volume or return the current volume.\n var sound;\n if (typeof vol !== 'undefined' && vol >= 0 && vol <= 1) {\n // If the sound hasn't loaded, add it to the load queue to change volume when capable.\n if (self._state !== 'loaded'|| self._playLock) {\n self._queue.push({\n event: 'volume',\n action: function() {\n self.volume.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group volume.\n if (typeof id === 'undefined') {\n self._volume = vol;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i 0) ? len / steps : len);\n var lastTick = Date.now();\n\n // Store the value being faded to.\n sound._fadeTo = to;\n\n // Update the volume value on each interval tick.\n sound._interval = setInterval(function() {\n // Update the volume based on the time since the last tick.\n var tick = (Date.now() - lastTick) / len;\n lastTick = Date.now();\n vol += diff * tick;\n\n // Round to within 2 decimal points.\n vol = Math.round(vol * 100) / 100;\n\n // Make sure the volume is in the right bounds.\n if (diff < 0) {\n vol = Math.max(to, vol);\n } else {\n vol = Math.min(to, vol);\n }\n\n // Change the volume.\n if (self._webAudio) {\n sound._volume = vol;\n } else {\n self.volume(vol, sound._id, true);\n }\n\n // Set the group's volume.\n if (isGroup) {\n self._volume = vol;\n }\n\n // When the fade is complete, stop it and fire event.\n if ((to < from && vol <= to) || (to > from && vol >= to)) {\n clearInterval(sound._interval);\n sound._interval = null;\n sound._fadeTo = null;\n self.volume(to, sound._id);\n self._emit('fade', sound._id);\n }\n }, stepLen);\n },\n\n /**\n * Internal method that stops the currently playing fade when\n * a new fade starts, volume is changed or the sound is stopped.\n * @param {Number} id The sound id.\n * @return {Howl}\n */\n _stopFade: function(id) {\n var self = this;\n var sound = self._soundById(id);\n\n if (sound && sound._interval) {\n if (self._webAudio) {\n sound._node.gain.cancelScheduledValues(Howler.ctx.currentTime);\n }\n\n clearInterval(sound._interval);\n sound._interval = null;\n self.volume(sound._fadeTo, id);\n sound._fadeTo = null;\n self._emit('fade', id);\n }\n\n return self;\n },\n\n /**\n * Get/set the loop parameter on a sound. This method can optionally take 0, 1 or 2 arguments.\n * loop() -> Returns the group's loop value.\n * loop(id) -> Returns the sound id's loop value.\n * loop(loop) -> Sets the loop value for all sounds in this Howl group.\n * loop(loop, id) -> Sets the loop value of passed sound id.\n * @return {Howl/Boolean} Returns self or current loop value.\n */\n loop: function() {\n var self = this;\n var args = arguments;\n var loop, id, sound;\n\n // Determine the values for loop and id.\n if (args.length === 0) {\n // Return the grou's loop value.\n return self._loop;\n } else if (args.length === 1) {\n if (typeof args[0] === 'boolean') {\n loop = args[0];\n self._loop = loop;\n } else {\n // Return this sound's loop value.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._loop : false;\n }\n } else if (args.length === 2) {\n loop = args[0];\n id = parseInt(args[1], 10);\n }\n\n // If no id is passed, get all ID's to be looped.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current playback rate.\n * rate(id) -> Returns the sound id's current playback rate.\n * rate(rate) -> Sets the playback rate of all sounds in this Howl group.\n * rate(rate, id) -> Sets the playback rate of passed sound id.\n * @return {Howl/Number} Returns self or the current playback rate.\n */\n rate: function() {\n var self = this;\n var args = arguments;\n var rate, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current rate of the first node.\n id = self._sounds[0]._id;\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new rate value.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else {\n rate = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n rate = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // Update the playback rate or return the current value.\n var sound;\n if (typeof rate === 'number') {\n // If the sound hasn't loaded, add it to the load queue to change playback rate when capable.\n if (self._state !== 'loaded' || self._playLock) {\n self._queue.push({\n event: 'rate',\n action: function() {\n self.rate.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Set the group rate.\n if (typeof id === 'undefined') {\n self._rate = rate;\n }\n\n // Update one or all volumes.\n id = self._getSoundIds(id);\n for (var i=0; i Returns the first sound node's current seek position.\n * seek(id) -> Returns the sound id's current seek position.\n * seek(seek) -> Sets the seek position of the first sound node.\n * seek(seek, id) -> Sets the seek position of passed sound id.\n * @return {Howl/Number} Returns self or the current seek position.\n */\n seek: function() {\n var self = this;\n var args = arguments;\n var seek, id;\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // We will simply return the current position of the first node.\n if (self._sounds.length) {\n id = self._sounds[0]._id;\n }\n } else if (args.length === 1) {\n // First check if this is an ID, and if not, assume it is a new seek position.\n var ids = self._getSoundIds();\n var index = ids.indexOf(args[0]);\n if (index >= 0) {\n id = parseInt(args[0], 10);\n } else if (self._sounds.length) {\n id = self._sounds[0]._id;\n seek = parseFloat(args[0]);\n }\n } else if (args.length === 2) {\n seek = parseFloat(args[0]);\n id = parseInt(args[1], 10);\n }\n\n // If there is no ID, bail out.\n if (typeof id === 'undefined') {\n return 0;\n }\n\n // If the sound hasn't loaded, add it to the load queue to seek when capable.\n if (typeof seek === 'number' && (self._state !== 'loaded' || self._playLock)) {\n self._queue.push({\n event: 'seek',\n action: function() {\n self.seek.apply(self, args);\n }\n });\n\n return self;\n }\n\n // Get the sound.\n var sound = self._soundById(id);\n\n if (sound) {\n if (typeof seek === 'number' && seek >= 0) {\n // Pause the sound and update position for restarting playback.\n var playing = self.playing(id);\n if (playing) {\n self.pause(id, true);\n }\n\n // Move the position of the track and cancel timer.\n sound._seek = seek;\n sound._ended = false;\n self._clearTimer(id);\n\n // Update the seek position for HTML5 Audio.\n if (!self._webAudio && sound._node && !isNaN(sound._node.duration)) {\n sound._node.currentTime = seek;\n }\n\n // Seek and emit when ready.\n var seekAndEmit = function() {\n // Restart the playback if the sound was playing.\n if (playing) {\n self.play(id, true);\n }\n\n self._emit('seek', id);\n };\n\n // Wait for the play lock to be unset before emitting (HTML5 Audio).\n if (playing && !self._webAudio) {\n var emitSeek = function() {\n if (!self._playLock) {\n seekAndEmit();\n } else {\n setTimeout(emitSeek, 0);\n }\n };\n setTimeout(emitSeek, 0);\n } else {\n seekAndEmit();\n }\n } else {\n if (self._webAudio) {\n var realTime = self.playing(id) ? Howler.ctx.currentTime - sound._playStart : 0;\n var rateSeek = sound._rateSeek ? sound._rateSeek - sound._seek : 0;\n return sound._seek + (rateSeek + realTime * Math.abs(sound._rate));\n } else {\n return sound._node.currentTime;\n }\n }\n }\n\n return self;\n },\n\n /**\n * Check if a specific sound is currently playing or not (if id is provided), or check if at least one of the sounds in the group is playing or not.\n * @param {Number} id The sound id to check. If none is passed, the whole sound group is checked.\n * @return {Boolean} True if playing and false if not.\n */\n playing: function(id) {\n var self = this;\n\n // Check the passed sound ID (if any).\n if (typeof id === 'number') {\n var sound = self._soundById(id);\n return sound ? !sound._paused : false;\n }\n\n // Otherwise, loop through all sounds and check if any are playing.\n for (var i=0; i= 0) {\n Howler._howls.splice(index, 1);\n }\n\n // Delete this sound from the cache (if no other Howl is using it).\n var remCache = true;\n for (i=0; i= 0) {\n remCache = false;\n break;\n }\n }\n\n if (cache && remCache) {\n delete cache[self._src];\n }\n\n // Clear global errors.\n Howler.noAudio = false;\n\n // Clear out `self`.\n self._state = 'unloaded';\n self._sounds = [];\n self = null;\n\n return null;\n },\n\n /**\n * Listen to a custom event.\n * @param {String} event Event name.\n * @param {Function} fn Listener to call.\n * @param {Number} id (optional) Only listen to events for this sound.\n * @param {Number} once (INTERNAL) Marks event to fire only once.\n * @return {Howl}\n */\n on: function(event, fn, id, once) {\n var self = this;\n var events = self['_on' + event];\n\n if (typeof fn === 'function') {\n events.push(once ? {id: id, fn: fn, once: once} : {id: id, fn: fn});\n }\n\n return self;\n },\n\n /**\n * Remove a custom event. Call without parameters to remove all events.\n * @param {String} event Event name.\n * @param {Function} fn Listener to remove. Leave empty to remove all.\n * @param {Number} id (optional) Only remove events for this sound.\n * @return {Howl}\n */\n off: function(event, fn, id) {\n var self = this;\n var events = self['_on' + event];\n var i = 0;\n\n // Allow passing just an event and ID.\n if (typeof fn === 'number') {\n id = fn;\n fn = null;\n }\n\n if (fn || id) {\n // Loop through event store and remove the passed function.\n for (i=0; i=0; i--) {\n // Only fire the listener if the correct ID is used.\n if (!events[i].id || events[i].id === id || event === 'load') {\n setTimeout(function(fn) {\n fn.call(this, id, msg);\n }.bind(self, events[i].fn), 0);\n\n // If this event was setup with `once`, remove it.\n if (events[i].once) {\n self.off(event, events[i].fn, events[i].id);\n }\n }\n }\n\n // Pass the event type into load queue so that it can continue stepping.\n self._loadQueue(event);\n\n return self;\n },\n\n /**\n * Queue of actions initiated before the sound has loaded.\n * These will be called in sequence, with the next only firing\n * after the previous has finished executing (even if async like play).\n * @return {Howl}\n */\n _loadQueue: function(event) {\n var self = this;\n\n if (self._queue.length > 0) {\n var task = self._queue[0];\n\n // Remove this task if a matching event was passed.\n if (task.event === event) {\n self._queue.shift();\n self._loadQueue();\n }\n\n // Run the task if no event type is passed.\n if (!event) {\n task.action();\n }\n }\n\n return self;\n },\n\n /**\n * Fired when playback ends at the end of the duration.\n * @param {Sound} sound The sound object to work with.\n * @return {Howl}\n */\n _ended: function(sound) {\n var self = this;\n var sprite = sound._sprite;\n\n // If we are using IE and there was network latency we may be clipping\n // audio before it completes playing. Lets check the node to make sure it\n // believes it has completed, before ending the playback.\n if (!self._webAudio && sound._node && !sound._node.paused && !sound._node.ended && sound._node.currentTime < sound._stop) {\n setTimeout(self._ended.bind(self, sound), 100);\n return self;\n }\n\n // Should this sound loop?\n var loop = !!(sound._loop || self._sprite[sprite][2]);\n\n // Fire the ended event.\n self._emit('end', sound._id);\n\n // Restart the playback for HTML5 Audio loop.\n if (!self._webAudio && loop) {\n self.stop(sound._id, true).play(sound._id);\n }\n\n // Restart this timer if on a Web Audio loop.\n if (self._webAudio && loop) {\n self._emit('play', sound._id);\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n sound._playStart = Howler.ctx.currentTime;\n\n var timeout = ((sound._stop - sound._start) * 1000) / Math.abs(sound._rate);\n self._endTimers[sound._id] = setTimeout(self._ended.bind(self, sound), timeout);\n }\n\n // Mark the node as paused.\n if (self._webAudio && !loop) {\n sound._paused = true;\n sound._ended = true;\n sound._seek = sound._start || 0;\n sound._rateSeek = 0;\n self._clearTimer(sound._id);\n\n // Clean up the buffer source.\n self._cleanBuffer(sound._node);\n\n // Attempt to auto-suspend AudioContext if no sounds are still playing.\n Howler._autoSuspend();\n }\n\n // When using a sprite, end the track.\n if (!self._webAudio && !loop) {\n self.stop(sound._id, true);\n }\n\n return self;\n },\n\n /**\n * Clear the end timer for a sound playback.\n * @param {Number} id The sound ID.\n * @return {Howl}\n */\n _clearTimer: function(id) {\n var self = this;\n\n if (self._endTimers[id]) {\n // Clear the timeout or remove the ended listener.\n if (typeof self._endTimers[id] !== 'function') {\n clearTimeout(self._endTimers[id]);\n } else {\n var sound = self._soundById(id);\n if (sound && sound._node) {\n sound._node.removeEventListener('ended', self._endTimers[id], false);\n }\n }\n\n delete self._endTimers[id];\n }\n\n return self;\n },\n\n /**\n * Return the sound identified by this ID, or return null.\n * @param {Number} id Sound ID\n * @return {Object} Sound object or null.\n */\n _soundById: function(id) {\n var self = this;\n\n // Loop through all sounds and find the one with this ID.\n for (var i=0; i=0; i--) {\n if (cnt <= limit) {\n return;\n }\n\n if (self._sounds[i]._ended) {\n // Disconnect the audio source when using Web Audio.\n if (self._webAudio && self._sounds[i]._node) {\n self._sounds[i]._node.disconnect(0);\n }\n\n // Remove sounds until we have the pool size.\n self._sounds.splice(i, 1);\n cnt--;\n }\n }\n },\n\n /**\n * Get all ID's from the sounds pool.\n * @param {Number} id Only return one ID if one is passed.\n * @return {Array} Array of IDs.\n */\n _getSoundIds: function(id) {\n var self = this;\n\n if (typeof id === 'undefined') {\n var ids = [];\n for (var i=0; i= 0;\n\n if (!node.bufferSource) {\n return self;\n }\n\n if (Howler._scratchBuffer && node.bufferSource) {\n node.bufferSource.onended = null;\n node.bufferSource.disconnect(0);\n if (isIOS) {\n try { node.bufferSource.buffer = Howler._scratchBuffer; } catch(e) {}\n }\n }\n node.bufferSource = null;\n\n return self;\n },\n\n /**\n * Set the source to a 0-second silence to stop any downloading (except in IE).\n * @param {Object} node Audio node to clear.\n */\n _clearSound: function(node) {\n var checkIE = /MSIE |Trident\\//.test(Howler._navigator && Howler._navigator.userAgent);\n if (!checkIE) {\n node.src = 'data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA';\n }\n }\n };\n\n /** Single Sound Methods **/\n /***************************************************************************/\n\n /**\n * Setup the sound object, which each node attached to a Howl group is contained in.\n * @param {Object} howl The Howl parent group.\n */\n var Sound = function(howl) {\n this._parent = howl;\n this.init();\n };\n Sound.prototype = {\n /**\n * Initialize a new Sound object.\n * @return {Sound}\n */\n init: function() {\n var self = this;\n var parent = self._parent;\n\n // Setup the default parameters.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a unique ID for this sound.\n self._id = ++Howler._counter;\n\n // Add itself to the parent's pool.\n parent._sounds.push(self);\n\n // Create the new node.\n self.create();\n\n return self;\n },\n\n /**\n * Create and setup a new sound object, whether HTML5 Audio or Web Audio.\n * @return {Sound}\n */\n create: function() {\n var self = this;\n var parent = self._parent;\n var volume = (Howler._muted || self._muted || self._parent._muted) ? 0 : self._volume;\n\n if (parent._webAudio) {\n // Create the gain node for controlling volume (the source will connect to this).\n self._node = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n self._node.gain.setValueAtTime(volume, Howler.ctx.currentTime);\n self._node.paused = true;\n self._node.connect(Howler.masterGain);\n } else if (!Howler.noAudio) {\n // Get an unlocked Audio object from the pool.\n self._node = Howler._obtainHtml5Audio();\n\n // Listen for errors (http://dev.w3.org/html5/spec-author-view/spec.html#mediaerror).\n self._errorFn = self._errorListener.bind(self);\n self._node.addEventListener('error', self._errorFn, false);\n\n // Listen for 'canplaythrough' event to let us know the sound is ready.\n self._loadFn = self._loadListener.bind(self);\n self._node.addEventListener(Howler._canPlayEvent, self._loadFn, false);\n\n // Listen for the 'ended' event on the sound to account for edge-case where\n // a finite sound has a duration of Infinity.\n self._endFn = self._endListener.bind(self);\n self._node.addEventListener('ended', self._endFn, false);\n\n // Setup the new audio node.\n self._node.src = parent._src;\n self._node.preload = parent._preload === true ? 'auto' : parent._preload;\n self._node.volume = volume * Howler.volume();\n\n // Begin loading the source.\n self._node.load();\n }\n\n return self;\n },\n\n /**\n * Reset the parameters of this sound to the original state (for recycle).\n * @return {Sound}\n */\n reset: function() {\n var self = this;\n var parent = self._parent;\n\n // Reset all of the parameters of this sound.\n self._muted = parent._muted;\n self._loop = parent._loop;\n self._volume = parent._volume;\n self._rate = parent._rate;\n self._seek = 0;\n self._rateSeek = 0;\n self._paused = true;\n self._ended = true;\n self._sprite = '__default';\n\n // Generate a new ID so that it isn't confused with the previous sound.\n self._id = ++Howler._counter;\n\n return self;\n },\n\n /**\n * HTML5 Audio error listener callback.\n */\n _errorListener: function() {\n var self = this;\n\n // Fire an error event and pass back the code.\n self._parent._emit('loaderror', self._id, self._node.error ? self._node.error.code : 0);\n\n // Clear the event listener.\n self._node.removeEventListener('error', self._errorFn, false);\n },\n\n /**\n * HTML5 Audio canplaythrough listener callback.\n */\n _loadListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Setup a sprite if none is defined.\n if (Object.keys(parent._sprite).length === 0) {\n parent._sprite = {__default: [0, parent._duration * 1000]};\n }\n\n if (parent._state !== 'loaded') {\n parent._state = 'loaded';\n parent._emit('load');\n parent._loadQueue();\n }\n\n // Clear the event listener.\n self._node.removeEventListener(Howler._canPlayEvent, self._loadFn, false);\n },\n\n /**\n * HTML5 Audio ended listener callback.\n */\n _endListener: function() {\n var self = this;\n var parent = self._parent;\n\n // Only handle the `ended`` event if the duration is Infinity.\n if (parent._duration === Infinity) {\n // Update the parent duration to match the real audio duration.\n // Round up the duration to account for the lower precision in HTML5 Audio.\n parent._duration = Math.ceil(self._node.duration * 10) / 10;\n\n // Update the sprite that corresponds to the real duration.\n if (parent._sprite.__default[1] === Infinity) {\n parent._sprite.__default[1] = parent._duration * 1000;\n }\n\n // Run the regular ended method.\n parent._ended(self);\n }\n\n // Clear the event listener since the duration is now correct.\n self._node.removeEventListener('ended', self._endFn, false);\n }\n };\n\n /** Helper Methods **/\n /***************************************************************************/\n\n var cache = {};\n\n /**\n * Buffer a sound from URL, Data URI or cache and decode to audio source (Web Audio API).\n * @param {Howl} self\n */\n var loadBuffer = function(self) {\n var url = self._src;\n\n // Check if the buffer has already been cached and use it instead.\n if (cache[url]) {\n // Set the duration from the cache.\n self._duration = cache[url].duration;\n\n // Load the sound into this Howl.\n loadSound(self);\n\n return;\n }\n\n if (/^data:[^;]+;base64,/.test(url)) {\n // Decode the base64 data URI without XHR, since some browsers don't support it.\n var data = atob(url.split(',')[1]);\n var dataView = new Uint8Array(data.length);\n for (var i=0; i 0) {\n cache[self._src] = buffer;\n loadSound(self, buffer);\n } else {\n error();\n }\n };\n\n // Decode the buffer into an audio source.\n if (typeof Promise !== 'undefined' && Howler.ctx.decodeAudioData.length === 1) {\n Howler.ctx.decodeAudioData(arraybuffer).then(success).catch(error);\n } else {\n Howler.ctx.decodeAudioData(arraybuffer, success, error);\n }\n }\n\n /**\n * Sound is now loaded, so finish setting everything up and fire the loaded event.\n * @param {Howl} self\n * @param {Object} buffer The decoded buffer sound source.\n */\n var loadSound = function(self, buffer) {\n // Set the duration.\n if (buffer && !self._duration) {\n self._duration = buffer.duration;\n }\n\n // Setup a sprite if none is defined.\n if (Object.keys(self._sprite).length === 0) {\n self._sprite = {__default: [0, self._duration * 1000]};\n }\n\n // Fire the loaded event.\n if (self._state !== 'loaded') {\n self._state = 'loaded';\n self._emit('load');\n self._loadQueue();\n }\n };\n\n /**\n * Setup the audio context when available, or switch to HTML5 Audio mode.\n */\n var setupAudioContext = function() {\n // If we have already detected that Web Audio isn't supported, don't run this step again.\n if (!Howler.usingWebAudio) {\n return;\n }\n\n // Check if we are using Web Audio and setup the AudioContext if we are.\n try {\n if (typeof AudioContext !== 'undefined') {\n Howler.ctx = new AudioContext();\n } else if (typeof webkitAudioContext !== 'undefined') {\n Howler.ctx = new webkitAudioContext();\n } else {\n Howler.usingWebAudio = false;\n }\n } catch(e) {\n Howler.usingWebAudio = false;\n }\n\n // If the audio context creation still failed, set using web audio to false.\n if (!Howler.ctx) {\n Howler.usingWebAudio = false;\n }\n\n // Check if a webview is being used on iOS8 or earlier (rather than the browser).\n // If it is, disable Web Audio as it causes crashing.\n var iOS = (/iP(hone|od|ad)/.test(Howler._navigator && Howler._navigator.platform));\n var appVersion = Howler._navigator && Howler._navigator.appVersion.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n var version = appVersion ? parseInt(appVersion[1], 10) : null;\n if (iOS && version && version < 9) {\n var safari = /safari/.test(Howler._navigator && Howler._navigator.userAgent.toLowerCase());\n if (Howler._navigator && !safari) {\n Howler.usingWebAudio = false;\n }\n }\n\n // Create and expose the master GainNode when using Web Audio (useful for plugins or advanced usage).\n if (Howler.usingWebAudio) {\n Howler.masterGain = (typeof Howler.ctx.createGain === 'undefined') ? Howler.ctx.createGainNode() : Howler.ctx.createGain();\n Howler.masterGain.gain.setValueAtTime(Howler._muted ? 0 : Howler._volume, Howler.ctx.currentTime);\n Howler.masterGain.connect(Howler.ctx.destination);\n }\n\n // Re-run the setup on Howler.\n Howler._setup();\n };\n\n // Add support for AMD (Asynchronous Module Definition) libraries such as require.js.\n if (typeof define === 'function' && define.amd) {\n define([], function() {\n return {\n Howler: Howler,\n Howl: Howl\n };\n });\n }\n\n // Add support for CommonJS libraries such as browserify.\n if (typeof exports !== 'undefined') {\n exports.Howler = Howler;\n exports.Howl = Howl;\n }\n\n // Add to global in Node.js (for testing, etc).\n if (typeof global !== 'undefined') {\n global.HowlerGlobal = HowlerGlobal;\n global.Howler = Howler;\n global.Howl = Howl;\n global.Sound = Sound;\n } else if (typeof window !== 'undefined') { // Define globally in case AMD is not available or unused.\n window.HowlerGlobal = HowlerGlobal;\n window.Howler = Howler;\n window.Howl = Howl;\n window.Sound = Sound;\n }\n})();\n\n\n/*!\n * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported.\n * \n * howler.js v2.2.4\n * howlerjs.com\n *\n * (c) 2013-2020, James Simpson of GoldFire Studios\n * goldfirestudios.com\n *\n * MIT License\n */\n\n(function() {\n\n 'use strict';\n\n // Setup default properties.\n HowlerGlobal.prototype._pos = [0, 0, 0];\n HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0];\n\n /** Global Methods **/\n /***************************************************************************/\n\n /**\n * Helper method to update the stereo panning position of all current Howls.\n * Future Howls will not use this value unless explicitly set.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @return {Howler/Number} Self or current stereo panning value.\n */\n HowlerGlobal.prototype.stereo = function(pan) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Loop through all Howls and update their stereo panning.\n for (var i=self._howls.length-1; i>=0; i--) {\n self._howls[i].stereo(pan);\n }\n\n return self;\n };\n\n /**\n * Get/set the position of the listener in 3D cartesian space. Sounds using\n * 3D position will be relative to the listener's position.\n * @param {Number} x The x-position of the listener.\n * @param {Number} y The y-position of the listener.\n * @param {Number} z The z-position of the listener.\n * @return {Howler/Array} Self or current listener position.\n */\n HowlerGlobal.prototype.pos = function(x, y, z) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n y = (typeof y !== 'number') ? self._pos[1] : y;\n z = (typeof z !== 'number') ? self._pos[2] : z;\n\n if (typeof x === 'number') {\n self._pos = [x, y, z];\n\n if (typeof self.ctx.listener.positionX !== 'undefined') {\n self.ctx.listener.positionX.setTargetAtTime(self._pos[0], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionY.setTargetAtTime(self._pos[1], Howler.ctx.currentTime, 0.1);\n self.ctx.listener.positionZ.setTargetAtTime(self._pos[2], Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setPosition(self._pos[0], self._pos[1], self._pos[2]);\n }\n } else {\n return self._pos;\n }\n\n return self;\n };\n\n /**\n * Get/set the direction the listener is pointing in the 3D cartesian space.\n * A front and up vector must be provided. The front is the direction the\n * face of the listener is pointing, and up is the direction the top of the\n * listener is pointing. Thus, these values are expected to be at right angles\n * from each other.\n * @param {Number} x The x-orientation of the listener.\n * @param {Number} y The y-orientation of the listener.\n * @param {Number} z The z-orientation of the listener.\n * @param {Number} xUp The x-orientation of the top of the listener.\n * @param {Number} yUp The y-orientation of the top of the listener.\n * @param {Number} zUp The z-orientation of the top of the listener.\n * @return {Howler/Array} Returns self or the current orientation vectors.\n */\n HowlerGlobal.prototype.orientation = function(x, y, z, xUp, yUp, zUp) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self.ctx || !self.ctx.listener) {\n return self;\n }\n\n // Set the defaults for optional 'y' & 'z'.\n var or = self._orientation;\n y = (typeof y !== 'number') ? or[1] : y;\n z = (typeof z !== 'number') ? or[2] : z;\n xUp = (typeof xUp !== 'number') ? or[3] : xUp;\n yUp = (typeof yUp !== 'number') ? or[4] : yUp;\n zUp = (typeof zUp !== 'number') ? or[5] : zUp;\n\n if (typeof x === 'number') {\n self._orientation = [x, y, z, xUp, yUp, zUp];\n\n if (typeof self.ctx.listener.forwardX !== 'undefined') {\n self.ctx.listener.forwardX.setTargetAtTime(x, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardY.setTargetAtTime(y, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.forwardZ.setTargetAtTime(z, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upX.setTargetAtTime(xUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upY.setTargetAtTime(yUp, Howler.ctx.currentTime, 0.1);\n self.ctx.listener.upZ.setTargetAtTime(zUp, Howler.ctx.currentTime, 0.1);\n } else {\n self.ctx.listener.setOrientation(x, y, z, xUp, yUp, zUp);\n }\n } else {\n return or;\n }\n\n return self;\n };\n\n /** Group Methods **/\n /***************************************************************************/\n\n /**\n * Add new properties to the core init.\n * @param {Function} _super Core init method.\n * @return {Howl}\n */\n Howl.prototype.init = (function(_super) {\n return function(o) {\n var self = this;\n\n // Setup user-defined default properties.\n self._orientation = o.orientation || [1, 0, 0];\n self._stereo = o.stereo || null;\n self._pos = o.pos || null;\n self._pannerAttr = {\n coneInnerAngle: typeof o.coneInnerAngle !== 'undefined' ? o.coneInnerAngle : 360,\n coneOuterAngle: typeof o.coneOuterAngle !== 'undefined' ? o.coneOuterAngle : 360,\n coneOuterGain: typeof o.coneOuterGain !== 'undefined' ? o.coneOuterGain : 0,\n distanceModel: typeof o.distanceModel !== 'undefined' ? o.distanceModel : 'inverse',\n maxDistance: typeof o.maxDistance !== 'undefined' ? o.maxDistance : 10000,\n panningModel: typeof o.panningModel !== 'undefined' ? o.panningModel : 'HRTF',\n refDistance: typeof o.refDistance !== 'undefined' ? o.refDistance : 1,\n rolloffFactor: typeof o.rolloffFactor !== 'undefined' ? o.rolloffFactor : 1\n };\n\n // Setup event listeners.\n self._onstereo = o.onstereo ? [{fn: o.onstereo}] : [];\n self._onpos = o.onpos ? [{fn: o.onpos}] : [];\n self._onorientation = o.onorientation ? [{fn: o.onorientation}] : [];\n\n // Complete initilization with howler.js core's init function.\n return _super.call(this, o);\n };\n })(Howl.prototype.init);\n\n /**\n * Get/set the stereo panning of the audio source for this sound or all in the group.\n * @param {Number} pan A value of -1.0 is all the way left and 1.0 is all the way right.\n * @param {Number} id (optional) The sound ID. If none is passed, all in group will be updated.\n * @return {Howl/Number} Returns self or the current stereo panning value.\n */\n Howl.prototype.stereo = function(pan, id) {\n var self = this;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // If the sound hasn't loaded, add it to the load queue to change stereo pan when capable.\n if (self._state !== 'loaded') {\n self._queue.push({\n event: 'stereo',\n action: function() {\n self.stereo(pan, id);\n }\n });\n\n return self;\n }\n\n // Check for PannerStereoNode support and fallback to PannerNode if it doesn't exist.\n var pannerType = (typeof Howler.ctx.createStereoPanner === 'undefined') ? 'spatial' : 'stereo';\n\n // Setup the group's stereo panning if no ID is passed.\n if (typeof id === 'undefined') {\n // Return the group's stereo panning if no parameters are passed.\n if (typeof pan === 'number') {\n self._stereo = pan;\n self._pos = [pan, 0, 0];\n } else {\n return self._stereo;\n }\n }\n\n // Change the streo panning of one or all sounds in group.\n var ids = self._getSoundIds(id);\n for (var i=0; i Returns the group's values.\n * pannerAttr(id) -> Returns the sound id's values.\n * pannerAttr(o) -> Set's the values of all sounds in this Howl group.\n * pannerAttr(o, id) -> Set's the values of passed sound id.\n *\n * Attributes:\n * coneInnerAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * inside of which there will be no volume reduction.\n * coneOuterAngle - (360 by default) A parameter for directional audio sources, this is an angle, in degrees,\n * outside of which the volume will be reduced to a constant value of `coneOuterGain`.\n * coneOuterGain - (0 by default) A parameter for directional audio sources, this is the gain outside of the\n * `coneOuterAngle`. It is a linear value in the range `[0, 1]`.\n * distanceModel - ('inverse' by default) Determines algorithm used to reduce volume as audio moves away from\n * listener. Can be `linear`, `inverse` or `exponential.\n * maxDistance - (10000 by default) The maximum distance between source and listener, after which the volume\n * will not be reduced any further.\n * refDistance - (1 by default) A reference distance for reducing volume as source moves further from the listener.\n * This is simply a variable of the distance model and has a different effect depending on which model\n * is used and the scale of your coordinates. Generally, volume will be equal to 1 at this distance.\n * rolloffFactor - (1 by default) How quickly the volume reduces as source moves from listener. This is simply a\n * variable of the distance model and can be in the range of `[0, 1]` with `linear` and `[0, ∞]`\n * with `inverse` and `exponential`.\n * panningModel - ('HRTF' by default) Determines which spatialization algorithm is used to position audio.\n * Can be `HRTF` or `equalpower`.\n *\n * @return {Howl/Object} Returns self or current panner attributes.\n */\n Howl.prototype.pannerAttr = function() {\n var self = this;\n var args = arguments;\n var o, id, sound;\n\n // Stop right here if not using Web Audio.\n if (!self._webAudio) {\n return self;\n }\n\n // Determine the values based on arguments.\n if (args.length === 0) {\n // Return the group's panner attribute values.\n return self._pannerAttr;\n } else if (args.length === 1) {\n if (typeof args[0] === 'object') {\n o = args[0];\n\n // Set the grou's panner attribute values.\n if (typeof id === 'undefined') {\n if (!o.pannerAttr) {\n o.pannerAttr = {\n coneInnerAngle: o.coneInnerAngle,\n coneOuterAngle: o.coneOuterAngle,\n coneOuterGain: o.coneOuterGain,\n distanceModel: o.distanceModel,\n maxDistance: o.maxDistance,\n refDistance: o.refDistance,\n rolloffFactor: o.rolloffFactor,\n panningModel: o.panningModel\n };\n }\n\n self._pannerAttr = {\n coneInnerAngle: typeof o.pannerAttr.coneInnerAngle !== 'undefined' ? o.pannerAttr.coneInnerAngle : self._coneInnerAngle,\n coneOuterAngle: typeof o.pannerAttr.coneOuterAngle !== 'undefined' ? o.pannerAttr.coneOuterAngle : self._coneOuterAngle,\n coneOuterGain: typeof o.pannerAttr.coneOuterGain !== 'undefined' ? o.pannerAttr.coneOuterGain : self._coneOuterGain,\n distanceModel: typeof o.pannerAttr.distanceModel !== 'undefined' ? o.pannerAttr.distanceModel : self._distanceModel,\n maxDistance: typeof o.pannerAttr.maxDistance !== 'undefined' ? o.pannerAttr.maxDistance : self._maxDistance,\n refDistance: typeof o.pannerAttr.refDistance !== 'undefined' ? o.pannerAttr.refDistance : self._refDistance,\n rolloffFactor: typeof o.pannerAttr.rolloffFactor !== 'undefined' ? o.pannerAttr.rolloffFactor : self._rolloffFactor,\n panningModel: typeof o.pannerAttr.panningModel !== 'undefined' ? o.pannerAttr.panningModel : self._panningModel\n };\n }\n } else {\n // Return this sound's panner attribute values.\n sound = self._soundById(parseInt(args[0], 10));\n return sound ? sound._pannerAttr : self._pannerAttr;\n }\n } else if (args.length === 2) {\n o = args[0];\n id = parseInt(args[1], 10);\n }\n\n // Update the values of the specified sounds.\n var ids = self._getSoundIds(id);\n for (var i=0; i console.debug('Audio output successfully redirected to secondary speaker'))\n\t\t\t\t\t.catch((error) => console.error('Failed to redirect audio output:', error))\n\t\t\t\tsoundDuped.play()\n\t\t\t}\n\t\t}\n\t} else if (loadState('notifications', 'sound_notification')) {\n\t\tconst sound = new Howl({\n\t\t\tsrc: [generateFilePath('notifications', 'img', 'notification.ogg')],\n\t\t\tvolume: 0.5,\n\t\t})\n\n\t\tsound.play()\n\t}\n}\n\nexport {\n\tcreateWebNotification,\n}\n","\n\n\n\n\n\n"],"names":["_hoisted_1","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_main","defineComponent","__props","_ctx","_cache","openBlock","createElementBlock","renderSlot","createCommentVNode","toDisplayString","createTextVNode","NcEmptyContent","_export_sfc","props","timeOptions","computed","relativeTimeOptions","title","useFormatTime","toRef","relativeTime","useFormatRelativeTime","formattedTime","unref","__emit","emit","descriptionId","createElementId","triggerId","focusTrap","ref","isOpened","wrapperTag","contentContainerElement","useTemplateRef","headerMenuElement","triggerButtonInstance","ignore","onClickOutside","setMenuState","useHotKey","useTrapStackControl","watch","state","toggleMenu","nextTick","addFocusTrap","clearFocusTrap","onFocusOut","event","createFocusTrap","getTrapStack","createBlock","resolveDynamicComponent","normalizeClass","withCtx","createVNode","NcButton","withModifiers","withDirectives","createElementVNode","vShow","NcHeaderMenu","_sfc_main$1","_sfc_render","NcUserBubbleDiv","mergeModels","isOpen","useModel","isAvatarUrl","e","isCustomAvatar","avatarStyle","hasUrl","warn","href","contentComponent","RouterLink","contentStyle","NcPopover","$event","attrs","mergeProps","NcAvatar","normalizeStyle","NcUserBubble","exports","loadState","app","key","fallback","elem","i","require$$0","t","valid","major","require$$1","_interopDefault","valid__default","major__default","ProxyBus","bus2","__publicField","name","handler","SimpleBus","h","bus","getBus","_a","subscribe","unsubscribe","eventBus","browserStorage$1","token","observers","getRequestToken","onRequestTokenUpdate","observer","error","getCSPNonce","meta","token2","browserStorage","GuestUser","randomUUID","guest","displayName","currentUser$1","getGuestUser","getGuestNickname","setGuestNickname","nickname","c","r","currentUser","getAttribute","el","attribute","getCurrentUser","head","uid","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction$1","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isEmptyObject","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","allOwnKeys","l","keys","len","findKey","_key","_global","global","isContextDefined","context","merge","caseless","skipUndefined","assignValue","targetKey","extend","a","b","stripBOM","content","inherits","constructor","superConstructor","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","callbacks","data","cb","asap","process","utils$1","AxiosError","message","code","config","request","response","prototype$1","customProps","axiosError","msg","errCode","httpAdapter","isVisitable","removeBrackets","renderKey","path","dots","isFlatArray","predicates","toFormData","formData","options","option","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","Buffer","index","exposedHelpers","build","encode$1","charMap","match","AxiosURLSearchParams","params","encoder","_encode","encode","buildURL","url","serializeFn","serializedParams","hashmarkIndex","InterceptorManager","fulfilled","rejected","id","InterceptorManager$1","transitionalDefaults","URLSearchParams$1","FormData$1","Blob$1","platform$1","hasBrowserEnv","_navigator","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","origin","utils","platform","__spreadValues","toURLEncodedForm","helpers","parsePropPath","arrayToObject","formDataToJSON","buildPath","isNumericKey","isLast","stringifySafely","rawValue","parser","defaults","headers","contentType","hasJSONContentType","isObjectPayload","_FormData","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","status","method","defaults$1","ignoreDuplicateOf","parseHeaders","rawHeaders","parsed","line","$internals","normalizeHeader","header","normalizeValue","parseTokens","tokens","tokensRE","isValidHeaderName","matchHeaderValue","isHeaderNameFilter","formatHeader","w","char","buildAccessors","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","setHeaders","dest","entry","matcher","deleted","deleteHeader","format","normalized","targets","asStrings","first","accessors","defineAccessor","mapped","headerValue","AxiosHeaders$1","transformData","fns","isCancel","CanceledError","settle","resolve","reject","validateStatus","parseProtocol","speedometer","samplesCount","min","bytes","timestamps","tail","firstSampleTS","chunkLength","now","startedAt","bytesCount","passed","throttle","freq","timestamp","threshold","lastArgs","timer","invoke","args","progressEventReducer","listener","isDownloadStream","bytesNotified","_speedometer","loaded","total","progressBytes","rate","inRange","progressEventDecorator","throttled","lengthComputable","asyncDecorator","isURLSameOrigin","isMSIE","cookies","expires","domain","secure","cookie","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","allowAbsoluteUrls","isRelativeUrl","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","resolveConfig","newConfig","withXSRFToken","xsrfHeaderName","xsrfCookieName","auth","formHeaders","allowedHeaders","xsrfValue","xhrAdapter","_config","requestData","requestHeaders","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","onloadend","responseHeaders","err","timeoutErrorMessage","cancel","protocol","composeSignals$1","signals","timeout","length","controller","aborted","onabort","reason","signal","streamChunk","chunk","chunkSize","pos","end","readBytes","iterable","__asyncGenerator","iter","__forAwait","readStream","more","temp","__await","__yieldStar","stream","reader","trackStream","onProgress","onFinish","_onFinish","loadedBytes","DEFAULT_CHUNK_SIZE","isFunction","globalFetchAPI","Request","Response","ReadableStream$1","TextEncoder","test","factory","env","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","supportsRequestStream","duplexAccessed","hasContentType","supportsResponseStream","resolvers","res","getBodyLength","body","resolveBodyLength","cancelToken","withCredentials","fetchOptions","_fetch","composedSignal","requestContentLength","_request","contentTypeHeader","flush","isCredentialsSupported","resolvedOptions","__spreadProps","isStreamResponse","responseContentLength","responseData","seedCache","getFetch","fetch","seeds","seed","map","knownAdapters","renderReason","isResolvedHandle","adapter","adapters","nameOrAdapter","rejectedReasons","reasons","s","throwIfCancellationRequested","dispatchRequest","VERSION","validators$1","deprecatedWarnings","validator","version","formatMessage","opt","desc","opts","correctSpelling","assertOptions","schema","allowUnknown","validators","Axios","instanceConfig","configOrUrl","dummy","paramsSerializer","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","chain","onFulfilled","onRejected","fullPath","generateHTTPMethod","isForm","Axios$1","CancelToken","executor","resolvePromise","onfulfilled","_resolve","abort","CancelToken$1","spread","callback","isAxiosError","payload","HttpStatusCode","HttpStatusCode$1","createInstance","defaultConfig","instance","axios","promises","axios_1","n","u","U","R","o","f","g","v","d","_","router","require$$2","Axios__default","client","cancelableClient","RETRY_KEY","onCsrfTokenError","responseURL","RETRY_DELAY_KEY","onMaintenanceModeError","retryDelay","onNotLoggedInError","__importDefault","this","mod","dist","capabilities_1","event_bus_1","getSupportedTypes","capabilities","listen","setupGlobals","setupSocket","preAuth","_createElementBlock","_mergeProps","$props","_createElementVNode","_openBlock","theming","getCapabilities","hexRegex","hexToHSL","hexColor","max","hue","sat","lum","isRedThemed","isOrangeThemed","_createBlock","IconBell","isWebLink","onClickActionButton","action","_unref","_createTextVNode","_toDisplayString","$options","lastSlashPosition","firstSlashPosition","_component_NcUserBubble","ActionButton","NcDateTime","IconClose","IconMessageOutline","NcRichText","parametersHaveLink","p","parameters","richParameters","UserParameter","FileParameter","DefaultParameter","executeEvent","showError","generateOcsUrl","_hoisted_6","_component_NcDateTime","_component_NcButton","_createVNode","_component_IconClose","_hoisted_8","_component_NcRichText","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_14","_normalizeClass","_hoisted_15","_hoisted_16","_hoisted_17","_Fragment","_component_ActionButton","_hoisted_18","_component_IconMessageOutline","getNotificationsData","tabId","lastETag","forceRefresh","hasNotifyPush","lastUpdated","BrowserStorage","lastTab","refreshData","remapAttributes","notification","requestConfig","HowlerGlobal","Howler","vol","setupAudioContext","ids","j","sound","muted","ext","audioTest","mpegTest","ua","checkOpera","isOldOpera","checkSafari","safariVersion","isOldSafari","unlock","audioNode","testPlay","audio","handleSuspension","Howl","Sound","loadBuffer","sprite","internal","num","soundId","seek","duration","start","stop","setParams","node","playWebAudio","playHtml5","play","loadedNoReadyState","from","to","currentTime","isGroup","diff","steps","stepLen","lastTick","tick","loop","playing","seekAndEmit","emitSeek","realTime","rateSeek","sounds","remCache","once","events","isId","task","limit","cnt","isIOS","checkIE","howl","parent","volume","loadSound","dataView","decodeAudioData","xhr","safeXhrSend","arraybuffer","success","buffer","iOS","appVersion","safari","pan","x","y","z","xUp","yUp","zUp","or","_super","pannerType","setupPanner","pa","panner","createWebNotification","getLanguage","playNotificationSound","howlPayload","generateFilePath","primaryDeviceId","secondarySpeakerEnabled","secondaryDeviceId","_c","_b","soundDuped","sessionKeepAlive","hasThrottledPushNotifications","fairUsePolicyNotification","imagePath","IconBellOutline","IconNotification","NotificationItem","notifications","pollInterval","temporary","permissions","$data","_component_NcHeaderMenu","_component_IconNotification","$setup","_Transition","_TransitionGroup","_component_NotificationItem","_renderList","_component_NcEmptyContent","_component_IconBellOutline"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,23]} \ No newline at end of file diff --git a/js/notifications-main.mjs b/js/notifications-main.mjs index 47911d08c..6b6aca998 100644 --- a/js/notifications-main.mjs +++ b/js/notifications-main.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('notifications', '', 'js/NotificationsApp-CnHRKMHH.chunk.mjs'),window.OC.filePath('notifications', '', 'js/index-_0iU0BYK-CjtyBpO5.chunk.mjs'),window.OC.filePath('notifications', '', 'js/style-3CHj422B.chunk.mjs'),window.OC.filePath('notifications', '', 'css/style-BhWaMu2d.chunk.css'),window.OC.filePath('notifications', '', 'js/vite-preload-helper-B9rAsR6N.chunk.mjs'),window.OC.filePath('notifications', '', 'css/index-_0iU0BYK-DP1A-Cz8.chunk.css'),window.OC.filePath('notifications', '', 'js/BrowserStorage-FmX8gBxO.chunk.mjs'),window.OC.filePath('notifications', '', 'css/NotificationsApp-BPtPFz0N.chunk.css')])))=>i.map(i=>d[i]); -import{_ as o}from"./vite-preload-helper-B9rAsR6N.chunk.mjs";import{c as t,d as i}from"./style-3CHj422B.chunk.mjs";const m=i(()=>o(()=>import("./NotificationsApp-CnHRKMHH.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url));t(m).mount("#notifications"); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('notifications', '', 'js/NotificationsApp-BSasLk0w.chunk.mjs'),window.OC.filePath('notifications', '', 'js/index-_0iU0BYK-CjtyBpO5.chunk.mjs'),window.OC.filePath('notifications', '', 'js/style-3CHj422B.chunk.mjs'),window.OC.filePath('notifications', '', 'css/style-BhWaMu2d.chunk.css'),window.OC.filePath('notifications', '', 'js/vite-preload-helper-B9rAsR6N.chunk.mjs'),window.OC.filePath('notifications', '', 'css/index-_0iU0BYK-DP1A-Cz8.chunk.css'),window.OC.filePath('notifications', '', 'js/BrowserStorage-FmX8gBxO.chunk.mjs'),window.OC.filePath('notifications', '', 'css/NotificationsApp-DXuAZ_Q5.chunk.css')])))=>i.map(i=>d[i]); +import{_ as o}from"./vite-preload-helper-B9rAsR6N.chunk.mjs";import{c as t,d as i}from"./style-3CHj422B.chunk.mjs";const m=i(()=>o(()=>import("./NotificationsApp-BSasLk0w.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url));t(m).mount("#notifications"); //# sourceMappingURL=notifications-main.mjs.map diff --git a/src/NotificationsApp.vue b/src/NotificationsApp.vue index e1800b0f6..250d19022 100644 --- a/src/NotificationsApp.vue +++ b/src/NotificationsApp.vue @@ -96,7 +96,10 @@ import IconClose from 'vue-material-design-icons/Close.vue' import IconMessageOutline from 'vue-material-design-icons/MessageOutline.vue' import IconNotification from './Components/IconNotification.vue' import NotificationItem from './Components/NotificationItem.vue' -import { getNotificationsData } from './services/notificationsService.js' +import { + getNotificationsData, + setCurrentTabAsActive, +} from './services/notificationsService.js' import { createWebNotification } from './services/webNotificationsService.js' const sessionKeepAlive = loadState('core', 'config', { session_keepalive: true }).session_keepalive @@ -253,8 +256,11 @@ export default { } }, - onOpen() { + async onOpen() { this.requestWebNotificationPermissions() + + await setCurrentTabAsActive(this.tabId) + await this._fetch() }, handleNetworkOffline() { @@ -282,6 +288,8 @@ export default { .delete(generateOcsUrl('apps/notifications/api/v2/notifications')) .then(() => { this.notifications = [] + this.open = false + setCurrentTabAsActive(this.tabId) }) .catch(() => { showError(t('notifications', 'Failed to dismiss all notifications')) @@ -290,6 +298,7 @@ export default { onRemove(index) { this.notifications.splice(index, 1) + setCurrentTabAsActive(this.tabId) }, /** diff --git a/src/services/notificationsService.js b/src/services/notificationsService.js index efc147a10..a3119f204 100644 --- a/src/services/notificationsService.js +++ b/src/services/notificationsService.js @@ -42,6 +42,19 @@ async function getNotificationsData(tabId, lastETag, forceRefresh, hasNotifyPush } } +/** + * @param {string|null} tabId unique id for browser tab + */ +async function setCurrentTabAsActive(tabId) { + const lastTab = BrowserStorage.getItem('tabId') + if (lastTab !== tabId) { + // Refresh the data when changing the tab + await getNotificationsData(tabId, '', true, false) + // Enforce this tab one the raise-condition if there was one + BrowserStorage.setItem('tabId', tabId) + } +} + /** * @param {object} notification notification object */ @@ -90,4 +103,5 @@ async function refreshData(lastETag) { export { getNotificationsData, + setCurrentTabAsActive, }