diff --git a/core/src/components/login/LoginForm.vue b/core/src/components/login/LoginForm.vue index 9c8c16c47eec6..463807ccceb42 100644 --- a/core/src/components/login/LoginForm.vue +++ b/core/src/components/login/LoginForm.vue @@ -249,7 +249,7 @@ export default { return t('core', 'This account is disabled') } if (this.throttleDelay > 5000) { - return t('core', 'We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds.') + return t('core', 'Too many incorrect login attempts. Please try again in 30 seconds.') } return undefined }, diff --git a/dist/core-login.js b/dist/core-login.js index 5b2416b22d1ea..31f6c4df9c4fc 100644 --- a/dist/core-login.js +++ b/dist/core-login.js @@ -1,2 +1,2 @@ -(()=>{var e,r,s,i={2277:(t,e,r)=>{"use strict";function n(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.registerDefaultHelpers=function(t){s.default(t),i.default(t),o.default(t),a.default(t),l.default(t),c.default(t),u.default(t)},e.moveHelperToHooks=function(t,e,r){t.helpers[e]&&(t.hooks[e]=t.helpers[e],r||delete t.helpers[e])};var s=n(r(26097)),i=n(r(46785)),o=n(r(14353)),a=n(r(82355)),l=n(r(85300)),c=n(r(37466)),u=n(r(50908))},7624:(t,e,r)=>{"use strict";e.__esModule=!0,e.checkRevision=function(t){var e=t&&t[0]||1,r=o.COMPILER_REVISION;if(!(e>=o.LAST_COMPATIBLE_COMPILER_REVISION&&e<=o.COMPILER_REVISION)){if(e{"use strict";var i={};s.r(i),s.d(i,{clearIconCache:()=>pe,getIconUrl:()=>de});var o=s(85471),a=s(81222),l=s(63814),c=s(82490),u=s(74095),d=s(371),h=s(53334),p=s(46855),f=s(32073),m=s(93663),g=s(82182);const v={name:"LoginButton",components:{ArrowRight:s(33691).A,NcButton:u.A},props:{value:{type:String,default:(0,h.Tl)("core","Log in")},valueLoading:{type:String,default:(0,h.Tl)("core","Logging in …")},loading:{type:Boolean,required:!0},invertedColors:{type:Boolean,default:!1}}};var b=s(85072),E=s.n(b),_=s(97825),w=s.n(_),y=s(77659),A=s.n(y),T=s(55056),N=s.n(T),C=s(10540),x=s.n(C),I=s(41113),P=s.n(I),O=s(14430),S={};S.styleTagTransform=P(),S.setAttributes=N(),S.insert=A().bind(null,"head"),S.domAPI=w(),S.insertStyleElement=x(),E()(O.A,S),O.A&&O.A.locals&&O.A.locals;var L=s(14486);const R=(0,L.A)(v,function(){var t=this,e=t._self._c;return e("NcButton",{attrs:{variant:"primary",type:"submit",wide:!0,disabled:t.loading},on:{click:function(e){return t.$emit("click")}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("div",{staticClass:"submit-wrapper__icon icon-loading-small-dark"}):e("ArrowRight",{staticClass:"submit-wrapper__icon"})]},proxy:!0}])},[t._v("\n\t"+t._s(t.loading?t.valueLoading:t.value)+"\n\t")])},[],!1,null,"bbf83d00",null).exports,k={computed:{userNameInputLengthIs255(){return this.user.length>=255},userInputHelperText(){if(this.userNameInputLengthIs255)return t("core","Email length is at max (255)")}}},D={name:"LoginForm",components:{LoginButton:R,NcCheckboxRadioSwitch:f.A,NcPasswordField:m.A,NcTextField:g.A,NcNoteCard:d.A},mixins:[k],props:{username:{type:String,default:""},redirectUrl:{type:[Boolean,String],default:!1},errors:{type:Array,default:()=>[]},messages:{type:Array,default:()=>[]},throttleDelay:{type:Number,default:0},autoCompleteAllowed:{type:Boolean,default:!0},remembermeAllowed:{type:Boolean,default:!0},directLogin:{type:Boolean,default:!1},emailStates:{type:Array,default:()=>[]}},setup:()=>({t:h.Tl,headlineText:(0,h.Tl)("core","Log in to {productName}",{productName:OC.theme.name},void 0,{sanitize:!1,escape:!1}),loginTimeout:(0,a.C)("core","loginTimeout",300),requestToken:window.OC.requestToken,timezone:(new Intl.DateTimeFormat)?.resolvedOptions()?.timeZone,timezoneOffset:-(new Date).getTimezoneOffset()/60}),data:t=>({loading:!1,user:t.username,password:"",rememberme:["1"],visible:!1}),computed:{resetFormTimeout(){return this.loginTimeout<=0?()=>{}:(0,p.A)(this.handleResetForm,1e3*this.loginTimeout)},isError(){return this.invalidPassword||this.userDisabled||this.throttleDelay>5e3},errorLabel(){return this.invalidPassword?(0,h.Tl)("core","Wrong login or password."):this.userDisabled?(0,h.Tl)("core","This account is disabled"):this.throttleDelay>5e3?(0,h.Tl)("core","We have detected multiple invalid login attempts from your IP. Therefore your next login is throttled up to 30 seconds."):void 0},apacheAuthFailed(){return-1!==this.errors.indexOf("apacheAuthFailed")},csrfCheckFailed(){return-1!==this.errors.indexOf("csrfCheckFailed")},internalException(){return-1!==this.errors.indexOf("internalexception")},invalidPassword(){return-1!==this.errors.indexOf("invalidpassword")},userDisabled(){return-1!==this.errors.indexOf("userdisabled")},loadingIcon:()=>(0,l.d0)("core","loading-dark.gif"),loginActionUrl:()=>(0,l.Jv)("login"),emailEnabled(){return this.emailStates.every(t=>"1"===t)},loginText(){return this.emailEnabled?(0,h.Tl)("core","Account name or email"):(0,h.Tl)("core","Account name")}},watch:{password(){this.resetFormTimeout()}},mounted(){""===this.username?this.$refs.user.$refs.inputField.$refs.input.focus():this.$refs.password.$refs.inputField.$refs.input.focus()},methods:{handleResetForm(){this.password=""},updateUsername(){this.$emit("update:username",this.user)},submit(t){this.visible=!1,this.loading?t.preventDefault():(this.loading=!0,this.$emit("submit"))}}};var M=s(39820),F={};F.styleTagTransform=P(),F.setAttributes=N(),F.insert=A().bind(null,"head"),F.domAPI=w(),F.insertStyleElement=x(),E()(M.A,F),M.A&&M.A.locals&&M.A.locals;const j=(0,L.A)(D,function(){var t=this,e=t._self._c;return e("form",{ref:"loginForm",staticClass:"login-form",attrs:{method:"post",name:"login",action:t.loginActionUrl},on:{submit:t.submit}},[e("fieldset",{staticClass:"login-form__fieldset",attrs:{"data-login-form":""}},[t.apacheAuthFailed?e("NcNoteCard",{attrs:{title:t.t("core","Server side authentication failed!"),type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),t.csrfCheckFailed?e("NcNoteCard",{attrs:{heading:t.t("core","Session error"),type:"error"}},[t._v("\n\t\t\t"+t._s(t.t("core","It appears your session token has expired, please refresh the page and try again."))+"\n\t\t")]):t._e(),t._v(" "),t.messages.length>0?e("NcNoteCard",t._l(t.messages,function(r,n){return e("div",{key:n},[t._v("\n\t\t\t\t"+t._s(r)),e("br")])}),0):t._e(),t._v(" "),t.internalException?e("NcNoteCard",{class:t.t("core","An internal error occurred."),attrs:{type:"warning"}},[t._v("\n\t\t\t"+t._s(t.t("core","Please try again or contact your administrator."))+"\n\t\t")]):t._e(),t._v(" "),e("div",{staticClass:"hidden",attrs:{id:"message"}},[e("img",{staticClass:"float-spinner",attrs:{alt:"",src:t.loadingIcon}}),t._v(" "),e("span",{attrs:{id:"messageText"}}),t._v(" "),e("div",{staticStyle:{clear:"both"}})]),t._v(" "),e("h2",{staticClass:"login-form__headline",attrs:{"data-login-form-headline":""}},[t._v("\n\t\t\t"+t._s(t.headlineText)+"\n\t\t")]),t._v(" "),e("NcTextField",{ref:"user",class:{shake:t.invalidPassword},attrs:{id:"user",label:t.loginText,name:"user",maxlength:255,autocapitalize:"none",spellchecking:!1,autocomplete:t.autoCompleteAllowed?"username":"off",required:"",error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,"data-login-form-input-user":""},on:{change:t.updateUsername},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),t._v(" "),e("NcPasswordField",{ref:"password",class:{shake:t.invalidPassword},attrs:{id:"password",name:"password",spellchecking:!1,autocapitalize:"none",autocomplete:t.autoCompleteAllowed?"current-password":"off",label:t.t("core","Password"),"helper-text":t.errorLabel,error:t.isError,visible:t.visible,"data-login-form-input-password":"",required:""},model:{value:t.password,callback:function(e){t.password=e},expression:"password"}}),t._v(" "),t.remembermeAllowed?e("NcCheckboxRadioSwitch",{ref:"rememberme",attrs:{id:"rememberme",name:"rememberme",value:"1","data-login-form-input-rememberme":""},model:{value:t.rememberme,callback:function(e){t.rememberme=e},expression:"rememberme"}},[t._v("\n\t\t\t"+t._s(t.t("core","Remember me"))+"\n\t\t")]):t._e(),t._v(" "),e("LoginButton",{attrs:{"data-login-form-submit":"",loading:t.loading}}),t._v(" "),t.redirectUrl?e("input",{attrs:{type:"hidden",name:"redirect_url"},domProps:{value:t.redirectUrl}}):t._e(),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone"},domProps:{value:t.timezone}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"timezone_offset"},domProps:{value:t.timezoneOffset}}),t._v(" "),e("input",{attrs:{type:"hidden",name:"requesttoken"},domProps:{value:t.requestToken}}),t._v(" "),t.directLogin?e("input",{attrs:{type:"hidden",name:"direct",value:"1"}}):t._e()],1)])},[],!1,null,"7dc94e7b",null).exports;function U(){return B.stubThis(void 0!==globalThis?.PublicKeyCredential&&"function"==typeof globalThis.PublicKeyCredential)}const B={stubThis:t=>t};class $ extends Error{constructor({message:t,code:e,cause:r,name:n}){super(t,{cause:r}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=n??r.name,this.code=e}}const H=new class{constructor(){Object.defineProperty(this,"controller",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}createNewAbortSignal(){if(this.controller){const t=new Error("Cancelling existing WebAuthn API call for new one");t.name="AbortError",this.controller.abort(t)}const t=new AbortController;return this.controller=t,t.signal}cancelCeremony(){if(this.controller){const t=new Error("Manually cancelling existing WebAuthn API call");t.name="AbortError",this.controller.abort(t),this.controller=void 0}}};function G(t){const e=new Uint8Array(t);let r="";for(const t of e)r+=String.fromCharCode(t);return btoa(r).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function V(t){const e=t.replace(/-/g,"+").replace(/_/g,"/"),r=(4-e.length%4)%4,n=e.padEnd(e.length+r,"="),s=atob(n),i=new ArrayBuffer(s.length),o=new Uint8Array(i);for(let t=0;tt;function q(t){const{id:e}=t;return{...t,id:V(e),transports:t.transports}}const X=["cross-platform","platform"];function Y(t){if(t&&!(X.indexOf(t)<0))return t}var W=s(42507),K=s(41423);const Q={name:"LockOpenIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},J=(0,L.A)(Q,function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon lock-open-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},[],!1,null,null,null).exports;var Z=s(21777),tt=s(35947);const et=null===(rt=(0,Z.HW)())?(0,tt.YK)().setApp("core").build():(0,tt.YK)().setApp("core").setUid(rt.uid).build();var rt;(0,tt.YK)().setApp("unified-search").detectUser().build();var nt=s(19051);class st extends Error{}const it=(0,o.pM)({name:"PasswordLessLoginForm",components:{LoginButton:R,InformationIcon:K.A,LockOpenIcon:J,NcEmptyContent:W.A,NcTextField:g.A},props:{username:{type:String,default:""},redirectUrl:{type:[Boolean,String],default:!1},autoCompleteAllowed:{type:Boolean,default:!0},isHttps:{type:Boolean,default:!1},isLocalhost:{type:Boolean,default:!1}},setup:()=>({supportsWebauthn:U()}),data(){return{user:this.username,loading:!1,validCredentials:!0}},methods:{async authenticate(){if(this.$refs.loginForm.checkValidity()){et.debug("passwordless login initiated");try{const t=await async function(t){const e=(0,l.Jv)("/login/webauthn/start"),{data:r}=await nt.Ay.post(e,{loginName:t});if(!r.allowCredentials||0===r.allowCredentials.length)throw et.error("No valid credentials returned for webauthn"),new st;return await async function(t){!t.optionsJSON&&t.challenge&&(console.warn("startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information."),t={optionsJSON:t});const{optionsJSON:e,useBrowserAutofill:r=!1,verifyBrowserAutofillInput:n=!0}=t;if(!U())throw new Error("WebAuthn is not supported in this browser");let s;0!==e.allowCredentials?.length&&(s=e.allowCredentials?.map(q));const i={...e,challenge:V(e.challenge),allowCredentials:s},o={};if(r){if(!await function(){if(!U())return z(new Promise(t=>t(!1)));const t=globalThis.PublicKeyCredential;return z(void 0===t?.isConditionalMediationAvailable?new Promise(t=>t(!1)):t.isConditionalMediationAvailable())}())throw Error("Browser does not support WebAuthn autofill");if(document.querySelectorAll("input[autocomplete$='webauthn']").length<1&&n)throw Error('No with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation="conditional",i.allowCredentials=[]}let a;o.publicKey=i,o.signal=H.createNewAbortSignal();try{a=await navigator.credentials.get(o)}catch(t){throw function({error:t,options:e}){const{publicKey:r}=e;if(!r)throw Error("options was missing required publicKey property");if("AbortError"===t.name){if(e.signal instanceof AbortSignal)return new $({message:"Authentication ceremony was sent an abort signal",code:"ERROR_CEREMONY_ABORTED",cause:t})}else{if("NotAllowedError"===t.name)return new $({message:t.message,code:"ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",cause:t});if("SecurityError"===t.name){const e=globalThis.location.hostname;if("localhost"!==(n=e)&&!/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(n))return new $({message:`${globalThis.location.hostname} is an invalid domain`,code:"ERROR_INVALID_DOMAIN",cause:t});if(r.rpId!==e)return new $({message:`The RP ID "${r.rpId}" is invalid for this domain`,code:"ERROR_INVALID_RP_ID",cause:t})}else if("UnknownError"===t.name)return new $({message:"The authenticator was unable to process the specified options, or could not create a new assertion signature",code:"ERROR_AUTHENTICATOR_GENERAL_ERROR",cause:t})}var n;return t}({error:t,options:o})}if(!a)throw new Error("Authentication was not completed");const{id:l,rawId:c,response:u,type:d}=a;let h;return u.userHandle&&(h=G(u.userHandle)),{id:l,rawId:G(c),response:{authenticatorData:G(u.authenticatorData),clientDataJSON:G(u.clientDataJSON),signature:G(u.signature),userHandle:h},type:d,clientExtensionResults:a.getClientExtensionResults(),authenticatorAttachment:Y(a.authenticatorAttachment)}}({optionsJSON:r})}(this.user);await this.completeAuthentication(t)}catch(t){if(t instanceof st)return void(this.validCredentials=!1);et.debug(t)}}},changeUsername(t){this.user=t,this.$emit("update:username",this.user)},completeAuthentication(t){const e=this.redirectUrl;return async function(t){const e=(0,l.Jv)("/login/webauthn/finish"),{data:r}=await nt.Ay.post(e,{data:JSON.stringify(t)});return r}(t).then(({defaultRedirectUrl:t})=>{et.debug("Logged in redirecting"),window.location.href=e||t}).catch(t=>{et.debug("GOT AN ERROR WHILE SUBMITTING CHALLENGE!",{error:t})})},submit(){}}});var ot=s(57056),at={};at.styleTagTransform=P(),at.setAttributes=N(),at.insert=A().bind(null,"head"),at.domAPI=w(),at.insertStyleElement=x(),E()(ot.A,at),ot.A&&ot.A.locals&&ot.A.locals;const lt=(0,L.A)(it,function(){var t=this,e=t._self._c;return t._self._setupProxy,(t.isHttps||t.isLocalhost)&&t.supportsWebauthn?e("form",{ref:"loginForm",staticClass:"password-less-login-form",attrs:{"aria-labelledby":"password-less-login-form-title",method:"post",name:"login"},on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("h2",{attrs:{id:"password-less-login-form-title"}},[t._v("\n\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t")]),t._v(" "),e("NcTextField",{attrs:{required:"","model-value":t.user,autocomplete:t.autoCompleteAllowed?"on":"off",error:!t.validCredentials,label:t.t("core","Login or email"),placeholder:t.t("core","Login or email"),"helper-text":t.validCredentials?"":t.t("core","Your account is not setup for passwordless login.")},on:{"update:value":t.changeUsername}}),t._v(" "),t.validCredentials?e("LoginButton",{attrs:{loading:t.loading},on:{click:t.authenticate}}):t._e()],1):t.isHttps||t.isLocalhost?e("NcEmptyContent",{attrs:{name:t.t("core","Browser not supported"),description:t.t("core","Passwordless authentication is not supported in your browser.")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("InformationIcon")]},proxy:!0}])}):e("NcEmptyContent",{attrs:{name:t.t("core","Your connection is not secure"),description:t.t("core","Passwordless authentication is only available over a secure connection.")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("LockOpenIcon")]},proxy:!0}])})},[],!1,null,"0b57a680",null).exports,ct=(0,o.pM)({name:"ResetPassword",components:{LoginButton:R,NcButton:u.A,NcNoteCard:d.A,NcTextField:g.A},mixins:[k],props:{username:{type:String,required:!0},resetPasswordLink:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:"",user:this.username}},watch:{username(t){this.user=t}},methods:{updateUsername(){this.$emit("update:username",this.user)},async submit(){this.loading=!0,this.error=!1,this.message="";const t=(0,l.Jv)("/lostpassword/email");try{const{data:e}=await nt.Ay.post(t,{user:this.user});if("success"!==e.status)throw new Error(`got status ${e.status}`);this.message="send-success"}catch(t){et.error("could not send reset email request",{error:t}),this.error=!0,this.message="send-error"}finally{this.loading=!1}}}});var ut=s(99322),dt={};dt.styleTagTransform=P(),dt.setAttributes=N(),dt.insert=A().bind(null,"head"),dt.domAPI=w(),dt.insertStyleElement=x(),E()(ut.A,dt),ut.A&&ut.A.locals&&ut.A.locals;const ht=(0,L.A)(ct,function(){var t=this,e=t._self._c;return t._self._setupProxy,e("form",{staticClass:"reset-password-form",on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("h2",[t._v(t._s(t.t("core","Reset password")))]),t._v(" "),e("NcTextField",{attrs:{id:"user",name:"user",maxlength:255,autocapitalize:"off",label:t.t("core","Login or email"),error:t.userNameInputLengthIs255,"helper-text":t.userInputHelperText,required:""},on:{change:t.updateUsername},model:{value:t.user,callback:function(e){t.user=e},expression:"user"}}),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password")}}),t._v(" "),e("NcButton",{attrs:{variant:"tertiary",wide:""},on:{click:function(e){return t.$emit("abort")}}},[t._v("\n\t\t"+t._s(t.t("core","Back to login"))+"\n\t")]),t._v(" "),"send-success"===t.message?e("NcNoteCard",{attrs:{type:"success"}},[t._v("\n\t\t"+t._s(t.t("core","If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help."))+"\n\t")]):"send-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t"+t._s(t.t("core","Couldn't send reset email. Please contact your administrator."))+"\n\t")]):"reset-error"===t.message?e("NcNoteCard",{attrs:{type:"error"}},[t._v("\n\t\t"+t._s(t.t("core","Password cannot be changed. Please contact your administrator."))+"\n\t")]):t._e()],1)},[],!1,null,"759a0fdd",null).exports,pt={name:"UpdatePassword",components:{LoginButton:R},props:{username:{type:String,required:!0},resetPasswordTarget:{type:String,required:!0}},data(){return{error:!1,loading:!1,message:void 0,user:this.username,password:"",encrypted:!1,proceed:!1}},watch:{username(t){this.user=t}},methods:{async submit(){this.loading=!0,this.error=!1,this.message="";try{const{data:t}=await nt.Ay.post(this.resetPasswordTarget,{password:this.password,proceed:this.proceed});if(t&&"success"===t.status)this.message="send-success",this.$emit("update:username",this.user),this.$emit("done");else{if(!t||!t.encryption)throw t&&t.msg?new Error(t.msg):new Error;this.encrypted=!0}}catch(e){this.error=!0,this.message=e.message?e.message:t("core","Password cannot be changed. Please contact your administrator.")}finally{this.loading=!1}}}};var ft=s(81604),mt={};mt.styleTagTransform=P(),mt.setAttributes=N(),mt.insert=A().bind(null,"head"),mt.domAPI=w(),mt.insertStyleElement=x(),E()(ft.A,mt),ft.A&&ft.A.locals&&ft.A.locals;const gt=(0,L.A)(pt,function(){var t=this,e=t._self._c;return e("form",{on:{submit:function(e){return e.preventDefault(),t.submit.apply(null,arguments)}}},[e("fieldset",[e("p",[e("label",{staticClass:"infield",attrs:{for:"password"}},[t._v(t._s(t.t("core","New password")))]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.password,expression:"password"}],attrs:{id:"password",type:"password",name:"password",autocomplete:"new-password",autocapitalize:"none",spellcheck:"false",required:"",placeholder:t.t("core","New password")},domProps:{value:t.password},on:{input:function(e){e.target.composing||(t.password=e.target.value)}}})]),t._v(" "),t.encrypted?e("div",{staticClass:"update"},[e("p",[t._v("\n\t\t\t\t"+t._s(t.t("core","Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?"))+"\n\t\t\t")]),t._v(" "),e("input",{directives:[{name:"model",rawName:"v-model",value:t.proceed,expression:"proceed"}],staticClass:"checkbox",attrs:{id:"encrypted-continue",type:"checkbox"},domProps:{checked:Array.isArray(t.proceed)?t._i(t.proceed,null)>-1:t.proceed},on:{change:function(e){var r=t.proceed,n=e.target,s=!!n.checked;if(Array.isArray(r)){var i=t._i(r,null);n.checked?i<0&&(t.proceed=r.concat([null])):i>-1&&(t.proceed=r.slice(0,i).concat(r.slice(i+1)))}else t.proceed=s}}}),t._v(" "),e("label",{attrs:{for:"encrypted-continue"}},[t._v("\n\t\t\t\t"+t._s(t.t("core","I know what I'm doing"))+"\n\t\t\t")])]):t._e(),t._v(" "),e("LoginButton",{attrs:{loading:t.loading,value:t.t("core","Reset password"),"value-loading":t.t("core","Resetting password")}}),t._v(" "),t.error&&t.message?e("p",{class:{warning:t.error}},[t._v("\n\t\t\t"+t._s(t.message)+"\n\t\t")]):t._e()],1)])},[],!1,null,"2c0ecaf9",null).exports;const vt=c.A.parse(location.search);"1"===vt.clear&&async function(){try{window.localStorage.clear(),window.sessionStorage.clear();const t=await window.indexedDB.databases();for(const e of t)await window.indexedDB.deleteDatabase(e.name);et.debug("Browser storages cleared")}catch(t){et.error("Could not clear browser storages",{error:t})}}();const bt={name:"Login",components:{LoginForm:j,PasswordLessLoginForm:lt,ResetPassword:ht,UpdatePassword:gt,NcButton:u.A,NcNoteCard:d.A},data:()=>({loading:!1,user:(0,a.C)("core","loginUsername",""),passwordlessLogin:!1,resetPassword:!1,errors:(0,a.C)("core","loginErrors",[]),messages:(0,a.C)("core","loginMessages",[]),redirectUrl:(0,a.C)("core","loginRedirectUrl",!1),throttleDelay:(0,a.C)("core","loginThrottleDelay",0),canResetPassword:(0,a.C)("core","loginCanResetPassword",!1),resetPasswordLink:(0,a.C)("core","loginResetPasswordLink",""),autoCompleteAllowed:(0,a.C)("core","loginAutocomplete",!0),remembermeAllowed:(0,a.C)("core","loginCanRememberme",!0),resetPasswordTarget:(0,a.C)("core","resetPasswordTarget",""),resetPasswordUser:(0,a.C)("core","resetPasswordUser",""),directLogin:"1"===vt.direct,hasPasswordless:(0,a.C)("core","webauthn-available",!1),countAlternativeLogins:(0,a.C)("core","countAlternativeLogins",!1),alternativeLogins:(0,a.C)("core","alternativeLogins",[]),isHttps:"https:"===window.location.protocol,isLocalhost:"localhost"===window.location.hostname,hideLoginForm:(0,a.C)("core","hideLoginForm",!1),emailStates:(0,a.C)("core","emailStates",[])}),methods:{passwordResetFinished(){window.location.href=(0,l.Jv)("login")+"?direct=1"}}};var Et=s(11999),_t={};_t.styleTagTransform=P(),_t.setAttributes=N(),_t.insert=A().bind(null,"head"),_t.domAPI=w(),_t.insertStyleElement=x(),E()(Et.A,_t),Et.A&&Et.A.locals&&Et.A.locals;const wt=(0,L.A)(bt,function(){var t=this,e=t._self._c;return e("div",{staticClass:"guest-box login-box"},[!t.hideLoginForm||t.directLogin?[e("transition",{attrs:{name:"fade",mode:"out-in"}},[t.passwordlessLogin||t.resetPassword||""!==t.resetPasswordTarget?!t.loading&&t.passwordlessLogin?e("div",{key:"reset-pw-less",staticClass:"login-additional login-box__wrapper"},[e("PasswordLessLoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"auto-complete-allowed":t.autoCompleteAllowed,"is-https":t.isHttps,"is-localhost":t.isLocalhost},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),e("NcButton",{attrs:{variant:"tertiary","aria-label":t.t("core","Back to login form"),wide:!0},on:{click:function(e){t.passwordlessLogin=!1}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Back"))+"\n\t\t\t\t")])],1):!t.loading&&t.canResetPassword?e("div",{key:"reset-can-reset",staticClass:"login-additional"},[e("div",{staticClass:"lost-password-container"},[t.resetPassword?e("ResetPassword",{attrs:{username:t.user,"reset-password-link":t.resetPasswordLink},on:{"update:username":function(e){t.user=e},abort:function(e){t.resetPassword=!1}}}):t._e()],1)]):""!==t.resetPasswordTarget?e("div",[e("UpdatePassword",{attrs:{username:t.user,"reset-password-target":t.resetPasswordTarget},on:{"update:username":function(e){t.user=e},done:t.passwordResetFinished}})],1):t._e():e("div",{staticClass:"login-box__wrapper"},[e("LoginForm",{attrs:{username:t.user,"redirect-url":t.redirectUrl,"direct-login":t.directLogin,messages:t.messages,errors:t.errors,"throttle-delay":t.throttleDelay,"auto-complete-allowed":t.autoCompleteAllowed,"rememberme-allowed":t.remembermeAllowed,"email-states":t.emailStates},on:{"update:username":function(e){t.user=e},submit:function(e){t.loading=!0}}}),t._v(" "),t.hasPasswordless?e("NcButton",{attrs:{variant:"tertiary",wide:""},on:{click:function(e){e.preventDefault(),t.passwordlessLogin=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Log in with a device"))+"\n\t\t\t\t")]):t._e(),t._v(" "),t.canResetPassword&&""!==t.resetPasswordLink?e("NcButton",{attrs:{id:"lost-password",href:t.resetPasswordLink,variant:"tertiary-no-background",wide:""}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t.canResetPassword&&!t.resetPassword?e("NcButton",{attrs:{id:"lost-password",variant:"tertiary",wide:""},on:{click:function(e){e.preventDefault(),t.resetPassword=!0}}},[t._v("\n\t\t\t\t\t"+t._s(t.t("core","Forgot password?"))+"\n\t\t\t\t")]):t._e()],1)])]:[e("transition",{attrs:{name:"fade",mode:"out-in"}},[e("NcNoteCard",{attrs:{type:"info",title:t.t("core","Login form is disabled.")}},[t._v("\n\t\t\t\t"+t._s(t.t("core","The Nextcloud login form is disabled. Use another login option if available or contact your administration."))+"\n\t\t\t")])],1)],t._v(" "),e("div",{staticClass:"login-box__alternative-logins",attrs:{id:"alternative-logins"}},t._l(t.alternativeLogins,function(r,n){return e("NcButton",{key:n,class:[r.class],attrs:{variant:"secondary",wide:!0,role:"link",href:r.href}},[t._v("\n\t\t\t"+t._s(r.name)+"\n\t\t")])}),1)],2)},[],!1,null,"518c0816",null).exports;var yt=s(61338),At=s(71225);const Tt=!!window._oc_isadmin,Nt=window.oc_appconfig||{};var Ct=s(74692),xt=s.n(Ct);let It=!1;const Pt={enableDynamicSlideToggle(){It=!0},showAppSidebar:function(t){(t||xt()("#app-sidebar")).removeClass("disappear").show(),xt()("#app-content").trigger(new(xt().Event)("appresized"))},hideAppSidebar:function(t){(t||xt()("#app-sidebar")).hide().addClass("disappear"),xt()("#app-content").trigger(new(xt().Event)("appresized"))}},Ot=Pt,St=void 0!==window._oc_appswebroots&&window._oc_appswebroots;var Lt=s(21391),Rt=s.n(Lt),kt=s(78112),Dt=s(12111);const Mt={create:"POST",update:"PROPPATCH",patch:"PROPPATCH",delete:"DELETE",read:"PROPFIND"};function Ft(t,e){if(Dt.default.isArray(t))return Dt.default.map(t,function(t){return Ft(t,e)});const r={href:t.href};return Dt.default.each(t.propStat,function(t){if("HTTP/1.1 200 OK"===t.status)for(const n in t.properties){let s=n;n in e&&(s=e[n]),r[s]=t.properties[n]}}),r.id||(r.id=jt(r.href)),r}function jt(t){const e=t.indexOf("?");e>0&&(t=t.substr(0,e));const r=t.split("/");let n;do{n=r[r.length-1],r.pop()}while(!n&&r.length>0);return n}function Ut(t){return t>=200&&t<=299}function Bt(t,e,r,n){return t.propPatch(e.url,function(t,e){const r={};let n;for(n in t){let s=e[n],i=t[n];s||(et.warn('No matching DAV property for property "'+n),s=n),(Dt.default.isBoolean(i)||Dt.default.isNumber(i))&&(i=""+i),r[s]=i}return r}(r.changed,e.davProperties),n).then(function(t){Ut(t.status)?Dt.default.isFunction(e.success)&&e.success(r.toJSON()):Dt.default.isFunction(e.error)&&e.error(t)})}const $t=Rt().noConflict();Object.assign($t,{davCall:function(t,e){const r=new kt.dav.Client({baseUrl:t.url,xmlNamespaces:Dt.default.extend({"DAV:":"d","http://owncloud.org/ns":"oc"},t.xmlNamespaces||{})});r.resolveUrl=function(){return t.url};const n=Dt.default.extend({"X-Requested-With":"XMLHttpRequest",requesttoken:OC.requestToken},t.headers);return"PROPFIND"===t.type?function(t,e,r,n){return t.propFind(e.url,Dt.default.values(e.davProperties)||[],e.depth,n).then(function(t){if(Ut(t.status)){if(Dt.default.isFunction(e.success)){const r=Dt.default.invert(e.davProperties),n=Ft(t.body,r);e.depth>0&&n.shift(),e.success(n)}}else Dt.default.isFunction(e.error)&&e.error(t)})}(r,t,0,n):"PROPPATCH"===t.type?Bt(r,t,e,n):"MKCOL"===t.type?function(t,e,r,n){return t.request(e.type,e.url,n,null).then(function(s){Ut(s.status)?Bt(t,e,r,n):Dt.default.isFunction(e.error)&&e.error(s)})}(r,t,e,n):function(t,e,r,n){return n["Content-Type"]="application/json",t.request(e.type,e.url,n,e.data).then(function(t){if(Ut(t.status)){if(Dt.default.isFunction(e.success)){if("PUT"===e.type||"POST"===e.type||"MKCOL"===e.type){const n=t.body||r.toJSON(),s=t.xhr.getResponseHeader("Content-Location");return"POST"===e.type&&s&&(n.id=jt(s)),void e.success(n)}if(207===t.status){const r=Dt.default.invert(e.davProperties);e.success(Ft(t.body,r))}else e.success(t.body)}}else Dt.default.isFunction(e.error)&&e.error(t)})}(r,t,e,n)},davSync:function(t){return(e,r,n)=>{const s={type:Mt[e]||e},i=r instanceof t.Collection;if("update"===e&&(r.hasInnerCollection?s.type="MKCOL":(r.usePUT||r.collection&&r.collection.usePUT)&&(s.type="PUT")),n.url||(s.url=Dt.default.result(r,"url")||function(){throw new Error('A "url" property or function must be specified')}()),null!=n.data||!r||"create"!==e&&"update"!==e&&"patch"!==e||(s.data=JSON.stringify(n.attrs||r.toJSON(n))),"PROPFIND"!==s.type&&(s.processData=!1),"PROPFIND"===s.type||"PROPPATCH"===s.type){let t=r.davProperties;!t&&r.model&&(t=r.model.prototype.davProperties),t&&(Dt.default.isFunction(t)?s.davProperties=t.call(r):s.davProperties=t),s.davProperties=Dt.default.extend(s.davProperties||{},n.davProperties),Dt.default.isUndefined(n.depth)&&(n.depth=i?1:0)}const o=n.error;n.error=function(t,e,r){n.textStatus=e,n.errorThrown=r,o&&o.call(n.context,t,e,r)};const a=n.xhr=t.davCall(Dt.default.extend(s,n),r);return r.trigger("request",r,a,n),a}}($t)});const Ht=$t;var Gt=s(87485);const Vt=window._oc_config||{},zt=document.getElementsByTagName("head")[0].getAttribute("data-user"),qt=document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),Xt=void 0!==zt&&zt,Yt=window._oc_debug;var Wt=s(21363),Kt=s(85168),Qt=s(98469),Jt=s(43627);const Zt={YES_NO_BUTTONS:70,OK_BUTTONS:71,FILEPICKER_TYPE_CHOOSE:1,FILEPICKER_TYPE_MOVE:2,FILEPICKER_TYPE_COPY:3,FILEPICKER_TYPE_COPY_MOVE:4,FILEPICKER_TYPE_CUSTOM:5,alert:function(t,e,r,n){this.message(t,e,"alert",Zt.OK_BUTTON,r,n)},info:function(t,e,r,n){this.message(t,e,"info",Zt.OK_BUTTON,r,n)},confirm:function(t,e,r,n){return this.message(t,e,"notice",Zt.YES_NO_BUTTONS,r,n)},confirmDestructive:function(t,e,r=Zt.OK_BUTTONS,n=()=>{}){return(new Kt.ik).setName(e).setText(t).setButtons(r===Zt.OK_BUTTONS?[{label:(0,h.t)("core","Yes"),variant:"error",callback:()=>{n.clicked=!0,n(!0)}}]:Zt._getLegacyButtons(r,n)).build().show().then(()=>{n.clicked||n(!1)})},confirmHtml:function(t,e,r){return(new Kt.ik).setName(e).setText("").setButtons([{label:(0,h.t)("core","No"),callback:()=>{}},{label:(0,h.t)("core","Yes"),variant:"primary",callback:()=>{r.clicked=!0,r(!0)}}]).build().setHTML(t).show().then(()=>{r.clicked||r(!1)})},prompt:function(t,e,r,n,i,a){return new Promise(n=>{(0,Qt.S)((0,o.$V)(()=>Promise.all([s.e(4208),s.e(4864)]).then(s.bind(s,24864))),{text:t,name:e,callback:r,inputName:i,isPassword:!!a},(...t)=>{r(...t),n()})})},filepicker(t,e,r=!1,n=void 0,s=void 0,i=Kt.bh.Choose,o=void 0,a=void 0){const l=(t,e)=>{const n=t=>{const e=t?.root||"";let r=t?.path||"";return r.startsWith(e)&&(r=r.slice(e.length)||"/"),r};return r?r=>t(r.map(n),e):r=>t(n(r[0]),e)},c=(0,Kt.a1)(t);i===this.FILEPICKER_TYPE_CUSTOM?(a.buttons||[]).forEach(t=>{c.addButton({callback:l(e,t.type),label:t.text,variant:t.defaultButton?"primary":"secondary"})}):c.setButtonFactory((t,r)=>{const n=[],[s]=t,o=s?.displayname||s?.basename||(0,Jt.basename)(r);return i===Kt.bh.Choose&&n.push({callback:l(e,Kt.bh.Choose),label:s&&!this.multiSelect?(0,h.t)("core","Choose {file}",{file:o}):(0,h.t)("core","Choose"),variant:"primary"}),i!==Kt.bh.CopyMove&&i!==Kt.bh.Copy||n.push({callback:l(e,Kt.bh.Copy),label:o?(0,h.t)("core","Copy to {target}",{target:o}):(0,h.t)("core","Copy"),variant:"primary",icon:Wt}),i!==Kt.bh.Move&&i!==Kt.bh.CopyMove||n.push({callback:l(e,Kt.bh.Move),label:o?(0,h.t)("core","Move to {target}",{target:o}):(0,h.t)("core","Move"),variant:i===Kt.bh.Move?"primary":"secondary",icon:''}),n}),n&&c.setMimeTypeFilter("string"==typeof n?[n]:n||[]),"function"==typeof a?.filter&&c.setFilter(t=>a.filter((t=>({id:t.fileid||null,path:t.path,mimetype:t.mime||null,mtime:t.mtime?.getTime()||null,permissions:t.permissions,name:t.attributes?.displayName||t.basename,etag:t.attributes?.etag||null,hasPreview:t.attributes?.hasPreview||null,mountType:t.attributes?.mountType||null,quotaAvailableBytes:t.attributes?.quotaAvailableBytes||null,icon:null,sharePermissions:null}))(t))),c.allowDirectories(!0===a?.allowDirectoryChooser||n?.includes("httpd/unix-directory")||!1).setMultiSelect(r).startAt(o).build().pick()},message:function(t,e,r,n,s=()=>{},i,o){const a=(new Kt.ik).setName(e).setText(o?"":t).setButtons(Zt._getLegacyButtons(n,s));switch(r){case"alert":a.setSeverity("warning");break;case"notice":a.setSeverity("info")}const l=a.build();return o&&l.setHTML(t),l.show().then(()=>{s._clicked||s(!1)})},_getLegacyButtons(t,e){const r=[];switch("object"==typeof t?t.type:t){case Zt.YES_NO_BUTTONS:r.push({label:t?.cancel??(0,h.t)("core","No"),callback:()=>{e._clicked=!0,e(!1)}}),r.push({label:t?.confirm??(0,h.t)("core","Yes"),variant:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;case Zt.OK_BUTTONS:r.push({label:t?.confirm??(0,h.t)("core","OK"),variant:"primary",callback:()=>{e._clicked=!0,e(!0)}});break;default:et.error("Invalid call to OC.dialogs")}return r},_fileexistsshown:!1,fileexists:function(t,e,r,s){const i=this,o=new(xt().Deferred),a=function(e,r,n){const s=e.find(".template").clone().removeClass("template").addClass("conflict"),i=s.find(".original"),o=s.find(".replacement");s.data("data",t),s.find(".filename").text(r.name),i.find(".size").text(rr.Util.humanFileSize(r.size)),i.find(".mtime").text(rr.Util.formatDate(r.mtime)),n.size&&n.lastModified&&(o.find(".size").text(rr.Util.humanFileSize(n.size)),o.find(".mtime").text(rr.Util.formatDate(n.lastModified)));let a=r.directory+"/"+r.name;const l={file:a,x:96,y:96,c:r.etag,forceIcon:0};let c=Files.generatePreviewUrl(l);c=c.replace(/'/g,"%27"),i.find(".icon").css({"background-image":"url('"+c+"')"}),function(t){const e=new(xt().Deferred),r=t.type&&t.type.split("/").shift();if(window.FileReader&&"image"===r){const r=new FileReader;r.onload=function(t){const r=new Blob([t.target.result]);window.URL=window.URL||window.webkitURL;const n=window.URL.createObjectURL(r),s=new Image;s.src=n,s.onload=function(){const t=function(t){const e=document.createElement("canvas"),r=t.width,n=t.height;let s,i;r>n?(i=0,s=(r-n)/2):(i=(n-r)/2,s=0);const o=Math.min(r,n);return e.width=o,e.height=o,e.getContext("2d").drawImage(t,s,i,o,o,0,0,o,o),function(t,e,r,n,s){n=Math.round(n),s=Math.round(s);const i=t.getContext("2d").getImageData(0,0,e,r),o=t.getContext("2d").getImageData(0,0,n,s),a=i.data,l=o.data,c=e/n,u=r/s,d=Math.ceil(c/2),h=Math.ceil(u/2);for(let t=0;t=-1&&c<=1&&(i=2*c*c*c-3*c*c+1,i>0&&(r=4*(t+n*e),v+=i*a[r+3],p+=i,a[r+3]<255&&(i=i*a[r+3]/250),f+=i*a[r],m+=i*a[r+1],g+=i*a[r+2],o+=i))}}l[s]=f/o,l[s+1]=m/o,l[s+2]=g/o,l[s+3]=v/p}t.getContext("2d").clearRect(0,0,Math.max(e,n),Math.max(r,s)),t.width=n,t.height=s,t.getContext("2d").putImageData(o,0,0)}(e,o,o,96,96),e.toDataURL("image/png",.7)}(s);e.resolve(t)}},r.readAsArrayBuffer(t)}else e.reject();return e}(n).then(function(t){o.find(".icon").css("background-image","url("+t+")")},function(){a=rr.MimeType.getIconUrl(n.type),o.find(".icon").css("background-image","url("+a+")")});const u=e.find(".conflict").length;i.find("input:checkbox").attr("id","checkbox_original_"+u),o.find("input:checkbox").attr("id","checkbox_replacement_"+u),e.append(s),n.lastModified>r.mtime?o.find(".mtime").css("font-weight","bold"):n.lastModifiedr.size?o.find(".size").css("font-weight","bold"):n.size&&n.size0?(xt()(c).find(".allnewfiles").prop("checked",!1),xt()(c).find(".allnewfiles + .count").text((0,h.t)("core","({count} selected)",{count:t}))):(xt()(c).find(".allnewfiles").prop("checked",!1),xt()(c).find(".allnewfiles + .count").text("")),m()}),xt()(c).on("click",".original,.allexistingfiles",function(){const t=xt()(c).find('.conflict .original input[type="checkbox"]:checked').length;t===xt()(c+" .conflict").length?(xt()(c).find(".allexistingfiles").prop("checked",!0),xt()(c).find(".allexistingfiles + .count").text((0,h.t)("core","(all selected)"))):t>0?(xt()(c).find(".allexistingfiles").prop("checked",!1),xt()(c).find(".allexistingfiles + .count").text((0,h.t)("core","({count} selected)",{count:t}))):(xt()(c).find(".allexistingfiles").prop("checked",!1),xt()(c).find(".allexistingfiles + .count").text("")),m()}),o.resolve()}).fail(function(){o.reject(),alert((0,h.t)("core","Error loading file exists template"))});return o.promise()},_getFileExistsTemplate:function(){const t=xt().Deferred();if(this.$fileexistsTemplate)t.resolve(this.$fileexistsTemplate);else{const e=this;xt().get(rr.filePath("core","templates/legacy","fileexists.html"),function(r){e.$fileexistsTemplate=xt()(r),t.resolve(e.$fileexistsTemplate)}).fail(function(){t.reject()})}return t.promise()}},te=Zt;function ee(){return document.head.dataset.requesttoken}function re(t,e){let r,n,s="";if(this.typelessListeners=[],this.closed=!1,this.listeners={},e)for(r in e)s+=r+"="+encodeURIComponent(e[r])+"&";if(s+="requesttoken="+encodeURIComponent(ee()),this.useFallBack||"undefined"==typeof EventSource){const e="oc_eventsource_iframe_"+re.iframeCount;re.fallBackSources[re.iframeCount]=this,this.iframe=xt()(""),this.iframe.attr("id",e),this.iframe.hide(),n="&",-1===t.indexOf("?")&&(n="?"),this.iframe.attr("src",t+n+"fallback=true&fallback_id="+re.iframeCount+"&"+s),xt()("body").append(this.iframe),this.useFallBack=!0,re.iframeCount++}else n="&",-1===t.indexOf("?")&&(n="?"),this.source=new EventSource(t+n+s),this.source.onmessage=function(t){for(let e=0;e").join(">").split('"').join(""").split("'").join("'")}(t),e);return r.toastElement.toastify=r,xt()(r.toastElement)},showUpdate(t){return this.updatableNotification&&this.updatableNotification.hideToast(),this.updatableNotification=(0,Kt.rG)(t,{timeout:Kt.DH}),this.updatableNotification.toastElement.toastify=this.updatableNotification,xt()(this.updatableNotification.toastElement)},showTemporary(t,e){(e=e||{}).timeout=e.timeout||Kt.aR;const r=(0,Kt.rG)(t,e);return r.toastElement.toastify=r,xt()(r.toastElement)},isHidden:()=>!xt()("#content").find(".toastify").length};var ge=s(47176);const ve={requiresPasswordConfirmation:()=>(0,ge.oB)(),requirePasswordConfirmation(t,e,r){(0,ge.C5)().then(t,r)}},be={_plugins:{},register(t,e){let r=this._plugins[t];r||(r=this._plugins[t]=[]),r.push(e)},getPlugins(t){return this._plugins[t]||[]},attach(t,e,r){const n=this.getPlugins(t);for(let t=0;tconsole.error("SEMVER",...t):()=>{};return _e=t}function Pe(){if(Ae)return ye;Ae=1;const t=Number.MAX_SAFE_INTEGER||9007199254740991;return ye={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:16,MAX_SAFE_BUILD_LENGTH:250,MAX_SAFE_INTEGER:t,RELEASE_TYPES:["major","premajor","minor","preminor","patch","prepatch","prerelease"],SEMVER_SPEC_VERSION:"2.0.0",FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}}var Oe,Se,Le,Re,ke,De,Me,Fe,je,Ue,Be,$e,He,Ge={exports:{}};function Ve(){if(Me)return De;Me=1;const t=Ie(),{MAX_LENGTH:e,MAX_SAFE_INTEGER:r}=Pe(),{safeRe:n,t:s}=(Oe||(Oe=1,function(t,e){const{MAX_SAFE_COMPONENT_LENGTH:r,MAX_SAFE_BUILD_LENGTH:n,MAX_LENGTH:s}=Pe(),i=Ie(),o=(e=t.exports={}).re=[],a=e.safeRe=[],l=e.src=[],c=e.safeSrc=[],u=e.t={};let d=0;const h="[a-zA-Z0-9-]",p=[["\\s",1],["\\d",s],[h,n]],f=(t,e,r)=>{const n=(t=>{for(const[e,r]of p)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t})(e),s=d++;i(t,s,e),u[t]=s,l[s]=e,c[s]=n,o[s]=new RegExp(e,r?"g":void 0),a[s]=new RegExp(n,r?"g":void 0)};f("NUMERICIDENTIFIER","0|[1-9]\\d*"),f("NUMERICIDENTIFIERLOOSE","\\d+"),f("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${h}*`),f("MAINVERSION",`(${l[u.NUMERICIDENTIFIER]})\\.(${l[u.NUMERICIDENTIFIER]})\\.(${l[u.NUMERICIDENTIFIER]})`),f("MAINVERSIONLOOSE",`(${l[u.NUMERICIDENTIFIERLOOSE]})\\.(${l[u.NUMERICIDENTIFIERLOOSE]})\\.(${l[u.NUMERICIDENTIFIERLOOSE]})`),f("PRERELEASEIDENTIFIER",`(?:${l[u.NONNUMERICIDENTIFIER]}|${l[u.NUMERICIDENTIFIER]})`),f("PRERELEASEIDENTIFIERLOOSE",`(?:${l[u.NONNUMERICIDENTIFIER]}|${l[u.NUMERICIDENTIFIERLOOSE]})`),f("PRERELEASE",`(?:-(${l[u.PRERELEASEIDENTIFIER]}(?:\\.${l[u.PRERELEASEIDENTIFIER]})*))`),f("PRERELEASELOOSE",`(?:-?(${l[u.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${l[u.PRERELEASEIDENTIFIERLOOSE]})*))`),f("BUILDIDENTIFIER",`${h}+`),f("BUILD",`(?:\\+(${l[u.BUILDIDENTIFIER]}(?:\\.${l[u.BUILDIDENTIFIER]})*))`),f("FULLPLAIN",`v?${l[u.MAINVERSION]}${l[u.PRERELEASE]}?${l[u.BUILD]}?`),f("FULL",`^${l[u.FULLPLAIN]}$`),f("LOOSEPLAIN",`[v=\\s]*${l[u.MAINVERSIONLOOSE]}${l[u.PRERELEASELOOSE]}?${l[u.BUILD]}?`),f("LOOSE",`^${l[u.LOOSEPLAIN]}$`),f("GTLT","((?:<|>)?=?)"),f("XRANGEIDENTIFIERLOOSE",`${l[u.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`),f("XRANGEIDENTIFIER",`${l[u.NUMERICIDENTIFIER]}|x|X|\\*`),f("XRANGEPLAIN",`[v=\\s]*(${l[u.XRANGEIDENTIFIER]})(?:\\.(${l[u.XRANGEIDENTIFIER]})(?:\\.(${l[u.XRANGEIDENTIFIER]})(?:${l[u.PRERELEASE]})?${l[u.BUILD]}?)?)?`),f("XRANGEPLAINLOOSE",`[v=\\s]*(${l[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[u.XRANGEIDENTIFIERLOOSE]})(?:\\.(${l[u.XRANGEIDENTIFIERLOOSE]})(?:${l[u.PRERELEASELOOSE]})?${l[u.BUILD]}?)?)?`),f("XRANGE",`^${l[u.GTLT]}\\s*${l[u.XRANGEPLAIN]}$`),f("XRANGELOOSE",`^${l[u.GTLT]}\\s*${l[u.XRANGEPLAINLOOSE]}$`),f("COERCEPLAIN",`(^|[^\\d])(\\d{1,${r}})(?:\\.(\\d{1,${r}}))?(?:\\.(\\d{1,${r}}))?`),f("COERCE",`${l[u.COERCEPLAIN]}(?:$|[^\\d])`),f("COERCEFULL",l[u.COERCEPLAIN]+`(?:${l[u.PRERELEASE]})?(?:${l[u.BUILD]})?(?:$|[^\\d])`),f("COERCERTL",l[u.COERCE],!0),f("COERCERTLFULL",l[u.COERCEFULL],!0),f("LONETILDE","(?:~>?)"),f("TILDETRIM",`(\\s*)${l[u.LONETILDE]}\\s+`,!0),e.tildeTrimReplace="$1~",f("TILDE",`^${l[u.LONETILDE]}${l[u.XRANGEPLAIN]}$`),f("TILDELOOSE",`^${l[u.LONETILDE]}${l[u.XRANGEPLAINLOOSE]}$`),f("LONECARET","(?:\\^)"),f("CARETTRIM",`(\\s*)${l[u.LONECARET]}\\s+`,!0),e.caretTrimReplace="$1^",f("CARET",`^${l[u.LONECARET]}${l[u.XRANGEPLAIN]}$`),f("CARETLOOSE",`^${l[u.LONECARET]}${l[u.XRANGEPLAINLOOSE]}$`),f("COMPARATORLOOSE",`^${l[u.GTLT]}\\s*(${l[u.LOOSEPLAIN]})$|^$`),f("COMPARATOR",`^${l[u.GTLT]}\\s*(${l[u.FULLPLAIN]})$|^$`),f("COMPARATORTRIM",`(\\s*)${l[u.GTLT]}\\s*(${l[u.LOOSEPLAIN]}|${l[u.XRANGEPLAIN]})`,!0),e.comparatorTrimReplace="$1$2$3",f("HYPHENRANGE",`^\\s*(${l[u.XRANGEPLAIN]})\\s+-\\s+(${l[u.XRANGEPLAIN]})\\s*$`),f("HYPHENRANGELOOSE",`^\\s*(${l[u.XRANGEPLAINLOOSE]})\\s+-\\s+(${l[u.XRANGEPLAINLOOSE]})\\s*$`),f("STAR","(<|>)?=?\\s*\\*"),f("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$"),f("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")}(Ge,Ge.exports)),Ge.exports),i=function(){if(Le)return Se;Le=1;const t=Object.freeze({loose:!0}),e=Object.freeze({});return Se=r=>r?"object"!=typeof r?t:r:e,Se}(),{compareIdentifiers:o}=function(){if(ke)return Re;ke=1;const t=/^[0-9]+$/,e=(e,r)=>{if("number"==typeof e&&"number"==typeof r)return e===r?0:ee(r,t)}}();class a{constructor(o,l){if(l=i(l),o instanceof a){if(o.loose===!!l.loose&&o.includePrerelease===!!l.includePrerelease)return o;o=o.version}else if("string"!=typeof o)throw new TypeError(`Invalid version. Must be a string. Got type "${typeof o}".`);if(o.length>e)throw new TypeError(`version is longer than ${e} characters`);t("SemVer",o,l),this.options=l,this.loose=!!l.loose,this.includePrerelease=!!l.includePrerelease;const c=o.trim().match(l.loose?n[s.LOOSE]:n[s.FULL]);if(!c)throw new TypeError(`Invalid Version: ${o}`);if(this.raw=o,this.major=+c[1],this.minor=+c[2],this.patch=+c[3],this.major>r||this.major<0)throw new TypeError("Invalid major version");if(this.minor>r||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>r||this.patch<0)throw new TypeError("Invalid patch version");c[4]?this.prerelease=c[4].split(".").map(t=>{if(/^[0-9]+$/.test(t)){const e=+t;if(e>=0&&et.major?1:this.minort.minor?1:this.patcht.patch?1:0}comparePre(e){if(e instanceof a||(e=new a(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{const n=this.prerelease[r],s=e.prerelease[r];if(t("prerelease compare",r,n,s),void 0===n&&void 0===s)return 0;if(void 0===s)return 1;if(void 0===n)return-1;if(n!==s)return o(n,s)}while(++r)}compareBuild(e){e instanceof a||(e=new a(e,this.options));let r=0;do{const n=this.build[r],s=e.build[r];if(t("build compare",r,n,s),void 0===n&&void 0===s)return 0;if(void 0===s)return 1;if(void 0===n)return-1;if(n!==s)return o(n,s)}while(++r)}inc(t,e,r){if(t.startsWith("pre")){if(!e&&!1===r)throw new Error("invalid increment argument: identifier is empty");if(e){const t=`-${e}`.match(this.options.loose?n[s.PRERELEASELOOSE]:n[s.PRERELEASE]);if(!t||t[1]!==e)throw new Error(`invalid identifier: ${e}`)}}switch(t){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",e,r);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",e,r);break;case"prepatch":this.prerelease.length=0,this.inc("patch",e,r),this.inc("pre",e,r);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",e,r),this.inc("pre",e,r);break;case"release":if(0===this.prerelease.length)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":{const t=Number(r)?1:0;if(0===this.prerelease.length)this.prerelease=[t];else{let n=this.prerelease.length;for(;--n>=0;)"number"==typeof this.prerelease[n]&&(this.prerelease[n]++,n=-2);if(-1===n){if(e===this.prerelease.join(".")&&!1===r)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(t)}}if(e){let n=[e,t];!1===r&&(n=[e]),0===o(this.prerelease[0],e)?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${t}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}}return De=a}!function(){if(je)return Fe;je=1;const t=Ve();Fe=(e,r)=>new t(e,r).major}(),function(){if(He)return $e;He=1;const t=function(){if(Be)return Ue;Be=1;const t=Ve();return Ue=(e,r,n=!1)=>{if(e instanceof t)return e;try{return new t(e,r)}catch(t){if(!n)return null;throw t}},Ue}();$e=(e,r)=>{const n=t(e,r);return n?n.version:null}}(),Te.m;var ze;ze||(ze=1,function(t){t.parser=function(t,e){return new n(t,e)},t.SAXParser=n,t.SAXStream=i,t.createStream=function(t,e){return new i(t,e)},t.MAX_BUFFER_LENGTH=65536;var e,r=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];function n(e,s){if(!(this instanceof n))return new n(e,s);var i=this;!function(t){for(var e=0,n=r.length;e"===i?(C(n,"onsgmldeclaration",n.sgmlDecl),n.sgmlDecl="",n.state=A.TEXT):g(i)?(n.state=A.SGML_DECL_QUOTED,n.sgmlDecl+=i):n.sgmlDecl+=i;continue;case A.SGML_DECL_QUOTED:i===n.q&&(n.state=A.SGML_DECL,n.q=""),n.sgmlDecl+=i;continue;case A.DOCTYPE:">"===i?(n.state=A.TEXT,C(n,"ondoctype",n.doctype),n.doctype=!0):(n.doctype+=i,"["===i?n.state=A.DOCTYPE_DTD:g(i)&&(n.state=A.DOCTYPE_QUOTED,n.q=i));continue;case A.DOCTYPE_QUOTED:n.doctype+=i,i===n.q&&(n.q="",n.state=A.DOCTYPE);continue;case A.DOCTYPE_DTD:"]"===i?(n.doctype+=i,n.state=A.DOCTYPE):"<"===i?(n.state=A.OPEN_WAKA,n.startTagPosition=n.position):g(i)?(n.doctype+=i,n.state=A.DOCTYPE_DTD_QUOTED,n.q=i):n.doctype+=i;continue;case A.DOCTYPE_DTD_QUOTED:n.doctype+=i,i===n.q&&(n.state=A.DOCTYPE_DTD,n.q="");continue;case A.COMMENT:"-"===i?n.state=A.COMMENT_ENDING:n.comment+=i;continue;case A.COMMENT_ENDING:"-"===i?(n.state=A.COMMENT_ENDED,n.comment=I(n.opt,n.comment),n.comment&&C(n,"oncomment",n.comment),n.comment=""):(n.comment+="-"+i,n.state=A.COMMENT);continue;case A.COMMENT_ENDED:">"!==i?(S(n,"Malformed comment"),n.comment+="--"+i,n.state=A.COMMENT):n.doctype&&!0!==n.doctype?n.state=A.DOCTYPE_DTD:n.state=A.TEXT;continue;case A.CDATA:"]"===i?n.state=A.CDATA_ENDING:n.cdata+=i;continue;case A.CDATA_ENDING:"]"===i?n.state=A.CDATA_ENDING_2:(n.cdata+="]"+i,n.state=A.CDATA);continue;case A.CDATA_ENDING_2:">"===i?(n.cdata&&C(n,"oncdata",n.cdata),C(n,"onclosecdata"),n.cdata="",n.state=A.TEXT):"]"===i?n.cdata+="]":(n.cdata+="]]"+i,n.state=A.CDATA);continue;case A.PROC_INST:"?"===i?n.state=A.PROC_INST_ENDING:m(i)?n.state=A.PROC_INST_BODY:n.procInstName+=i;continue;case A.PROC_INST_BODY:if(!n.procInstBody&&m(i))continue;"?"===i?n.state=A.PROC_INST_ENDING:n.procInstBody+=i;continue;case A.PROC_INST_ENDING:">"===i?(C(n,"onprocessinginstruction",{name:n.procInstName,body:n.procInstBody}),n.procInstName=n.procInstBody="",n.state=A.TEXT):(n.procInstBody+="?"+i,n.state=A.PROC_INST_BODY);continue;case A.OPEN_TAG:b(h,i)?n.tagName+=i:(L(n),">"===i?D(n):"/"===i?n.state=A.OPEN_TAG_SLASH:(m(i)||S(n,"Invalid character in tag name"),n.state=A.ATTRIB));continue;case A.OPEN_TAG_SLASH:">"===i?(D(n,!0),M(n)):(S(n,"Forward-slash in opening tag not followed by >"),n.state=A.ATTRIB);continue;case A.ATTRIB:if(m(i))continue;">"===i?D(n):"/"===i?n.state=A.OPEN_TAG_SLASH:b(d,i)?(n.attribName=i,n.attribValue="",n.state=A.ATTRIB_NAME):S(n,"Invalid attribute name");continue;case A.ATTRIB_NAME:"="===i?n.state=A.ATTRIB_VALUE:">"===i?(S(n,"Attribute without value"),n.attribValue=n.attribName,k(n),D(n)):m(i)?n.state=A.ATTRIB_NAME_SAW_WHITE:b(h,i)?n.attribName+=i:S(n,"Invalid attribute name");continue;case A.ATTRIB_NAME_SAW_WHITE:if("="===i)n.state=A.ATTRIB_VALUE;else{if(m(i))continue;S(n,"Attribute without value"),n.tag.attributes[n.attribName]="",n.attribValue="",C(n,"onattribute",{name:n.attribName,value:""}),n.attribName="",">"===i?D(n):b(d,i)?(n.attribName=i,n.state=A.ATTRIB_NAME):(S(n,"Invalid attribute name"),n.state=A.ATTRIB)}continue;case A.ATTRIB_VALUE:if(m(i))continue;g(i)?(n.q=i,n.state=A.ATTRIB_VALUE_QUOTED):(n.opt.unquotedAttributeValues||P(n,"Unquoted attribute value"),n.state=A.ATTRIB_VALUE_UNQUOTED,n.attribValue=i);continue;case A.ATTRIB_VALUE_QUOTED:if(i!==n.q){"&"===i?n.state=A.ATTRIB_VALUE_ENTITY_Q:n.attribValue+=i;continue}k(n),n.q="",n.state=A.ATTRIB_VALUE_CLOSED;continue;case A.ATTRIB_VALUE_CLOSED:m(i)?n.state=A.ATTRIB:">"===i?D(n):"/"===i?n.state=A.OPEN_TAG_SLASH:b(d,i)?(S(n,"No whitespace between attributes"),n.attribName=i,n.attribValue="",n.state=A.ATTRIB_NAME):S(n,"Invalid attribute name");continue;case A.ATTRIB_VALUE_UNQUOTED:if(!v(i)){"&"===i?n.state=A.ATTRIB_VALUE_ENTITY_U:n.attribValue+=i;continue}k(n),">"===i?D(n):n.state=A.ATTRIB;continue;case A.CLOSE_TAG:if(n.tagName)">"===i?M(n):b(h,i)?n.tagName+=i:n.script?(n.script+=""===i?M(n):S(n,"Invalid characters in closing tag");continue;case A.TEXT_ENTITY:case A.ATTRIB_VALUE_ENTITY_Q:case A.ATTRIB_VALUE_ENTITY_U:var u,_;switch(n.state){case A.TEXT_ENTITY:u=A.TEXT,_="textNode";break;case A.ATTRIB_VALUE_ENTITY_Q:u=A.ATTRIB_VALUE_QUOTED,_="attribValue";break;case A.ATTRIB_VALUE_ENTITY_U:u=A.ATTRIB_VALUE_UNQUOTED,_="attribValue"}if(";"===i){var w=F(n);n.opt.unparsedEntities&&!Object.values(t.XML_ENTITIES).includes(w)?(n.entity="",n.state=u,n.write(w)):(n[_]+=w,n.entity="",n.state=u)}else b(n.entity.length?f:p,i)?n.entity+=i:(S(n,"Invalid character in entity name"),n[_]+="&"+n.entity+i,n.entity="",n.state=u);continue;default:throw new Error(n,"Unknown state: "+n.state)}return n.position>=n.bufferCheckPosition&&function(e){for(var n=Math.max(t.MAX_BUFFER_LENGTH,10),s=0,i=0,o=r.length;in)switch(r[i]){case"textNode":x(e);break;case"cdata":C(e,"oncdata",e.cdata),e.cdata="";break;case"script":C(e,"onscript",e.script),e.script="";break;default:P(e,"Max buffer length exceeded: "+r[i])}s=Math.max(s,a)}var l=t.MAX_BUFFER_LENGTH-s;e.bufferCheckPosition=l+e.position}(n),n},resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){var t;x(t=this),""!==t.cdata&&(C(t,"oncdata",t.cdata),t.cdata=""),""!==t.script&&(C(t,"onscript",t.script),t.script="")}};try{e=require("stream").Stream}catch(t){e=function(){}}e||(e=function(){});var s=t.EVENTS.filter(function(t){return"error"!==t&&"end"!==t});function i(t,r){if(!(this instanceof i))return new i(t,r);e.apply(this),this._parser=new n(t,r),this.writable=!0,this.readable=!0;var o=this;this._parser.onend=function(){o.emit("end")},this._parser.onerror=function(t){o.emit("error",t),o._parser.error=null},this._decoder=null,s.forEach(function(t){Object.defineProperty(o,"on"+t,{get:function(){return o._parser["on"+t]},set:function(e){if(!e)return o.removeAllListeners(t),o._parser["on"+t]=e,e;o.on(t,e)},enumerable:!0,configurable:!1})})}i.prototype=Object.create(e.prototype,{constructor:{value:i}}),i.prototype.write=function(t){if("function"==typeof xe&&"function"==typeof xe.isBuffer&&xe.isBuffer(t)){if(!this._decoder){var e=Ne.I;this._decoder=new e("utf8")}t=this._decoder.write(t)}return this._parser.write(t.toString()),this.emit("data",t),!0},i.prototype.end=function(t){return t&&t.length&&this.write(t),this._parser.end(),!0},i.prototype.on=function(t,r){var n=this;return n._parser["on"+t]||-1===s.indexOf(t)||(n._parser["on"+t]=function(){var e=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);e.splice(0,0,t),n.emit.apply(n,e)}),e.prototype.on.call(n,t,r)};var o="[CDATA[",a="DOCTYPE",l="http://www.w3.org/XML/1998/namespace",c="http://www.w3.org/2000/xmlns/",u={xml:l,xmlns:c},d=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,h=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/,p=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,f=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040.\d-]/;function m(t){return" "===t||"\n"===t||"\r"===t||"\t"===t}function g(t){return'"'===t||"'"===t}function v(t){return">"===t||m(t)}function b(t,e){return t.test(e)}function E(t,e){return!b(t,e)}var _,w,y,A=0;for(var T in t.STATE={BEGIN:A++,BEGIN_WHITESPACE:A++,TEXT:A++,TEXT_ENTITY:A++,OPEN_WAKA:A++,SGML_DECL:A++,SGML_DECL_QUOTED:A++,DOCTYPE:A++,DOCTYPE_QUOTED:A++,DOCTYPE_DTD:A++,DOCTYPE_DTD_QUOTED:A++,COMMENT_STARTING:A++,COMMENT:A++,COMMENT_ENDING:A++,COMMENT_ENDED:A++,CDATA:A++,CDATA_ENDING:A++,CDATA_ENDING_2:A++,PROC_INST:A++,PROC_INST_BODY:A++,PROC_INST_ENDING:A++,OPEN_TAG:A++,OPEN_TAG_SLASH:A++,ATTRIB:A++,ATTRIB_NAME:A++,ATTRIB_NAME_SAW_WHITE:A++,ATTRIB_VALUE:A++,ATTRIB_VALUE_QUOTED:A++,ATTRIB_VALUE_CLOSED:A++,ATTRIB_VALUE_UNQUOTED:A++,ATTRIB_VALUE_ENTITY_Q:A++,ATTRIB_VALUE_ENTITY_U:A++,CLOSE_TAG:A++,CLOSE_TAG_SAW_WHITE:A++,SCRIPT:A++,SCRIPT_ENDING:A++},t.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},t.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(t.ENTITIES).forEach(function(e){var r=t.ENTITIES[e],n="number"==typeof r?String.fromCharCode(r):r;t.ENTITIES[e]=n}),t.STATE)t.STATE[t.STATE[T]]=T;function N(t,e,r){t[e]&&t[e](r)}function C(t,e,r){t.textNode&&x(t),N(t,e,r)}function x(t){t.textNode=I(t.opt,t.textNode),t.textNode&&N(t,"ontext",t.textNode),t.textNode=""}function I(t,e){return t.trim&&(e=e.trim()),t.normalize&&(e=e.replace(/\s+/g," ")),e}function P(t,e){return x(t),t.trackPosition&&(e+="\nLine: "+t.line+"\nColumn: "+t.column+"\nChar: "+t.c),e=new Error(e),t.error=e,N(t,"onerror",e),t}function O(t){return t.sawRoot&&!t.closedRoot&&S(t,"Unclosed root tag"),t.state!==A.BEGIN&&t.state!==A.BEGIN_WHITESPACE&&t.state!==A.TEXT&&P(t,"Unexpected end"),x(t),t.c="",t.closed=!0,N(t,"onend"),n.call(t,t.strict,t.opt),t}function S(t,e){if("object"!=typeof t||!(t instanceof n))throw new Error("bad call to strictFail");t.strict&&P(t,e)}function L(t){t.strict||(t.tagName=t.tagName[t.looseCase]());var e=t.tags[t.tags.length-1]||t,r=t.tag={name:t.tagName,attributes:{}};t.opt.xmlns&&(r.ns=e.ns),t.attribList.length=0,C(t,"onopentagstart",r)}function R(t,e){var r=t.indexOf(":")<0?["",t]:t.split(":"),n=r[0],s=r[1];return e&&"xmlns"===t&&(n="xmlns",s=""),{prefix:n,local:s}}function k(t){if(t.strict||(t.attribName=t.attribName[t.looseCase]()),-1!==t.attribList.indexOf(t.attribName)||t.tag.attributes.hasOwnProperty(t.attribName))t.attribName=t.attribValue="";else{if(t.opt.xmlns){var e=R(t.attribName,!0),r=e.prefix,n=e.local;if("xmlns"===r)if("xml"===n&&t.attribValue!==l)S(t,"xml: prefix must be bound to "+l+"\nActual: "+t.attribValue);else if("xmlns"===n&&t.attribValue!==c)S(t,"xmlns: prefix must be bound to "+c+"\nActual: "+t.attribValue);else{var s=t.tag,i=t.tags[t.tags.length-1]||t;s.ns===i.ns&&(s.ns=Object.create(i.ns)),s.ns[n]=t.attribValue}t.attribList.push([t.attribName,t.attribValue])}else t.tag.attributes[t.attribName]=t.attribValue,C(t,"onattribute",{name:t.attribName,value:t.attribValue});t.attribName=t.attribValue=""}}function D(t,e){if(t.opt.xmlns){var r=t.tag,n=R(t.tagName);r.prefix=n.prefix,r.local=n.local,r.uri=r.ns[n.prefix]||"",r.prefix&&!r.uri&&(S(t,"Unbound namespace prefix: "+JSON.stringify(t.tagName)),r.uri=n.prefix);var s=t.tags[t.tags.length-1]||t;r.ns&&s.ns!==r.ns&&Object.keys(r.ns).forEach(function(e){C(t,"onopennamespace",{prefix:e,uri:r.ns[e]})});for(var i=0,o=t.attribList.length;i",t.tagName="",void(t.state=A.SCRIPT);C(t,"onscript",t.script),t.script=""}var e=t.tags.length,r=t.tagName;t.strict||(r=r[t.looseCase]());for(var n=r;e--&&t.tags[e].name!==n;)S(t,"Unexpected close tag");if(e<0)return S(t,"Unmatched closing tag: "+t.tagName),t.textNode+="",void(t.state=A.TEXT);t.tagName=r;for(var s=t.tags.length;s-- >e;){var i=t.tag=t.tags.pop();t.tagName=t.tag.name,C(t,"onclosetag",t.tagName);var o={};for(var a in i.ns)o[a]=i.ns[a];var l=t.tags[t.tags.length-1]||t;t.opt.xmlns&&i.ns!==l.ns&&Object.keys(i.ns).forEach(function(e){var r=i.ns[e];C(t,"onclosenamespace",{prefix:e,uri:r})})}0===e&&(t.closedRoot=!0),t.tagName=t.attribValue=t.attribName="",t.attribList.length=0,t.state=A.TEXT}function F(t){var e,r=t.entity,n=r.toLowerCase(),s="";return t.ENTITIES[r]?t.ENTITIES[r]:t.ENTITIES[n]?t.ENTITIES[n]:("#"===(r=n).charAt(0)&&("x"===r.charAt(1)?(r=r.slice(2),s=(e=parseInt(r,16)).toString(16)):(r=r.slice(1),s=(e=parseInt(r,10)).toString(10))),r=r.replace(/^0+/,""),isNaN(e)||s.toLowerCase()!==r?(S(t,"Invalid character entity"),"&"+t.entity+";"):String.fromCodePoint(e))}function j(t,e){"<"===e?(t.state=A.OPEN_WAKA,t.startTagPosition=t.position):m(e)||(S(t,"Non-whitespace before first tag."),t.textNode=e,t.state=A.TEXT)}function U(t,e){var r="";return e1114111||w(o)!==o)throw RangeError("Invalid code point: "+o);o<=65535?r.push(o):(t=55296+((o-=65536)>>10),e=o%1024+56320,r.push(t,e)),(n+1===s||r.length>16384)&&(i+=_.apply(null,r),r.length=0)}return i},Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:y,configurable:!0,writable:!0}):String.fromCodePoint=y)}({})),Error;const qe=["B","KB","MB","GB","TB","PB"],Xe=["B","KiB","MiB","GiB","TiB","PiB"];var Ye=s(95093),We=s.n(Ye);const Ke={_handlers:[],_pushState(t,e,r){let n;if(n="string"==typeof t?t:rr.buildQueryString(t),window.history.pushState){if(e=e||location.pathname+"?"+n,navigator.userAgent.toLowerCase().indexOf("firefox")>-1&&parseInt(navigator.userAgent.split("/").pop())<51){const t=document.querySelectorAll('[fill^="url(#"], [stroke^="url(#"], [filter^="url(#invert"]');for(let e,r=0,n=t.length;r=0?t.substr(e+1):t.length?t.substr(1):""},_decodeQuery:t=>t.replace(/\+/g," "),parseUrlQuery(){const t=this._parseHashQuery();let e;return t&&(e=rr.parseQueryString(this._decodeQuery(t))),e=Dt.default.extend(e||{},rr.parseQueryString(this._decodeQuery(location.search))),e||{}},_onPopState(t){if(this._cancelPop)return void(this._cancelPop=!1);let e;if(this._handlers.length){e=t&&t.state,Dt.default.isString(e)?e=rr.parseQueryString(e):e||(e=this.parseUrlQuery()||{});for(let t=0;t="0"&&r<="9";o!==i&&(s++,e[s]="",i=o),e[s]+=r,n++}return e}const Je={History:Ke,humanFileSize:function(t,e=!1,r=!1,n=!1){r=r&&!n,"string"==typeof t&&(t=Number(t));let s=t>0?Math.floor(Math.log(t)/Math.log(n?1e3:1024)):0;s=Math.min((r?Xe.length:qe.length)-1,s);const i=r?Xe[s]:qe[s];let o=(t/Math.pow(n?1e3:1024,s)).toFixed(1);return!0===e&&0===s?("0.0"!==o?"< 1 ":"0 ")+(r?Xe[1]:qe[1]):(o=s<2?parseFloat(o).toFixed(0):parseFloat(o).toLocaleString((0,h.lO)()),o+" "+i)},computerFileSize(t){if("string"!=typeof t)return null;const e=t.toLowerCase().trim();let r=null;const n=e.match(/^[\s+]?([0-9]*)(\.([0-9]+))?( +)?([kmgtp]?b?)$/i);return null===n?null:(r=parseFloat(e),isFinite(r)?(n[5]&&(r*={b:1,k:1024,kb:1024,mb:1048576,m:1048576,gb:1073741824,g:1073741824,tb:1099511627776,t:1099511627776,pb:0x4000000000000,p:0x4000000000000}[n[5]]),r=Math.round(r),r):null)},formatDate:(t,e)=>(void 0===window.TESTING&&rr.debug&&et.warn("OC.Util.formatDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment"),e=e||"LLL",We()(t).format(e)),relativeModifiedDate(e){void 0===window.TESTING&&rr.debug&&et.warn("OC.Util.relativeModifiedDate is deprecated and will be removed in Nextcloud 21. See @nextcloud/moment");const r=We()().diff(We()(e));return r>=0&&r<45e3?t("core","seconds ago"):We()(e).fromNow()},getScrollBarWidth(){if(this._scrollBarWidth)return this._scrollBarWidth;const t=document.createElement("p");t.style.width="100%",t.style.height="200px";const e=document.createElement("div");e.style.position="absolute",e.style.top="0px",e.style.left="0px",e.style.visibility="hidden",e.style.width="200px",e.style.height="150px",e.style.overflow="hidden",e.appendChild(t),document.body.appendChild(e);const r=t.offsetWidth;e.style.overflow="scroll";let n=t.offsetWidth;return r===n&&(n=e.clientWidth),document.body.removeChild(e),this._scrollBarWidth=r-n,this._scrollBarWidth},stripTime:t=>new Date(t.getFullYear(),t.getMonth(),t.getDate()),naturalSortCompare(t,e){let r;const n=Qe(t),s=Qe(e);for(r=0;n[r]&&s[r];r++)if(n[r]!==s[r]){const t=Number(n[r]),e=Number(s[r]);return t==n[r]&&e==s[r]?t-e:n[r].localeCompare(s[r],rr.getLanguage())}return n.length-s.length},waitFor(t,e){const r=function(){!0!==t()&&setTimeout(r,e)};r()},isCookieSetToValue(t,e){const r=document.cookie.split(";");for(let n=0;n{(0,Kt.I9)(t("core","Connection to server lost"))},7e3,{trailing:!1}),rr={coreApps:["","admin","log","core/search","core","3rdparty"],menuSpeed:50,PERMISSION_ALL:31,PERMISSION_CREATE:4,PERMISSION_DELETE:8,PERMISSION_NONE:0,PERMISSION_READ:1,PERMISSION_SHARE:16,PERMISSION_UPDATE:2,TAG_FAVORITE:"_$!!$_",Apps:Ot,appConfig:Nt,appswebroots:St,Backbone:Ht,config:Vt,currentUser:Xt,dialogs:te,EventSource:ne,MimeType:i,getCurrentUser:function(){return{uid:Xt,displayName:qt}},isUserAdmin:()=>Tt,L10N:oe,_ajaxConnectionLostHandler:er,_processAjaxError:function(t){(0!==t.status||"abort"!==t.statusText&&"timeout"!==t.statusText&&!rr._reloadCalled)&&([302,303,307,401].includes(t.status)&&(0,Z.HW)()?setTimeout(function(){if(!rr._userIsNavigatingAway&&!rr._reloadCalled){let t=0;const e=5,r=setInterval(function(){me.showUpdate(n("core","Problem loading page, reloading in %n second","Problem loading page, reloading in %n seconds",e-t)),t>=e&&(clearInterval(r),window.location.reload()),t++},1e3);rr._reloadCalled=!0}},100):0===t.status&&setTimeout(function(){rr._userIsNavigatingAway||rr._reloadCalled||rr._ajaxConnectionLostHandler()},100))},registerXHRForErrorProcessing:function(t){t.addEventListener&&(t.addEventListener("load",()=>{4===t.readyState&&(t.status>=200&&t.status<300||304===t.status||xt()(document).trigger(new(xt().Event)("ajaxError"),t))}),t.addEventListener("error",()=>{xt()(document).trigger(new(xt().Event)("ajaxError"),t)}))},getCapabilities:function(){return OC.debug&&et.warn("OC.getCapabilities is deprecated and will be removed in Nextcloud 21. See @nextcloud/capabilities"),(0,Gt.F)()},hideMenus:ce,registerMenu:function(t,e,r,n){e.addClass("menu");const s="A"===t.prop("tagName")||"BUTTON"===t.prop("tagName");t.on(s?"click.menu":"click.menu keyup.menu",function(s){s.preventDefault(),s.key&&"Enter"!==s.key||(e.is(ae)?ce():(ae&&ce(),!0===n&&e.parent().addClass("openedMenu"),t.attr("aria-expanded",!0),e.slideToggle(50,r),ae=e,le=t))})},showMenu:function(t,e,r){e.is(ae)||(ce(),ae=e,le=t,e.trigger(new(xt().Event)("beforeShow")),e.show(),e.trigger(new(xt().Event)("afterShow")),Dt.default.isFunction(r)&&r())},unregisterMenu:function(t,e){e.is(ae)&&ce(),t.off("click.menu").removeClass("menutoggle"),e.removeClass("menu")},basename:At.P8,encodePath:At.O0,dirname:At.pD,isSamePath:At.ys,joinPaths:At.HS,getCanonicalLocale:h.lO,getLocale:h.JK,getLanguage:h.Z0,buildQueryString:function(t){return t?xt().map(t,function(t,e){let r=encodeURIComponent(e);return null!=t&&(r+="="+encodeURIComponent(t)),r}).join("&"):""},parseQueryString:function(t){let e,r;const n={};let s;if(!t)return null;e=t.indexOf("?"),e>=0&&(t=t.substr(e+1));const i=t.replace(/\+/g,"%20").split("&");for(let t=0;t=0?[o.substr(0,e),o.substr(e+1)]:[o],r.length&&(s=decodeURIComponent(r[0]),s&&(n[s]=r.length>1?decodeURIComponent(r[1]):null))}return n},msg:fe,Notification:me,PasswordConfirmation:ve,Plugins:be,theme:Ee,Util:Je,debug:Yt,filePath:l.fg,generateUrl:l.Jv,getRootPath:l.aU,imagePath:l.d0,requestToken:ee(),linkTo:l.uM,linkToOCS:(t,e)=>(0,l.KT)(t,{},{ocsVersion:e||1})+"/",linkToRemote:l.dC,linkToRemoteBase:function(t){return(0,l.aU)()+"/remote.php/"+t},webroot:tr};(0,yt.B1)("csrf-token-update",t=>{OC.requestToken=t.token,et.info("OC.requestToken changed",{token:t.token})});const nr={data:()=>({OC:rr}),methods:{t:oe.translate.bind(oe),n:oe.translatePlural.bind(oe)}};o.Ay.mixin(nr),(new(o.Ay.extend(wt))).$mount("#login")},11999:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(71354),s=r.n(n),i=r(76314),o=r.n(i)()(s());o.push([t.id,".login-box[data-v-518c0816]{width:320px;box-sizing:border-box}.login-box__wrapper[data-v-518c0816]{display:flex;flex-direction:column;gap:calc(2*var(--default-grid-baseline))}.login-box__alternative-logins[data-v-518c0816]{display:flex;flex-direction:column;gap:.75rem}.fade-enter-active[data-v-518c0816],.fade-leave-active[data-v-518c0816]{transition:opacity .3s}.fade-enter[data-v-518c0816],.fade-leave-to[data-v-518c0816]{opacity:0}","",{version:3,sources:["webpack://./core/src/views/Login.vue"],names:[],mappings:"AACA,4BAEC,WAAA,CACA,qBAAA,CAEA,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CAGD,gDACC,YAAA,CACA,qBAAA,CACA,UAAA,CAIF,wEACC,sBAAA,CAGD,6DACC,SAAA",sourcesContent:["\n.login-box {\n\t// Same size as dashboard panels\n\twidth: 320px;\n\tbox-sizing: border-box;\n\n\t&__wrapper {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: calc(2 * var(--default-grid-baseline));\n\t}\n\n\t&__alternative-logins {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 0.75rem;\n\t}\n}\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .3s;\n}\n\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\n\topacity: 0;\n}\n"],sourceRoot:""}]);const a=o},13769:(t,e)=>{"use strict";e.__esModule=!0;var r=["description","fileName","lineNumber","endLineNumber","message","name","number","stack"];function n(t,e){var s=e&&e.loc,i=void 0,o=void 0,a=void 0,l=void 0;s&&(i=s.start.line,o=s.end.line,a=s.start.column,l=s.end.column,t+=" - "+i+":"+a);for(var c=Error.prototype.constructor.call(this,t),u=0;u{"use strict";e.__esModule=!0;var n,s=(n=r(13769))&&n.__esModule?n:{default:n};e.default=function(t){t.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new s.default('Missing helper: "'+arguments[arguments.length-1].name+'"')})},t.exports=e.default},14430:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(71354),s=r.n(n),i=r(76314),o=r.n(i)()(s());o.push([t.id,".button-vue[data-v-bbf83d00]{margin-top:.5rem}","",{version:3,sources:["webpack://./core/src/components/login/LoginButton.vue"],names:[],mappings:"AACA,6BACC,gBAAA",sourcesContent:["\n.button-vue {\n\tmargin-top: .5rem;\n}\n"],sourceRoot:""}]);const a=o},15340:()=>{},19613:(t,e)=>{"use strict";function r(t){this.string=t}e.__esModule=!0,r.prototype.toString=r.prototype.toHTML=function(){return""+this.string},e.default=r,t.exports=e.default},20261:(t,e,r)=>{"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function s(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}e.__esModule=!0;var i=s(r(82871)),o=n(r(19613)),a=n(r(13769)),l=s(r(82849)),c=s(r(7624)),u=n(r(91148));function d(){var t=new i.HandlebarsEnvironment;return l.extend(t,i),t.SafeString=o.default,t.Exception=a.default,t.Utils=l,t.escapeExpression=l.escapeExpression,t.VM=c,t.template=function(e){return c.template(e,t)},t}var h=d();h.create=d,u.default(h),h.default=h,e.default=h,t.exports=e.default},21391:(t,e,r)=>{var n,s,i;i="object"==typeof self&&self.self===self&&self||"object"==typeof globalThis&&globalThis.global===globalThis&&globalThis,n=[r(12111),r(74692),e],s=function(t,e,r){i.Backbone=function(t,e,r,n){var s=t.Backbone,i=Array.prototype.slice;e.VERSION="1.6.1",e.$=n,e.noConflict=function(){return t.Backbone=s,this},e.emulateHTTP=!1,e.emulateJSON=!1;var o,a=e.Events={},l=/\s+/,c=function(t,e,n,s,i){var o,a=0;if(n&&"object"==typeof n){void 0!==s&&"context"in i&&void 0===i.context&&(i.context=s);for(o=r.keys(n);athis.length&&(s=this.length),s<0&&(s+=this.length+1);var i,o,a=[],l=[],c=[],u=[],d={},h=e.add,p=e.merge,f=e.remove,m=!1,g=this.comparator&&null==s&&!1!==e.sort,v=r.isString(this.comparator)?this.comparator:null;for(o=0;o0&&!e.silent&&delete e.index,r},_isModel:function(t){return t instanceof v},_addReference:function(t,e){this._byId[t.cid]=t;var r=this.modelId(t.attributes,t.idAttribute);null!=r&&(this._byId[r]=t),t.on("all",this._onModelEvent,this)},_removeReference:function(t,e){delete this._byId[t.cid];var r=this.modelId(t.attributes,t.idAttribute);null!=r&&delete this._byId[r],this===t.collection&&delete t.collection,t.off("all",this._onModelEvent,this)},_onModelEvent:function(t,e,r,n){if(e){if(("add"===t||"remove"===t)&&r!==this)return;if("destroy"===t&&this.remove(e,n),"changeId"===t){var s=this.modelId(e.previousAttributes(),e.idAttribute),i=this.modelId(e.attributes,e.idAttribute);null!=s&&delete this._byId[s],null!=i&&(this._byId[i]=e)}}this.trigger.apply(this,arguments)},_forwardPristineError:function(t,e,r){this.has(t)||this._onModelEvent("error",t,e,r)}});var y="function"==typeof Symbol&&Symbol.iterator;y&&(b.prototype[y]=b.prototype.values);var A=function(t,e){this._collection=t,this._kind=e,this._index=0},T=1,N=2,C=3;y&&(A.prototype[y]=function(){return this}),A.prototype.next=function(){if(this._collection){if(this._index7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace($,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var e=this.root.slice(0,-1)||"/";return this.location.replace(e+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var n=document.body,s=n.insertBefore(this.iframe,n.firstChild).contentWindow;s.document.open(),s.document.close(),s.location.hash="#"+this.fragment}var i=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState?i("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?i("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),U.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!this.matchRoot()&&this.notfound();this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return this.matchRoot()?(t=this.fragment=this.getFragment(t),r.some(this.handlers,function(e){if(e.route.test(t))return e.callback(t),!0})||this.notfound()):this.notfound()},notfound:function(){return this.trigger("notfound"),!1},navigate:function(t,e){if(!U.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");var r=this.root;this._trailingSlash||""!==t&&"?"!==t.charAt(0)||(r=r.slice(0,-1)||"/");var n=r+t;t=t.replace(H,"");var s=this.decodeFragment(t);if(this.fragment!==s){if(this.fragment=s,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,n);else{if(!this._wantsHashChange)return this.location.assign(n);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var i=this.iframe.contentWindow;e.replace||(i.document.open(),i.document.close()),this._updateHash(i.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,r){if(r){var n=t.href.replace(/(javascript:|#).*$/,"");t.replace(n+"#"+e)}else t.hash="#"+e}}),e.history=new U;v.extend=b.extend=k.extend=x.extend=U.extend=function(t,e){var n,s=this;return n=t&&r.has(t,"constructor")?t.constructor:function(){return s.apply(this,arguments)},r.extend(n,s,e),n.prototype=r.create(s.prototype,t),n.prototype.constructor=n,n.__super__=s.prototype,n};var G=function(){throw new Error('A "url" property or function must be specified')},V=function(t,e){var r=e.error;e.error=function(n){r&&r.call(e.context,t,n,e),t.trigger("error",t,n,e)}};return e._debug=function(){return{root:t,_:r}},e}(i,r,t,e)}.apply(e,n),void 0===s||(t.exports=s)},26097:(t,e,r)=>{"use strict";e.__esModule=!0;var n=r(82849);e.default=function(t){t.registerHelper("blockHelperMissing",function(e,r){var s=r.inverse,i=r.fn;if(!0===e)return i(this);if(!1===e||null==e)return s(this);if(n.isArray(e))return e.length>0?(r.ids&&(r.ids=[r.name]),t.helpers.each(e,r)):s(this);if(r.data&&r.ids){var o=n.createFrame(r.data);o.contextPath=n.appendContextPath(r.data.contextPath,r.name),r={data:o}}return i(e,r)})},t.exports=e.default},35358:(t,e,r)=>{var n={"./af":25177,"./af.js":25177,"./ar":61509,"./ar-dz":41488,"./ar-dz.js":41488,"./ar-kw":58676,"./ar-kw.js":58676,"./ar-ly":42353,"./ar-ly.js":42353,"./ar-ma":24496,"./ar-ma.js":24496,"./ar-ps":6947,"./ar-ps.js":6947,"./ar-sa":60301,"./ar-sa.js":60301,"./ar-tn":89756,"./ar-tn.js":89756,"./ar.js":61509,"./az":95533,"./az.js":95533,"./be":28959,"./be.js":28959,"./bg":47777,"./bg.js":47777,"./bm":54903,"./bm.js":54903,"./bn":61290,"./bn-bd":17357,"./bn-bd.js":17357,"./bn.js":61290,"./bo":31545,"./bo.js":31545,"./br":11470,"./br.js":11470,"./bs":44429,"./bs.js":44429,"./ca":7306,"./ca.js":7306,"./cs":56464,"./cs.js":56464,"./cv":73635,"./cv.js":73635,"./cy":64226,"./cy.js":64226,"./da":93601,"./da.js":93601,"./de":77853,"./de-at":26111,"./de-at.js":26111,"./de-ch":54697,"./de-ch.js":54697,"./de.js":77853,"./dv":60708,"./dv.js":60708,"./el":54691,"./el.js":54691,"./en-au":53872,"./en-au.js":53872,"./en-ca":28298,"./en-ca.js":28298,"./en-gb":56195,"./en-gb.js":56195,"./en-ie":66584,"./en-ie.js":66584,"./en-il":65543,"./en-il.js":65543,"./en-in":9033,"./en-in.js":9033,"./en-nz":79402,"./en-nz.js":79402,"./en-sg":43004,"./en-sg.js":43004,"./eo":32934,"./eo.js":32934,"./es":97650,"./es-do":20838,"./es-do.js":20838,"./es-mx":17730,"./es-mx.js":17730,"./es-us":56575,"./es-us.js":56575,"./es.js":97650,"./et":3035,"./et.js":3035,"./eu":3508,"./eu.js":3508,"./fa":119,"./fa.js":119,"./fi":90527,"./fi.js":90527,"./fil":95995,"./fil.js":95995,"./fo":52477,"./fo.js":52477,"./fr":85498,"./fr-ca":26435,"./fr-ca.js":26435,"./fr-ch":37892,"./fr-ch.js":37892,"./fr.js":85498,"./fy":37071,"./fy.js":37071,"./ga":41734,"./ga.js":41734,"./gd":70217,"./gd.js":70217,"./gl":77329,"./gl.js":77329,"./gom-deva":32124,"./gom-deva.js":32124,"./gom-latn":93383,"./gom-latn.js":93383,"./gu":95050,"./gu.js":95050,"./he":11713,"./he.js":11713,"./hi":43861,"./hi.js":43861,"./hr":26308,"./hr.js":26308,"./hu":90609,"./hu.js":90609,"./hy-am":17160,"./hy-am.js":17160,"./id":74063,"./id.js":74063,"./is":89374,"./is.js":89374,"./it":88383,"./it-ch":21827,"./it-ch.js":21827,"./it.js":88383,"./ja":23827,"./ja.js":23827,"./jv":89722,"./jv.js":89722,"./ka":41794,"./ka.js":41794,"./kk":27088,"./kk.js":27088,"./km":96870,"./km.js":96870,"./kn":84451,"./kn.js":84451,"./ko":63164,"./ko.js":63164,"./ku":98174,"./ku-kmr":6181,"./ku-kmr.js":6181,"./ku.js":98174,"./ky":78474,"./ky.js":78474,"./lb":79680,"./lb.js":79680,"./lo":15867,"./lo.js":15867,"./lt":45766,"./lt.js":45766,"./lv":69532,"./lv.js":69532,"./me":58076,"./me.js":58076,"./mi":41848,"./mi.js":41848,"./mk":30306,"./mk.js":30306,"./ml":73739,"./ml.js":73739,"./mn":99053,"./mn.js":99053,"./mr":86169,"./mr.js":86169,"./ms":73386,"./ms-my":92297,"./ms-my.js":92297,"./ms.js":73386,"./mt":77075,"./mt.js":77075,"./my":72264,"./my.js":72264,"./nb":22274,"./nb.js":22274,"./ne":8235,"./ne.js":8235,"./nl":92572,"./nl-be":43784,"./nl-be.js":43784,"./nl.js":92572,"./nn":54566,"./nn.js":54566,"./oc-lnc":69330,"./oc-lnc.js":69330,"./pa-in":29849,"./pa-in.js":29849,"./pl":94418,"./pl.js":94418,"./pt":79834,"./pt-br":48303,"./pt-br.js":48303,"./pt.js":79834,"./ro":24457,"./ro.js":24457,"./ru":82271,"./ru.js":82271,"./sd":1221,"./sd.js":1221,"./se":33478,"./se.js":33478,"./si":17538,"./si.js":17538,"./sk":5784,"./sk.js":5784,"./sl":46637,"./sl.js":46637,"./sq":86794,"./sq.js":86794,"./sr":45719,"./sr-cyrl":3322,"./sr-cyrl.js":3322,"./sr.js":45719,"./ss":56e3,"./ss.js":56e3,"./sv":41011,"./sv.js":41011,"./sw":40748,"./sw.js":40748,"./ta":11025,"./ta.js":11025,"./te":11885,"./te.js":11885,"./tet":28861,"./tet.js":28861,"./tg":86571,"./tg.js":86571,"./th":55802,"./th.js":55802,"./tk":59527,"./tk.js":59527,"./tl-ph":29231,"./tl-ph.js":29231,"./tlh":31052,"./tlh.js":31052,"./tr":85096,"./tr.js":85096,"./tzl":79846,"./tzl.js":79846,"./tzm":81765,"./tzm-latn":97711,"./tzm-latn.js":97711,"./tzm.js":81765,"./ug-cn":48414,"./ug-cn.js":48414,"./uk":16618,"./uk.js":16618,"./ur":57777,"./ur.js":57777,"./uz":57609,"./uz-latn":72475,"./uz-latn.js":72475,"./uz.js":57609,"./vi":21135,"./vi.js":21135,"./x-pseudo":64051,"./x-pseudo.js":64051,"./yo":82218,"./yo.js":82218,"./zh-cn":52648,"./zh-cn.js":52648,"./zh-hk":1632,"./zh-hk.js":1632,"./zh-mo":31541,"./zh-mo.js":31541,"./zh-tw":50304,"./zh-tw.js":50304};function s(t){var e=i(t);return r(e)}function i(t){if(!r.o(n,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return n[t]}s.keys=function(){return Object.keys(n)},s.resolve=i,t.exports=s,s.id=35358},37466:(t,e)=>{"use strict";e.__esModule=!0,e.default=function(t){t.registerHelper("lookup",function(t,e,r){return t?r.lookupProperty(t,e):t})},t.exports=e.default},39820:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(71354),s=r.n(n),i=r(76314),o=r.n(i)()(s());o.push([t.id,".login-form[data-v-7dc94e7b]{text-align:start;font-size:1rem;margin:0}.login-form__fieldset[data-v-7dc94e7b]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-7dc94e7b]{text-align:center;overflow-wrap:anywhere}.login-form[data-v-7dc94e7b] input:invalid:not(:user-invalid){border-color:var(--color-border-maxcontrast) !important}","",{version:3,sources:["webpack://./core/src/components/login/LoginForm.vue"],names:[],mappings:"AACA,6BACC,gBAAA,CACA,cAAA,CACA,QAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA,CAID,8DACC,uDAAA",sourcesContent:["\n.login-form {\n\ttext-align: start;\n\tfont-size: 1rem;\n\tmargin: 0;\n\n\t&__fieldset {\n\t\twidth: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: .5rem;\n\t}\n\n\t&__headline {\n\t\ttext-align: center;\n\t\toverflow-wrap: anywhere;\n\t}\n\n\t// Only show the error state if the user interacted with the login box\n\t:deep(input:invalid:not(:user-invalid)) {\n\t\tborder-color: var(--color-border-maxcontrast) !important;\n\t}\n}\n"],sourceRoot:""}]);const a=o},40566:(t,e,r)=>{"use strict";e.__esModule=!0;var n=r(82849),s={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(t){if("string"==typeof t){var e=n.indexOf(s.methodMap,t.toLowerCase());t=e>=0?e:parseInt(t,10)}return t},log:function(t){if(t=s.lookupLevel(t),"undefined"!=typeof console&&s.lookupLevel(s.level)<=t){var e=s.methodMap[t];console[e]||(e="log");for(var r=arguments.length,n=Array(r>1?r-1:0),i=1;i{"use strict";e.__esModule=!0;var n,s=r(82849),i=(n=r(13769))&&n.__esModule?n:{default:n};e.default=function(t){t.registerHelper("each",function(t,e){if(!e)throw new i.default("Must pass iterator to #each");var r,n=e.fn,o=e.inverse,a=0,l="",c=void 0,u=void 0;function d(e,r,i){c&&(c.key=e,c.index=r,c.first=0===r,c.last=!!i,u&&(c.contextPath=u+e)),l+=n(t[e],{data:c,blockParams:s.blockParams([t[e],e],[u+e,null])})}if(e.data&&e.ids&&(u=s.appendContextPath(e.data.contextPath,e.ids[0])+"."),s.isFunction(t)&&(t=t.call(this)),e.data&&(c=s.createFrame(e.data)),t&&"object"==typeof t)if(s.isArray(t))for(var h=t.length;a{},50908:(t,e,r)=>{"use strict";e.__esModule=!0;var n,s=r(82849),i=(n=r(13769))&&n.__esModule?n:{default:n};e.default=function(t){t.registerHelper("with",function(t,e){if(2!=arguments.length)throw new i.default("#with requires exactly one argument");s.isFunction(t)&&(t=t.call(this));var r=e.fn;if(s.isEmpty(t))return e.inverse(this);var n=e.data;return e.data&&e.ids&&((n=s.createFrame(e.data)).contextPath=s.appendContextPath(e.data.contextPath,e.ids[0])),r(t,{data:n,blockParams:s.blockParams([t],[n&&n.contextPath])})})},t.exports=e.default},51069:()=>{},57056:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(71354),s=r.n(n),i=r(76314),o=r.n(i)()(s());o.push([t.id,".password-less-login-form[data-v-0b57a680]{display:flex;flex-direction:column;gap:.5rem;margin:0}","",{version:3,sources:["webpack://./core/src/components/login/PasswordLessLoginForm.vue"],names:[],mappings:"AACA,2CACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,QAAA",sourcesContent:["\n.password-less-login-form {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.5rem;\n\tmargin: 0;\n}\n"],sourceRoot:""}]);const a=o},63779:()=>{},63865:(t,e,r)=>{"use strict";e.__esModule=!0,e.createProtoAccessControl=function(t){var e=Object.create(null);e.constructor=!1,e.__defineGetter__=!1,e.__defineSetter__=!1,e.__lookupGetter__=!1;var r=Object.create(null);return r.__proto__=!1,{properties:{whitelist:s.createNewLookupObject(r,t.allowedProtoProperties),defaultValue:t.allowProtoPropertiesByDefault},methods:{whitelist:s.createNewLookupObject(e,t.allowedProtoMethods),defaultValue:t.allowProtoMethodsByDefault}}},e.resultIsAllowed=function(t,e,r){return function(t,e){return void 0!==t.whitelist[e]?!0===t.whitelist[e]:void 0!==t.defaultValue?t.defaultValue:(function(t){!0!==o[t]&&(o[t]=!0,i.default.log("error",'Handlebars: Access has been denied to resolve the property "'+t+'" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details'))}(e),!1)}("function"==typeof t?e.methods:e.properties,r)},e.resetLoggedProperties=function(){Object.keys(o).forEach(function(t){delete o[t]})};var n,s=r(89726),i=(n=r(40566))&&n.__esModule?n:{default:n},o=Object.create(null)},64688:()=>{},66089:()=>{},72614:(t,e)=>{"use strict";e.__esModule=!0,e.wrapHelper=function(t,e){return"function"!=typeof t?t:function(){return arguments[arguments.length-1]=e(arguments[arguments.length-1]),t.apply(this,arguments)}}},73776:()=>{},75940:(t,e,r)=>{"use strict";e.__esModule=!0,e.registerDefaultDecorators=function(t){s.default(t)};var n,s=(n=r(77430))&&n.__esModule?n:{default:n}},77199:()=>{},77430:(t,e,r)=>{"use strict";e.__esModule=!0;var n=r(82849);e.default=function(t){t.registerDecorator("inline",function(t,e,r,s){var i=t;return e.partials||(e.partials={},i=function(s,i){var o=r.partials;r.partials=n.extend({},o,e.partials);var a=t(s,i);return r.partials=o,a}),e.partials[s.args[0]]=s.fn,i})},t.exports=e.default},77965:()=>{},78112:t=>{const e={_XML_CHAR_MAP:{"<":"<",">":">","&":"&",'"':""","'":"'"},_escapeXml:function(t){return t.replace(/[<>&"']/g,function(t){return e._XML_CHAR_MAP[t]})},Client:function(t){var e;for(e in t)this[e]=t[e]}};e.Client.prototype={baseUrl:null,userName:null,password:null,xmlNamespaces:{"DAV:":"d"},propFind:function(t,e,r,n){void 0===r&&(r="0"),r=""+r,(n=n||{}).Depth=r,n["Content-Type"]="application/xml; charset=utf-8";var s,i='\n\n":i+=" \n'}return i+=" \n",i+="",this.request("PROPFIND",t,n,i).then(function(t){return"0"===r?{status:t.status,body:t.body[0],xhr:t.xhr}:{status:t.status,body:t.body,xhr:t.xhr}}.bind(this))},_renderPropSet:function(t){var r=" \n \n";for(var n in t)if(t.hasOwnProperty(n)){var s,i=this.parseClarkNotation(n),o=t[n];"d:resourcetype"!=(s=this.xmlNamespaces[i.namespace]?this.xmlNamespaces[i.namespace]+":"+i.name:"x:"+i.name+' xmlns:x="'+i.namespace+'"')&&(o=e._escapeXml(o)),r+=" <"+s+">"+o+"\n"}return(r+=" \n")+" \n"},propPatch:function(t,e,r){(r=r||{})["Content-Type"]="application/xml; charset=utf-8";var n,s='\n0){for(var r=[],n=0;n{},79368:()=>{},79838:()=>{},81604:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var n=r(71354),s=r.n(n),i=r(76314),o=r.n(i)()(s());o.push([t.id,"\nfieldset[data-v-2c0ecaf9] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-2c0ecaf9] {\n\tmargin-top: 20px;\n}\n","",{version:3,sources:["webpack://./core/src/components/login/UpdatePassword.vue"],names:[],mappings:";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=bbf83d00&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bbf83d00\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"variant\":\"primary\",\"type\":\"submit\",\"wide\":true,\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\tcomputed: {\n\t\tuserNameInputLengthIs255() {\n\t\t\treturn this.user.length >= 255\n\t\t},\n\t\tuserInputHelperText() {\n\t\t\tif (this.userNameInputLengthIs255) {\n\t\t\t\treturn t('core', 'Email length is at max (255)')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=7dc94e7b&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=7dc94e7b&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=7dc94e7b&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=7dc94e7b&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7dc94e7b\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Session error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'It appears your session token has expired, please refresh the page and try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"password\",\"name\":\"password\",\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"visible\":_vm.visible,\"data-login-form-input-password\":\"\",\"required\":\"\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_vm._v(\" \"),(_vm.remembermeAllowed)?_c('NcCheckboxRadioSwitch',{ref:\"rememberme\",attrs:{\"id\":\"rememberme\",\"name\":\"rememberme\",\"value\":\"1\",\"data-login-form-input-rememberme\":\"\"},model:{value:(_vm.rememberme),callback:function ($$v) {_vm.rememberme=$$v},expression:\"rememberme\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Remember me'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Determine if the browser is capable of Webauthn\n */\nexport function browserSupportsWebAuthn() {\n return _browserSupportsWebAuthnInternals.stubThis(globalThis?.PublicKeyCredential !== undefined &&\n typeof globalThis.PublicKeyCredential === 'function');\n}\n/**\n * Make it possible to stub the return value during testing\n * @ignore Don't include this in docs output\n */\nexport const _browserSupportsWebAuthnInternals = {\n stubThis: (value) => value,\n};\n","/**\n * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented\n * errors in the spec was raised after calling `navigator.credentials.create()` or\n * `navigator.credentials.get()`:\n *\n * - `AbortError`\n * - `ConstraintError`\n * - `InvalidStateError`\n * - `NotAllowedError`\n * - `NotSupportedError`\n * - `SecurityError`\n * - `TypeError`\n * - `UnknownError`\n *\n * Error messages were determined through investigation of the spec to determine under which\n * scenarios a given error would be raised.\n */\nexport class WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n // @ts-ignore: help Rollup understand that `cause` is okay to set\n super(message, { cause });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n","class BaseWebAuthnAbortService {\n constructor() {\n Object.defineProperty(this, \"controller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n createNewAbortSignal() {\n // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get()\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\n/**\n * A service singleton to help ensure that only a single WebAuthn ceremony is active at a time.\n *\n * Users of **@simplewebauthn/browser** shouldn't typically need to use this, but it can help e.g.\n * developers building projects that use client-side routing to better control the behavior of\n * their UX in response to router navigation events.\n */\nexport const WebAuthnAbortService = new BaseWebAuthnAbortService();\n","/**\n * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various\n * credential response ArrayBuffers to string for sending back to the server as JSON.\n *\n * Helper method to compliment `base64URLStringToBuffer`\n */\nexport function bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n","/**\n * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a\n * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or\n * excludeCredentials\n *\n * Helper method to compliment `bufferToBase64URLString`\n */\nexport function base64URLStringToBuffer(base64URLString) {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n // Convert to a binary string\n const binary = atob(padded);\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n","import { browserSupportsWebAuthn } from './browserSupportsWebAuthn.js';\n/**\n * Determine if the browser supports conditional UI, so that WebAuthn credentials can\n * be shown to the user in the browser's typical password autofill popup.\n */\nexport function browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n /**\n * I don't like the `as unknown` here but there's a `declare var PublicKeyCredential` in\n * TS' DOM lib that's making it difficult for me to just go `as PublicKeyCredentialFuture` as I\n * want. I think I'm fine with this for now since it's _supposed_ to be temporary, until TS types\n * have a chance to catch up.\n */\n const globalPublicKeyCredential = globalThis\n .PublicKeyCredential;\n if (globalPublicKeyCredential?.isConditionalMediationAvailable === undefined) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n return _browserSupportsWebAuthnAutofillInternals.stubThis(globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n// Make it possible to stub the return value during testing\nexport const _browserSupportsWebAuthnAutofillInternals = {\n stubThis: (value) => value,\n};\n","import { base64URLStringToBuffer } from './base64URLStringToBuffer.js';\nexport function toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n /**\n * `descriptor.transports` is an array of our `AuthenticatorTransportFuture` that includes newer\n * transports that TypeScript's DOM lib is ignorant of. Convince TS that our list of transports\n * are fine to pass to WebAuthn since browsers will recognize the new value.\n */\n transports: descriptor.transports,\n };\n}\n","const attachments = ['cross-platform', 'platform'];\n/**\n * If possible coerce a `string` value into a known `AuthenticatorAttachment`\n */\nexport function toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=d7513faa\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon lock-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport logger from '../logger.js';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication({ optionsJSON: data });\n}\n/**\n * Verify webauthn authentication\n *\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { browserSupportsWebAuthnAutofill } from '../helpers/browserSupportsWebAuthnAutofill.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyAuthenticationError } from '../helpers/identifyAuthenticationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"login\" via WebAuthn assertion\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateAuthenticationOptions()`\n * @param useBrowserAutofill (Optional) Initialize conditional UI to enable logging in via browser autofill prompts. Defaults to `false`.\n * @param verifyBrowserAutofillInput (Optional) Ensure a suitable `` element is present when `useBrowserAutofill` is `true`. Defaults to `true`.\n */\nexport async function startAuthentication(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useBrowserAutofill = false, verifyBrowserAutofillInput = true, } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to avoid passing empty array to avoid blocking retrieval\n // of public key\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n // Prepare options for `.get()`\n const getOptions = {};\n /**\n * Set up the page to prompt the user to select a credential for authentication via the browser's\n * input autofill mechanism.\n */\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n // Check for an with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1 && verifyBrowserAutofillInput) {\n throw Error('No with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n // `CredentialMediationRequirement` doesn't know about \"conditional\" yet as of\n // typescript@4.6.3\n getOptions.mediation = 'conditional';\n // Conditional UI requires an empty allow list\n publicKey.allowCredentials = [];\n }\n // Finalize options\n getOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n getOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete assertion\n let credential;\n try {\n credential = (await navigator.credentials.get(getOptions));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options: getOptions });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n // Convert values to base64 to make it easier to send back to the server\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.get()`\n */\nexport function identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 5)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 6)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 12)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex sourced from here:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=0b57a680&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=0b57a680&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=0b57a680&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=0b57a680&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b57a680\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",staticClass:\"password-less-login-form\",attrs:{\"aria-labelledby\":\"password-less-login-form-title\",\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',{attrs:{\"id\":\"password-less-login-form-title\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"required\":\"\",\"model-value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Your connection is not secure'),\"description\":_vm.t('core', 'Passwordless authentication is only available over a secure connection.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockOpenIcon')]},proxy:true}])}):_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Browser not supported'),\"description\":_vm.t('core', 'Passwordless authentication is not supported in your browser.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InformationIcon')]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"reset-password-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Reset password')))]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"id\":\"user\",\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=759a0fdd&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"759a0fdd\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=2c0ecaf9&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c0ecaf9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{ warning: _vm.error }},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\n/**\n *\n * @param {string} url the URL to check\n * @return {boolean}\n */\nfunction isRelativeUrl(url) {\n\treturn !url.startsWith('https://') && !url.startsWith('http://')\n}\n\n/**\n * @param {string} url The URL to check\n * @return {boolean} true if the URL points to this nextcloud instance\n */\nfunction isNextcloudUrl(url) {\n\tconst nextcloudBaseUrl = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t// if the URL is absolute and starts with the baseUrl+rootUrl\n\t// OR if the URL is relative and starts with rootUrl\n\treturn url.startsWith(nextcloudBaseUrl)\n\t\t|| (isRelativeUrl(url) && url.startsWith(getRootUrl()))\n}\n\n/**\n * Check if a user was logged in but is now logged-out.\n * If this is the case then the user will be forwarded to the login page.\n *\n * @return {Promise}\n */\nasync function checkLoginStatus() {\n\t// skip if no logged in user\n\tif (getCurrentUser() === null) {\n\t\treturn\n\t}\n\n\t// skip if already running\n\tif (checkLoginStatus.running === true) {\n\t\treturn\n\t}\n\n\t// only run one request in parallel\n\tcheckLoginStatus.running = true\n\n\ttry {\n\t\t// We need to check this as a 401 in the first place could also come from other reasons\n\t\tconst { status } = await window.fetch(generateUrl('/apps/files'))\n\t\tif (status === 401) {\n\t\t\tlogger.warn('User session was terminated, forwarding to login page.')\n\t\t\tawait wipeBrowserStorages()\n\t\t\twindow.location = generateUrl('/login?redirect_url={url}', {\n\t\t\t\turl: window.location.pathname + window.location.search + window.location.hash,\n\t\t\t})\n\t\t}\n\t} catch (error) {\n\t\tlogger.warn('Could not check login-state', { error })\n\t} finally {\n\t\tdelete checkLoginStatus.running\n\t}\n}\n\n/**\n * Clear all Browser storages connected to current origin.\n *\n * @return {Promise}\n */\nexport async function wipeBrowserStorages() {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconst indexedDBList = await window.indexedDB.databases()\n\t\tfor (const indexedDB of indexedDBList) {\n\t\t\tawait window.indexedDB.deleteDatabase(indexedDB.name)\n\t\t}\n\t\tlogger.debug('Browser storages cleared')\n\t} catch (error) {\n\t\tlogger.error('Could not clear browser storages', { error })\n\t}\n}\n\n/**\n * Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header\n *\n * This is also done in @nextcloud/axios but not all requests pass through that\n */\nexport function interceptRequests() {\n\tXMLHttpRequest.prototype.open = (function(open) {\n\t\treturn function(method, url) {\n\t\t\topen.apply(this, arguments)\n\t\t\tif (isNextcloudUrl(url)) {\n\t\t\t\tif (!this.getResponseHeader('X-Requested-With')) {\n\t\t\t\t\tthis.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\t\t\t\t}\n\t\t\t\tthis.addEventListener('loadend', function() {\n\t\t\t\t\tif (this.status === 401) {\n\t\t\t\t\t\tcheckLoginStatus()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t})(XMLHttpRequest.prototype.open)\n\n\twindow.fetch = (function(fetch) {\n\t\treturn async (resource, options) => {\n\t\t\t// fetch allows the `input` to be either a Request object or any stringifyable value\n\t\t\tif (!isNextcloudUrl(resource.url ?? resource.toString())) {\n\t\t\t\treturn await fetch(resource, options)\n\t\t\t}\n\t\t\tif (!options) {\n\t\t\t\toptions = {}\n\t\t\t}\n\t\t\tif (!options.headers) {\n\t\t\t\toptions.headers = new Headers()\n\t\t\t}\n\n\t\t\tif (options.headers instanceof Headers && !options.headers.has('X-Requested-With')) {\n\t\t\t\toptions.headers.append('X-Requested-With', 'XMLHttpRequest')\n\t\t\t} else if (options.headers instanceof Object && !options.headers['X-Requested-With']) {\n\t\t\t\toptions.headers['X-Requested-With'] = 'XMLHttpRequest'\n\t\t\t}\n\n\t\t\tconst response = await fetch(resource, options)\n\t\t\tif (response.status === 401) {\n\t\t\t\tcheckLoginStatus()\n\t\t\t}\n\t\t\treturn response\n\t\t}\n\t})(window.fetch)\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=518c0816&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"518c0816\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{staticClass:\"login-box__wrapper\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"rememberme-allowed\":_vm.remembermeAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.hasPasswordless)?_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink,\"variant\":\"tertiary-no-background\",\"wide\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-box__wrapper\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"login-box__alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"variant\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const appConfig = window.oc_appconfig || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * \n *
I'm sliding up
\n */\nexport function registerAppsSlideToggle() {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'false')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'true')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t})\n}\n\nexport default Apps\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { dav } from 'davclient.js'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND',\n}\n\n/**\n * Throw an error when a URL is needed, and none is supplied.\n */\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {object} result\n * @param {object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tconst props = {\n\t\thref: result.href,\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (const key in propStat.properties) {\n\t\t\tlet propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @return {string} id\n */\nfunction parseIdFromLocation(url) {\n\tconst queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tconst parts = url.split('/')\n\tlet result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\n/**\n *\n * @param {number} status\n */\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\n/**\n *\n * @param attrs\n * @param davProperties\n */\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tconst props = {}\n\tlet key\n\tfor (key in attrs) {\n\t\tlet changedProp = davProperties[key]\n\t\tlet value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tlogger.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders,\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tconst propsMapping = _.invert(options.davProperties)\n\t\t\t\tconst results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders,\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull,\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data,\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tconst responseJson = result.body || model.toJSON()\n\t\t\t\tconst locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tconst propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\n/**\n *\n * @param options\n * @param model\n */\nexport function davCall(options, model) {\n\tconst client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc',\n\t\t}, options.xmlNamespaces || {}),\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tconst headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\trequesttoken: OC.requestToken,\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n *\n * @param Backbone\n */\nexport function davSync(Backbone) {\n\treturn (method, model, options) => {\n\t\tconst params = { type: methodMap[method] || method }\n\t\tconst isCollection = (model instanceof Backbone.Collection)\n\n\t\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\t\tparams.type = 'MKCOL'\n\t\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\t\tparams.type = 'PUT'\n\t\t\t}\n\t\t}\n\n\t\t// Ensure that we have a URL.\n\t\tif (!options.url) {\n\t\t\tparams.url = _.result(model, 'url') || urlError()\n\t\t}\n\n\t\t// Ensure that we have the appropriate request data.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t\t}\n\n\t\t// Don't process data on a non-GET request.\n\t\tif (params.type !== 'PROPFIND') {\n\t\t\tparams.processData = false\n\t\t}\n\n\t\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\t\tlet davProperties = model.davProperties\n\t\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t\t}\n\t\t\tif (davProperties) {\n\t\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t\t} else {\n\t\t\t\t\tparams.davProperties = davProperties\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\t\tif (_.isUndefined(options.depth)) {\n\t\t\t\tif (isCollection) {\n\t\t\t\t\toptions.depth = 1\n\t\t\t\t} else {\n\t\t\t\t\toptions.depth = 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\t\tconst error = options.error\n\t\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\t\toptions.textStatus = textStatus\n\t\t\toptions.errorThrown = errorThrown\n\t\t\tif (error) {\n\t\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t\t}\n\t\t}\n\n\t\t// Make the request, allowing the user to override any Ajax options.\n\t\tconst xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\t\tmodel.trigger('request', model, xhr, options)\n\t\treturn xhr\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\n/**\n *\n */\nexport function getCurrentUser() {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple-outline.svg?raw'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport $ from 'jquery'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\nimport logger from '../logger.js'\nimport OC from './index.js'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(buttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\t\tvariant: 'error',\n\t\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback))\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @return {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password,\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\t// eslint-disable-next-line no-unused-vars\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t *\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t *\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\tvariant: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst [node] = nodes\n\t\t\t\tconst target = node?.displayname || node?.basename || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: target }) : t('core', 'Choose'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\tvariant: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @param content\n\t * @param title\n\t * @param dialogType\n\t * @param buttons\n\t * @param callback\n\t * @param modal\n\t * @param allowHtml\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif (!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t *\n\t * @param buttons\n\t * @param callback\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tlogger.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t *\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @return {Promise} jquery promise that resolves after the dialog template was loaded\n\t *\n\t * @deprecated 29.0.0 Use openConflictPicker from the @nextcloud/upload package instead\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tconst self = this\n\t\tconst dialogDeferred = new $.Deferred()\n\n\t\tconst getCroppedPreview = function(file) {\n\t\t\tconst deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tconst type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tconst reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tconst blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tconst originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tconst image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tconst url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\t/**\n\t\t * @param img\n\t\t */\n\t\tfunction crop(img) {\n\t\t\tconst canvas = document.createElement('canvas')\n\t\t\tconst targetSize = 96\n\t\t\tconst width = img.width\n\t\t\tconst height = img.height\n\t\t\tlet x\n\t\t\tlet y\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tconst size = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tconst ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tfunction resampleHermite(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tconst img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tconst img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tconst data = img.data\n\t\t\tconst data2 = img2.data\n\t\t\tconst ratio_w = W / W2\n\t\t\tconst ratio_h = H / H2\n\t\t\tconst ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tconst ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (let j = 0; j < H2; j++) {\n\t\t\t\tfor (let i = 0; i < W2; i++) {\n\t\t\t\t\tconst x2 = (i + j * W2) * 4\n\t\t\t\t\tlet weight = 0\n\t\t\t\t\tlet weights = 0\n\t\t\t\t\tlet weights_alpha = 0\n\t\t\t\t\tlet gx_r = 0\n\t\t\t\t\tlet gx_g = 0\n\t\t\t\t\tlet gx_b = 0\n\t\t\t\t\tlet gx_a = 0\n\t\t\t\t\tconst center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (let yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tconst dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tconst center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tconst w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (let xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tlet dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tconst w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) {\n\t\t\t\t\t\t\t\t\t\tweight = weight * data[dx + 3] / 250\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tconst addConflict = function($conflicts, original, replacement) {\n\t\t\tconst $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tconst $originalDiv = $conflict.find('.original')\n\t\t\tconst $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tlet path = original.directory + '/' + original.name\n\t\t\tconst urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0,\n\t\t\t}\n\t\t\tlet previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(function(path) {\n\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t}, function() {\n\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t})\n\t\t\t// connect checkboxes with labels\n\t\t\tconst checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\n\t\tconst dialogName = 'oc-dialog-fileexists-content'\n\t\tconst dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tconst $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tconst count = $(dialogId + ' .conflict').length\n\t\t\tconst title = n(\n\t\t\t\t'core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count },\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tconst title = t('core', 'One file conflict')\n\t\t\t\tconst $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.'),\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tconst $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tconst buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tconst $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\t/**\n\t\t\t\t *\n\t\t\t\t */\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tconst checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tconst $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tconst $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tconst $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tconst $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tconst count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tconst count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\n\t_getFileExistsTemplate: function() {\n\t\tconst defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tconst self = this\n\t\t\t$.get(OC.filePath('core', 'templates/legacy', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\n/**\n * Get the current CSRF token.\n */\nexport function getRequestToken() {\n return document.head.dataset.requesttoken;\n}\n/**\n * Set a new CSRF token (e.g. because of session refresh).\n * This also emits an event bus event for the updated token.\n *\n * @param token - The new token\n * @fires Error - If the passed token is not a potential valid token\n */\nexport function setRequestToken(token) {\n if (!token || typeof token !== 'string') {\n throw new Error('Invalid CSRF token given', { cause: { token } });\n }\n document.head.dataset.requesttoken = token;\n emit('csrf-token-update', { token });\n}\n/**\n * Fetch the request token from the API.\n * This does also set it on the current context, see `setRequestToken`.\n *\n * @fires Error - If the request failed\n */\nexport async function fetchRequestToken() {\n const url = generateUrl('/csrftoken');\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error('Could not fetch CSRF token from API', { cause: response });\n }\n const { token } = await response.json();\n setRequestToken(token);\n return token;\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport { getRequestToken } from './requesttoken.ts'\n\n/**\n * Create a new event source\n *\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nfunction OCEventSource(src, data) {\n\tlet dataStr = ''\n\tlet name\n\tlet joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getRequestToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (let i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tconst iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {string} type event type\n\t * @param {object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tlet i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {string} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t},\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tloadTranslations,\n\tregister,\n\ttranslate,\n\ttranslatePlural,\n\tunregister,\n} from '@nextcloud/l10n'\nimport Handlebars from 'handlebars'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport function registerMenu($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport function unregisterMenu($toggle, $menuEl) {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport function hideMenus(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport function showMenu($toggle, $menuEl, complete) {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\n\nconst iconCache = new Map()\n\n/**\n * Return the url to icon of the given mimeType\n *\n * @param {string} mimeType The mimeType to get the icon for\n * @return {string} Url to the icon for mimeType\n */\nexport function getIconUrl(mimeType) {\n\tif (typeof mimeType === 'undefined') {\n\t\treturn undefined\n\t}\n\n\twhile (mimeType in window.OC.MimeTypeList.aliases) {\n\t\tmimeType = window.OC.MimeTypeList.aliases[mimeType]\n\t}\n\n\tif (!iconCache.has(mimeType)) {\n\t\tlet gotIcon = false\n\t\tlet path = ''\n\t\t// First try to get the correct icon from the current legacy-theme\n\t\tif (OC.theme.folder !== '' && Array.isArray(OC.MimeTypeList.themes[OC.theme.folder])) {\n\t\t\tpath = getRootUrl() + '/themes/' + window.OC.theme.folder + '/core/img/filetypes/'\n\t\t\tconst icon = getMimeTypeIcon(mimeType, window.OC.MimeTypeList.themes[OC.theme.folder])\n\t\t\tif (icon) {\n\t\t\t\tgotIcon = true\n\t\t\t\tpath += icon + '.svg'\n\t\t\t}\n\t\t}\n\n\t\t// theming is always enabled since Nextcloud 20 so we get it from that\n\t\tif (!gotIcon) {\n\t\t\tpath = generateUrl('/apps/theming/img/core/filetypes/' + getMimeTypeIcon(mimeType, window.OC.MimeTypeList.files) + '.svg')\n\t\t}\n\n\t\tpath += '?v=' + window.OCA.Theming.cacheBuster\n\t\t// Cache the result\n\t\ticonCache.set(mimeType, path)\n\t}\n\n\treturn iconCache.get(mimeType)\n}\n\n/**\n * Return the file icon we want to use for the given mimeType.\n * The file needs to be present in the supplied file list\n *\n * @param {string} mimeType The mimeType we want an icon for\n * @param {string[]} files The available icons in this theme\n * @return {string | null} The icon to use or null if there is no match\n */\nfunction getMimeTypeIcon(mimeType, files) {\n\tconst icon = mimeType.replace(new RegExp('/', 'g'), '-')\n\n\t// Generate path\n\tif (mimeType === 'dir' && files.includes('folder')) {\n\t\treturn 'folder'\n\t} else if (mimeType === 'dir-encrypted' && files.includes('folder-encrypted')) {\n\t\treturn 'folder-encrypted'\n\t} else if (mimeType === 'dir-shared' && files.includes('folder-shared')) {\n\t\treturn 'folder-shared'\n\t} else if (mimeType === 'dir-public' && files.includes('folder-public')) {\n\t\treturn 'folder-public'\n\t} else if ((mimeType === 'dir-external' || mimeType === 'dir-external-root') && files.includes('folder-external')) {\n\t\treturn 'folder-external'\n\t} else if (files.includes(icon)) {\n\t\treturn icon\n\t} else if (files.includes(icon.split('-')[0])) {\n\t\treturn icon.split('-')[0]\n\t} else if (files.includes('file')) {\n\t\treturn 'file'\n\t}\n\n\treturn null\n}\n\n/**\n * Clear the icon cache\n */\nexport function clearIconCache() {\n\ticonCache.clear()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\n/** @typedef {import('jquery')} jQuery */\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tlogger.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tlogger.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {jQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t *\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","import { l as logger, F as FileType } from \"./chunks/folder-QTYeAiOH.mjs\";\nimport { a, b, N, c, P } from \"./chunks/folder-QTYeAiOH.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get hotkey() {\n return this._action.hotkey;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n if (\"hotkey\" in action && action.hotkey !== void 0) {\n if (typeof action.hotkey !== \"object\") {\n throw new Error(\"Invalid hotkey configuration\");\n }\n if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n throw new Error(\"Missing or invalid hotkey key\");\n }\n if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n throw new Error(\"Missing or invalid hotkey description\");\n }\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const safeSrc = exports.safeSrc = [];\n const t = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t[name] = index;\n src[index] = value;\n safeSrc[index] = safe;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t.BUILDIDENTIFIER]}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);\n createToken(\"FULL\", `^${src[t.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n }\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m = version.trim().match(options.loose ? re2[t.LOOSE] : re2[t.FULL]);\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.major > other.major) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.patch < other.patch) {\n return -1;\n }\n if (this.patch > other.patch) {\n return 1;\n }\n return 0;\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i = 0;\n do {\n const a2 = this.prerelease[i];\n const b2 = other.prerelease[i];\n debug(\"prerelease compare\", i, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i = 0;\n do {\n const a2 = this.build[i];\n const b2 = other.build[i];\n debug(\"build compare\", i, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n if (release.startsWith(\"pre\")) {\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re2[t.PRERELEASELOOSE] : re2[t.PRERELEASE]);\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`);\n }\n }\n }\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"release\":\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`);\n }\n this.prerelease.length = 0;\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === \"number\") {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(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.3\";\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}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\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}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\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 emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n if (hasRequiredSax) return sax$1;\n hasRequiredSax = 1;\n (function(exports) {\n (function(sax2) {\n sax2.parser = function(strict, opt) {\n return new SAXParser(strict, opt);\n };\n sax2.SAXParser = SAXParser;\n sax2.SAXStream = SAXStream;\n sax2.createStream = createStream;\n sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n var buffers = [\n \"comment\",\n \"sgmlDecl\",\n \"textNode\",\n \"tagName\",\n \"doctype\",\n \"procInstName\",\n \"procInstBody\",\n \"entity\",\n \"attribName\",\n \"attribValue\",\n \"cdata\",\n \"script\"\n ];\n sax2.EVENTS = [\n \"text\",\n \"processinginstruction\",\n \"sgmldeclaration\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"opencdata\",\n \"cdata\",\n \"closecdata\",\n \"error\",\n \"end\",\n \"ready\",\n \"script\",\n \"opennamespace\",\n \"closenamespace\"\n ];\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt);\n }\n var parser = this;\n clearBuffers(parser);\n parser.q = parser.c = \"\";\n parser.bufferCheckPosition = sax2.MAX_BUFFER_LENGTH;\n parser.opt = opt || {};\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\";\n parser.tags = [];\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.strict = !!strict;\n parser.noscript = !!(strict || parser.opt.noscript);\n parser.state = S.BEGIN;\n parser.strictEntities = parser.opt.strictEntities;\n parser.ENTITIES = parser.strictEntities ? Object.create(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n parser.attribList = [];\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS);\n }\n if (parser.opt.unquotedAttributeValues === void 0) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n parser.trackPosition = parser.opt.position !== false;\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0;\n }\n emit2(parser, \"onready\");\n }\n if (!Object.create) {\n Object.create = function(o) {\n function F() {\n }\n F.prototype = o;\n var newf = new F();\n return newf;\n };\n }\n if (!Object.keys) {\n Object.keys = function(o) {\n var a2 = [];\n for (var i in o) if (o.hasOwnProperty(i)) a2.push(i);\n return a2;\n };\n }\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n var maxActual = 0;\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length;\n if (len > maxAllowed) {\n switch (buffers[i]) {\n case \"textNode\":\n closeText(parser);\n break;\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n break;\n case \"script\":\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n break;\n default:\n error(parser, \"Max buffer length exceeded: \" + buffers[i]);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n var m = sax2.MAX_BUFFER_LENGTH - maxActual;\n parser.bufferCheckPosition = m + parser.position;\n }\n function clearBuffers(parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = \"\";\n }\n }\n function flushBuffers(parser) {\n closeText(parser);\n if (parser.cdata !== \"\") {\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n }\n if (parser.script !== \"\") {\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n }\n }\n SAXParser.prototype = {\n end: function() {\n end(this);\n },\n write,\n resume: function() {\n this.error = null;\n return this;\n },\n close: function() {\n return this.write(null);\n },\n flush: function() {\n flushBuffers(this);\n }\n };\n var Stream;\n try {\n Stream = require(\"stream\").Stream;\n } catch (ex) {\n Stream = function() {\n };\n }\n if (!Stream) Stream = function() {\n };\n var streamWraps = sax2.EVENTS.filter(function(ev) {\n return ev !== \"error\" && ev !== \"end\";\n });\n function createStream(strict, opt) {\n return new SAXStream(strict, opt);\n }\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt);\n }\n Stream.apply(this);\n this._parser = new SAXParser(strict, opt);\n this.writable = true;\n this.readable = true;\n var me = this;\n this._parser.onend = function() {\n me.emit(\"end\");\n };\n this._parser.onerror = function(er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n this._decoder = null;\n streamWraps.forEach(function(ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function() {\n return me._parser[\"on\" + ev];\n },\n set: function(h) {\n if (!h) {\n me.removeAllListeners(ev);\n me._parser[\"on\" + ev] = h;\n return h;\n }\n me.on(ev, h);\n },\n enumerable: true,\n configurable: false\n });\n });\n }\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n });\n SAXStream.prototype.write = function(data) {\n if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require$$1.StringDecoder;\n this._decoder = new SD(\"utf8\");\n }\n data = this._decoder.write(data);\n }\n this._parser.write(data.toString());\n this.emit(\"data\", data);\n return true;\n };\n SAXStream.prototype.end = function(chunk) {\n if (chunk && chunk.length) {\n this.write(chunk);\n }\n this._parser.end();\n return true;\n };\n SAXStream.prototype.on = function(ev, handler) {\n var me = this;\n if (!me._parser[\"on\" + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\" + ev] = function() {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n var CDATA = \"[CDATA[\";\n var DOCTYPE = \"DOCTYPE\";\n var XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\n var XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n function isWhitespace(c2) {\n return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n }\n function isQuote(c2) {\n return c2 === '\"' || c2 === \"'\";\n }\n function isAttribEnd(c2) {\n return c2 === \">\" || isWhitespace(c2);\n }\n function isMatch(regex, c2) {\n return regex.test(c2);\n }\n function notMatch(regex, c2) {\n return !isMatch(regex, c2);\n }\n var S = 0;\n sax2.STATE = {\n BEGIN: S++,\n // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++,\n // leading whitespace\n TEXT: S++,\n // general stuff\n TEXT_ENTITY: S++,\n // & and such.\n OPEN_WAKA: S++,\n // <\n SGML_DECL: S++,\n // \n SCRIPT: S++,\n // \\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.8';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy44JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","/* global globalThis */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function () {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function () {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n var $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOzs7QUFHbEMsR0FBQyxZQUFXO0FBQ1YsUUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsT0FBTztBQUMzQyxVQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxZQUFXO0FBQ3hELGFBQU8sSUFBSSxDQUFDO0tBQ2IsQ0FBQyxDQUFDO0FBQ0gsYUFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFDakMsV0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztHQUNuQyxDQUFBLEVBQUcsQ0FBQzs7QUFFTCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDOzs7QUFHMUMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDeEMsZ0JBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQ3JDO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGdsb2JhbFRoaXMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2dsb2JhbHRoaXNcbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybjtcbiAgICBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oJ19fbWFnaWNfXycsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSk7XG4gICAgX19tYWdpY19fLmdsb2JhbFRoaXMgPSBfX21hZ2ljX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5fX21hZ2ljX187XG4gIH0pKCk7XG5cbiAgY29uc3QgJEhhbmRsZWJhcnMgPSBnbG9iYWxUaGlzLkhhbmRsZWJhcnM7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKGdsb2JhbFRoaXMuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgZ2xvYmFsVGhpcy5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufVxuIl19\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.reset-password-form[data-v-759a0fdd]{display:flex;flex-direction:column;gap:.5rem;width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/ResetPassword.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,UAAA\",\"sourcesContent\":[\"\\n.reset-password-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: .5rem;\\n\\twidth: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"594\":\"2c86902dfae9a5006399\",\"620\":\"1faa6454ab9a6286ffeb\",\"2391\":\"908fc68e4bc9b878c937\",\"2880\":\"96ff2de012f3b8c1e3a4\",\"4325\":\"11e9d860db6a9bc25aac\",\"4864\":\"0067aafdfe2337ed928b\",\"5862\":\"d020c05f13d21afee82a\",\"7145\":\"d9c518ca34bfdbd7ff70\",\"8339\":\"6cdca71a6b3b2d7bef33\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1418;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t1418: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(10717)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","_interopRequireDefault","obj","__esModule","exports","registerDefaultHelpers","instance","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","helpers","hooks","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","runtimeVersions","REVISION_CHANGES","compilerVersions","_exception2","template","templateSpec","env","main","decorator","main_d","VM","compiler","templateWasPrecompiledWithCompilerV7","container","strict","name","loc","lookupProperty","parent","propertyName","result","Object","prototype","hasOwnProperty","call","_internalProtoAccess","resultIsAllowed","protoAccessControl","lookup","depths","len","length","i","lambda","current","context","escapeExpression","Utils","invokePartial","partial","options","hash","extend","ids","resolvePartial","this","extendedOptions","compile","partials","compilerOptions","indent","lines","split","l","join","fn","ret","programs","program","data","declaredBlockParams","blockParams","programWrapper","wrapProgram","value","depth","_parent","mergeIfNeeded","param","common","nullContext","seal","noop","arguments","undefined","_setup","useData","createFrame","root","initData","useBlockParams","useDepths","concat","executeDecorators","isTop","decorators","mergedHelpers","keys","forEach","helper","_internalWrapHelper","wrapHelper","passLookupPropertyOption","wrapHelpersToPassLookupProperty","usePartial","useDecorators","createProtoAccessControl","keepHelperInHelpers","allowCallsToHelperMissing","_helpers","_child","currentPartialBlock","contextPath","partialBlock","Function","newObj","key","_interopRequireWildcard","prog","currentDepths","props","components","ArrowRight","NcButton","type","String","default","t","valueLoading","loading","Boolean","required","invertedColors","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","attrs","on","$event","$emit","scopedSlots","_u","staticClass","proxy","_v","_s","computed","userNameInputLengthIs255","user","userInputHelperText","LoginButton","NcCheckboxRadioSwitch","NcPasswordField","NcTextField","NcNoteCard","mixins","AuthMixin","username","redirectUrl","errors","Array","messages","throttleDelay","Number","autoCompleteAllowed","remembermeAllowed","directLogin","emailStates","setup","headlineText","productName","OC","theme","sanitize","escape","loginTimeout","loadState","requestToken","window","timezone","Intl","DateTimeFormat","resolvedOptions","timeZone","timezoneOffset","Date","getTimezoneOffset","password","rememberme","visible","resetFormTimeout","debounce","handleResetForm","isError","invalidPassword","userDisabled","errorLabel","apacheAuthFailed","indexOf","csrfCheckFailed","internalException","loadingIcon","imagePath","loginActionUrl","generateUrl","emailEnabled","every","state","loginText","watch","mounted","$refs","inputField","input","focus","methods","updateUsername","submit","event","preventDefault","ref","_e","_l","message","index","class","staticStyle","shake","model","callback","$$v","expression","domProps","_browserSupportsWebAuthnInternals","stubThis","globalThis","PublicKeyCredential","Error","constructor","code","cause","super","defineProperty","enumerable","configurable","writable","createNewAbortSignal","controller","abortError","abort","newController","AbortController","signal","cancelCeremony","buffer","bytes","Uint8Array","str","charCode","fromCharCode","btoa","replace","base64URLString","base64","padLength","padded","padEnd","binary","atob","ArrayBuffer","charCodeAt","_browserSupportsWebAuthnAutofillInternals","descriptor","id","transports","attachments","attachment","emits","title","fillColor","size","_b","$attrs","getCurrentUser","getLoggerBuilder","setApp","build","setUid","uid","detectUser","NoValidCredentials","defineComponent","InformationIcon","LockOpenIcon","NcEmptyContent","isHttps","isLocalhost","supportsWebauthn","browserSupportsWebAuthn","validCredentials","authenticate","loginForm","checkValidity","logger","debug","params","async","loginName","url","Axios","post","allowCredentials","error","optionsJSON","challenge","console","warn","useBrowserAutofill","verifyBrowserAutofillInput","map","publicKey","getOptions","Promise","resolve","globalPublicKeyCredential","isConditionalMediationAvailable","browserSupportsWebAuthnAutofill","document","querySelectorAll","mediation","credential","navigator","credentials","get","err","AbortSignal","effectiveDomain","location","hostname","test","rpId","identifyAuthenticationError","rawId","response","userHandle","authenticatorData","clientDataJSON","signature","clientExtensionResults","getClientExtensionResults","authenticatorAttachment","startWebauthnAuthentication","startAuthentication","completeAuthentication","changeUsername","authData","JSON","stringify","finishAuthentication","then","defaultRedirectUrl","href","catch","_setupProxy","apply","resetPasswordLink","axios","status","resetPasswordTarget","encrypted","proceed","encryption","msg","e","directives","rawName","target","composing","isArray","_i","$$a","$$el","$$c","checked","$$i","slice","warning","query","queryString","parse","search","clear","localStorage","sessionStorage","indexedDBList","indexedDB","databases","deleteDatabase","wipeBrowserStorages","LoginForm","PasswordLessLoginForm","ResetPassword","UpdatePassword","passwordlessLogin","resetPassword","canResetPassword","resetPasswordUser","direct","hasPasswordless","countAlternativeLogins","alternativeLogins","protocol","hideLoginForm","passwordResetFinished","alternativeLogin","isAdmin","_oc_isadmin","appConfig","oc_appconfig","dynamicSlideToggleEnabled","Apps","enableDynamicSlideToggle","$el","$","removeClass","show","trigger","hide","addClass","_oc_appswebroots","methodMap","create","update","patch","delete","read","parsePropFindResult","davProperties","_","subResult","propStat","properties","propKey","parseIdFromLocation","queryPos","substr","parts","pop","isSuccessStatus","callPropPatch","client","headers","propPatch","changedProp","convertModelAttributesToDavProperties","changed","success","toJSON","Backbone","VendorBackbone","assign","davCall","dav","Client","baseUrl","xmlNamespaces","resolveUrl","requesttoken","propFind","propsMapping","results","body","shift","callPropFind","request","callMkCol","responseJson","locationHeader","xhr","getResponseHeader","callMethod","davSync","method","isCollection","Collection","hasInnerCollection","usePUT","collection","urlError","processData","textStatus","errorThrown","_oc_config","rawUid","getElementsByTagName","getAttribute","displayName","currentUser","_oc_debug","Dialogs","YES_NO_BUTTONS","OK_BUTTONS","FILEPICKER_TYPE_CHOOSE","FILEPICKER_TYPE_MOVE","FILEPICKER_TYPE_COPY","FILEPICKER_TYPE_COPY_MOVE","FILEPICKER_TYPE_CUSTOM","alert","text","modal","OK_BUTTON","info","confirm","confirmDestructive","buttons","DialogBuilder","setName","setText","setButtons","label","variant","clicked","_getLegacyButtons","confirmHtml","setHTML","prompt","spawnDialog","defineAsyncComponent","inputName","isPassword","args","filepicker","multiselect","mimetype","_modal","FilePickerType","Choose","path","legacyCallback","getPath","node","startsWith","nodes","builder","getFilePickerBuilder","button","addButton","defaultButton","setButtonFactory","displayname","basename","push","multiSelect","file","CopyMove","Copy","icon","IconCopy","Move","setMimeTypeFilter","filter","setFilter","fileid","mime","mtime","getTime","permissions","attributes","etag","hasPreview","mountType","quotaAvailableBytes","sharePermissions","nodeToLegacyFile","allowDirectories","allowDirectoryChooser","includes","setMultiSelect","startAt","pick","content","dialogType","allowHtml","setSeverity","dialog","_clicked","buttonList","cancel","_fileexistsshown","fileexists","original","replacement","self","dialogDeferred","addConflict","$conflicts","$conflict","find","clone","$originalDiv","$replacementDiv","Util","humanFileSize","formatDate","lastModified","directory","urlSpec","x","y","c","forceIcon","previewpath","Files","generatePreviewUrl","css","FileReader","reader","onload","blob","Blob","URL","webkitURL","originalUrl","createObjectURL","image","Image","src","img","canvas","createElement","width","height","Math","min","getContext","drawImage","W","H","W2","H2","round","getImageData","img2","data2","ratio_w","ratio_h","ratio_w_half","ceil","ratio_h_half","j","x2","weight","weights","weights_alpha","gx_r","gx_g","gx_b","gx_a","center_y","yy","floor","dy","abs","center_x","w0","xx","dx","w","sqrt","clearRect","max","putImageData","resampleHermite","toDataURL","crop","readAsArrayBuffer","reject","getCroppedPreview","MimeType","getIconUrl","checkboxId","attr","append","prop","dialogName","dialogId","count","n","children","_getFileExistsTemplate","$tmpl","$dlg","octemplate","dialog_name","allnewfiles","allexistingfiles","why","what","buttonlist","classes","click","onCancel","ocdialog","onContinue","closeOnEscape","closeButton","close","remove","$primaryButton","closest","updatePrimaryButton","checkedCount","$checkbox","fail","promise","defer","$fileexistsTemplate","filePath","tmpl","getRequestToken","head","dataset","OCEventSource","joinChar","dataStr","typelessListeners","closed","listeners","encodeURIComponent","useFallBack","EventSource","iframeId","iframeCount","fallBackSources","iframe","source","onmessage","bind","listen","fallBackCallBack","done","lastLength","addEventListener","load","loadTranslations","register","_unregister","unregister","translate","translatePlural","Handlebars","app","currentMenu","currentMenuToggle","hideMenus","complete","lastMenu","slideUp","iconCache","Map","mimeType","MimeTypeList","aliases","has","gotIcon","folder","themes","getRootUrl","getMimeTypeIcon","files","OCA","Theming","cacheBuster","set","RegExp","clearIconCache","startSaving","selector","startAction","stop","finishedSaving","finishedAction","finishedSuccess","finishedError","delay","fadeOut","updatableNotification","getDefaultNotificationFunction","setDefault","$row","each","toastify","hideToast","showHtml","html","isHTML","timeout","TOAST_PERMANENT_TIMEOUT","toast","showMessage","toastElement","toString","escapeHTML","showUpdate","showTemporary","TOAST_DEFAULT_TIMEOUT","isHidden","requiresPasswordConfirmation","isPasswordConfirmationRequired","requirePasswordConfirmation","rejectCallback","confirmPassword","_plugins","targetName","plugin","plugins","getPlugins","attach","targetObject","detach","_theme","debug_1","hasRequiredDebug","constants","hasRequiredConstants","requireDebug","process","NODE_DEBUG","requireConstants","MAX_SAFE_INTEGER","MAX_LENGTH","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","RELEASE_TYPES","SEMVER_SPEC_VERSION","FLAG_INCLUDE_PRERELEASE","FLAG_LOOSE","hasRequiredRe","parseOptions_1","hasRequiredParseOptions","identifiers","hasRequiredIdentifiers","semver","hasRequiredSemver","major_1","hasRequiredMajor","parse_1","hasRequiredParse","valid_1","hasRequiredValid","re","requireSemver","safeRe","re2","module","safeSrc","R","LETTERDASHNUMBER","safeRegexReplacements","createToken","isGlobal","safe","token","makeSafeRegex","NUMERICIDENTIFIER","NUMERICIDENTIFIERLOOSE","NONNUMERICIDENTIFIER","PRERELEASEIDENTIFIER","PRERELEASEIDENTIFIERLOOSE","BUILDIDENTIFIER","MAINVERSION","PRERELEASE","BUILD","FULLPLAIN","MAINVERSIONLOOSE","PRERELEASELOOSE","LOOSEPLAIN","XRANGEIDENTIFIER","XRANGEIDENTIFIERLOOSE","GTLT","XRANGEPLAIN","XRANGEPLAINLOOSE","COERCEPLAIN","COERCE","COERCEFULL","LONETILDE","tildeTrimReplace","LONECARET","caretTrimReplace","comparatorTrimReplace","parseOptions","looseOption","freeze","loose","emptyOpts","requireParseOptions","compareIdentifiers","numeric","a2","b2","anum","bnum","rcompareIdentifiers","requireIdentifiers","SemVer","version","includePrerelease","TypeError","m","trim","match","LOOSE","FULL","raw","major","minor","prerelease","num","format","compare","other","compareMain","comparePre","compareBuild","inc","release","identifier","identifierBase","base","isNaN","requireMajor","throwErrors","er","requireParse","v","requireValid","hasRequiredSax","sax2","parser","opt","SAXParser","SAXStream","createStream","MAX_BUFFER_LENGTH","Stream","buffers","clearBuffers","q","bufferCheckPosition","lowercase","lowercasetags","looseCase","tags","closedRoot","sawRoot","tag","noscript","S","BEGIN","strictEntities","ENTITIES","XML_ENTITIES","attribList","xmlns","ns","rootNS","unquotedAttributeValues","trackPosition","position","line","column","emit2","EVENTS","o","F","end","write","chunk","c2","charAt","BEGIN_WHITESPACE","beginWhiteSpace","TEXT","starti","textNode","substring","isWhitespace","strictFail","TEXT_ENTITY","OPEN_WAKA","startTagPosition","SCRIPT","SCRIPT_ENDING","script","CLOSE_TAG","SGML_DECL","sgmlDecl","isMatch","nameStart","OPEN_TAG","tagName","PROC_INST","procInstName","procInstBody","pad","COMMENT","comment","doctype","DOCTYPE_DTD","toUpperCase","CDATA","emitNode","cdata","DOCTYPE","isQuote","SGML_DECL_QUOTED","DOCTYPE_QUOTED","DOCTYPE_DTD_QUOTED","COMMENT_ENDING","COMMENT_ENDED","textopts","CDATA_ENDING","CDATA_ENDING_2","PROC_INST_ENDING","PROC_INST_BODY","nameBody","newTag","openTag","OPEN_TAG_SLASH","ATTRIB","closeTag","attribName","attribValue","ATTRIB_NAME","ATTRIB_VALUE","attrib","ATTRIB_NAME_SAW_WHITE","ATTRIB_VALUE_QUOTED","ATTRIB_VALUE_UNQUOTED","ATTRIB_VALUE_ENTITY_Q","ATTRIB_VALUE_CLOSED","isAttribEnd","ATTRIB_VALUE_ENTITY_U","CLOSE_TAG_SAW_WHITE","notMatch","returnState","parsedEntity","parseEntity","unparsedEntities","values","entity","entityBody","entityStart","maxAllowed","maxActual","closeText","checkBufferLength","resume","flush","require","ex","streamWraps","ev","_parser","readable","me","onend","emit","onerror","_decoder","h","removeAllListeners","Buffer","isBuffer","SD","handler","splice","XML_NAMESPACE","XMLNS_NAMESPACE","xml","regex","stringFromCharCode","fromCodePoint","s","STATE","COMMENT_STARTING","s2","nodeType","normalize","qname","attribute","qualName","prefix","local","qn","selfClosing","uri","p","nv","isSelfClosing","toLowerCase","closeTo","entityLC","numStr","parseInt","highSurrogate","lowSurrogate","codeUnits","codePoint","isFinite","RangeError","humanList","humanListBinary","_handlers","_pushState","strParams","buildQueryString","history","pushState","pathname","userAgent","patterns","pattern","ii","style","fill","stroke","removeAttribute","setAttribute","replaceState","_cancelPop","addOnPopStateHandler","_parseHashQuery","pos","_decodeQuery","parseUrlQuery","parseQueryString","_onPopState","chunkify","tz","History","skipSmallSizes","binaryPrefixes","base1000","order","log","readableFormat","relativeSize","pow","toFixed","parseFloat","toLocaleString","computerFileSize","string","matches","b","k","kb","mb","gb","g","tb","pb","timestamp","TESTING","moment","relativeModifiedDate","diff","fromNow","getScrollBarWidth","_scrollBarWidth","inner","outer","top","left","visibility","overflow","appendChild","w1","offsetWidth","w2","clientWidth","removeChild","stripTime","date","getFullYear","getMonth","getDate","naturalSortCompare","a","aa","bb","aNum","bNum","localeCompare","getLanguage","waitFor","interval","internalCallback","setTimeout","isCookieSetToValue","cookies","cookie","webroot","_oc_webroot","lastIndexOf","ajaxConnectionLostHandler","showWarning","trailing","coreApps","menuSpeed","PERMISSION_ALL","PERMISSION_CREATE","PERMISSION_DELETE","PERMISSION_NONE","PERMISSION_READ","PERMISSION_SHARE","PERMISSION_UPDATE","TAG_FAVORITE","appswebroots","config","Config","dialogs","isUserAdmin","L10N","_ajaxConnectionLostHandler","_processAjaxError","statusText","_reloadCalled","_userIsNavigatingAway","timer","seconds","setInterval","Notification","clearInterval","reload","registerXHRForErrorProcessing","loadCallback","readyState","errorCallback","getCapabilities","realGetCapabilities","registerMenu","$toggle","$menuEl","toggle","headerMenu","isClickableElement","is","slideToggle","showMenu","unregisterMenu","off","encodePath","dirname","isSamePath","joinPaths","getCanonicalLocale","getLocale","part","decodeURIComponent","PasswordConfirmation","Plugins","generateFilePath","getRootPath","linkTo","linkToOCS","service","generateOcsUrl","ocsVersion","linkToRemote","generateRemoteUrl","linkToRemoteBase","realGetRootUrl","subscribe","L10n","Vue","mixin","Nextcloud","LoginView","$mount","___CSS_LOADER_EXPORT___","errorProps","Exception","endLineNumber","endColumn","start","tmp","idx","captureStackTrace","lineNumber","nop","registerHelper","SafeString","toHTML","_handlebarsSafeString2","_handlebarsException2","runtime","_handlebarsNoConflict2","hb","HandlebarsEnvironment","spec","inst","global","previousBackbone","VERSION","noConflict","emulateHTTP","emulateJSON","_listening","Events","eventSplitter","eventsApi","iteratee","events","opts","names","_events","onApi","ctx","listening","_listeners","interop","listenTo","_listenId","uniqueId","listeningTo","_listeningTo","Listening","tryCatchOn","handlers","offApi","stopListening","isEmpty","remaining","_callback","cleanup","once","onceMap","listenToOnce","offer","triggerApi","objEvents","allEvents","all","triggerEvents","a1","a3","listener","unbind","Model","preinitialize","cid","cidPrefix","defaults","initialize","validationError","idAttribute","sync","val","_validate","unset","silent","changes","changing","_changing","_previousAttributes","prev","isEqual","prevId","_pending","hasChanged","changedAttributes","old","previous","previousAttributes","fetch","resp","serverAttrs","wrapError","save","wait","validate","isNew","destroy","isValid","models","comparator","_reset","reset","setOptions","add","merge","addOptions","array","at","tail","singular","removed","_removeModels","added","merged","_isModel","toAdd","toMerge","toRemove","modelMap","sort","sortable","sortAttr","isString","existing","_prepareModel","_addReference","orderChanged","some","_removeReference","previousModels","unshift","_byId","modelId","where","first","findWhere","isFunction","sortBy","pluck","callbackOpts","_forwardPristineError","CollectionIterator","ITERATOR_VALUES","ITERATOR_KEYS","entries","ITERATOR_KEYSVALUES","_onModelEvent","$$iterator","Symbol","iterator","kind","_collection","_kind","_index","next","View","viewOptions","_ensureElement","delegateEventSplitter","render","_removeElement","setElement","element","undelegateEvents","_setElement","delegateEvents","el","delegate","eventName","undelegate","_createElement","className","_setAttributes","addUnderscoreMethods","Class","cb","defaultVal","addMethod","isObject","modelMatcher","matcher","collect","reduce","foldl","inject","reduceRight","foldr","detect","select","any","include","contains","invoke","toArray","take","initial","rest","drop","last","without","difference","shuffle","chain","sample","partition","groupBy","countBy","indexBy","findIndex","findLastIndex","pairs","invert","omit","Base","mappings","functions","memo","dataType","contentType","_method","beforeSend","setRequestHeader","ajax","Router","routes","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","route","isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","optional","exec","checkUrl","routeStripper","rootStripper","pathStripper","started","atRoot","getSearch","matchRoot","decodeFragment","decodeURI","getHash","getFragment","_usePushState","_wantsHashChange","_trailingSlash","trailingSlash","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","_hasPushState","rootPath","display","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","attachEvent","_checkUrlInterval","loadUrl","removeEventListener","detachEvent","notfound","decodedFragment","_updateHash","protoProps","staticProps","child","__super__","_debug","factory","_utils","inverse","appendContextPath","webpackContext","req","webpackContextResolve","__webpack_require__","field","level","lookupLevel","levelMap","_len","_key","priorKey","execIteration","newContext","it","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","whitelist","_createNewLookupObject","createNewLookupObject","allowedProtoProperties","defaultValue","allowProtoPropertiesByDefault","allowedProtoMethods","allowProtoMethodsByDefault","protoAccessControlForType","loggedProperties","_logger2","logUnexpecedPropertyAccessOnce","checkWhiteList","resetLoggedProperties","transformOptionsFn","registerDefaultDecorators","_decoratorsInline2","registerDecorator","ch","_XML_CHAR_MAP","userName","namespace","property","parseClarkNotation","_renderPropSet","propName","propValue","_escapeXml","mkcol","responseType","xhrProvider","onProgress","upload","send","fulfill","onreadystatechange","resultBody","parseMultiStatus","ontimeout","XMLHttpRequest","_parsePropNode","propNode","childNodes","subNodes","textContent","xmlBody","doc","DOMParser","parseFromString","resolver","foo","responseIterator","evaluate","XPathResult","ANY_TYPE","responseNode","iterateNext","stringValue","propStatIterator","propStatNode","propIterator","namespaceURI","localName","baseParts","parseUrl","subString","scheme","host","port","conditional","includeZero","possible","badChars","escapeChar","object","frame","chr","_decorators","objectType","unregisterHelper","registerPartial","unregisterPartial","unregisterDecorator","resetLoggedPropertyAccesses","sources","__defineGetter__","__magic__","$Handlebars","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","r","getter","d","definition","f","chunkId","promises","u","needAttach","scripts","charset","nc","onScriptComplete","clearTimeout","doneFns","parentNode","toStringTag","nmd","paths","scriptUrl","importScripts","currentScript","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","chunkLoadingGlobal","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"core-login.js?v=ec1bc7673d7d3a5f3725","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack:///nextcloud/node_modules/backbone/backbone.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack:///nextcloud/node_modules/moment/locale|sync|/^\\.\\/.*$","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=style&index=0&id=0b57a680&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack:///nextcloud/node_modules/davclient.js/lib/client.js","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/base.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack:///nextcloud/node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack:///nextcloud/node_modules/handlebars/runtime.js","webpack:///nextcloud/core/src/components/login/LoginButton.vue","webpack:///nextcloud/core/src/components/login/LoginButton.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/components/login/LoginButton.vue?428d","webpack://nextcloud/./core/src/components/login/LoginButton.vue?14f0","webpack://nextcloud/./core/src/components/login/LoginButton.vue?82aa","webpack:///nextcloud/core/src/mixins/auth.js","webpack:///nextcloud/core/src/components/login/LoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/LoginForm.vue","webpack://nextcloud/./core/src/components/login/LoginForm.vue?33a8","webpack://nextcloud/./core/src/components/login/LoginForm.vue?a678","webpack://nextcloud/./core/src/components/login/LoginForm.vue?4366","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthn.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnError.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/webAuthnAbortService.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/bufferToBase64URLString.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/base64URLStringToBuffer.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/browserSupportsWebAuthnAutofill.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/toPublicKeyCredentialDescriptor.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/toAuthenticatorAttachment.js","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/LockOpen.vue?104d","webpack:///nextcloud/node_modules/vue-material-design-icons/LockOpen.vue?vue&type=template&id=d7513faa","webpack:///nextcloud/core/src/logger.js","webpack:///nextcloud/core/src/services/WebAuthnAuthenticationService.ts","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue","webpack:///nextcloud/core/src/components/login/PasswordLessLoginForm.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/methods/startAuthentication.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/identifyAuthenticationError.js","webpack:///nextcloud/node_modules/@simplewebauthn/browser/esm/helpers/isValidDomain.js","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?2492","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?09eb","webpack://nextcloud/./core/src/components/login/PasswordLessLoginForm.vue?16ec","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=script&lang=ts","webpack:///nextcloud/core/src/components/login/ResetPassword.vue","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?e816","webpack://nextcloud/./core/src/components/login/ResetPassword.vue?9d75","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue?vue&type=script&lang=js","webpack:///nextcloud/core/src/components/login/UpdatePassword.vue","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?84cd","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?30ca","webpack://nextcloud/./core/src/components/login/UpdatePassword.vue?1c8f","webpack:///nextcloud/core/src/views/Login.vue","webpack:///nextcloud/core/src/utils/xhr-request.js","webpack:///nextcloud/core/src/views/Login.vue?vue&type=script&lang=js","webpack://nextcloud/./core/src/views/Login.vue?6921","webpack://nextcloud/./core/src/views/Login.vue?3468","webpack://nextcloud/./core/src/views/Login.vue?ae59","webpack:///nextcloud/core/src/OC/admin.js","webpack:///nextcloud/core/src/OC/appconfig.js","webpack:///nextcloud/core/src/OC/apps.js","webpack:///nextcloud/core/src/OC/appswebroots.js","webpack:///nextcloud/core/src/OC/backbone-webdav.js","webpack:///nextcloud/core/src/OC/backbone.js","webpack:///nextcloud/core/src/OC/config.js","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/core/src/OC/debug.js","webpack:///nextcloud/core/src/OC/dialogs.js","webpack:///nextcloud/core/src/OC/requesttoken.ts","webpack:///nextcloud/core/src/OC/eventsource.js","webpack:///nextcloud/core/src/OC/l10n.js","webpack:///nextcloud/core/src/OC/menu.js","webpack:///nextcloud/core/src/OC/constants.js","webpack:///nextcloud/core/src/OC/mimeType.js","webpack:///nextcloud/core/src/OC/msg.js","webpack:///nextcloud/core/src/OC/notification.js","webpack:///nextcloud/core/src/OC/password-confirmation.js","webpack:///nextcloud/core/src/OC/plugins.js","webpack:///nextcloud/core/src/OC/theme.js","webpack:///nextcloud/node_modules/@nextcloud/files/dist/index.mjs","webpack:///nextcloud/core/src/OC/util-history.js","webpack:///nextcloud/core/src/OC/util.js","webpack:///nextcloud/core/src/OC/webroot.js","webpack:///nextcloud/core/src/OC/xhr-error.js","webpack:///nextcloud/core/src/OC/index.js","webpack:///nextcloud/core/src/OC/capabilities.js","webpack:///nextcloud/core/src/OC/query-string.js","webpack:///nextcloud/core/src/OC/routing.js","webpack:///nextcloud/core/src/mixins/Nextcloud.js","webpack:///nextcloud/core/src/login.js","webpack:///nextcloud/core/src/components/login/ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({ lookupProperty: lookupProperty }, options);\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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QUFDbkMsV0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxFQUFkLGNBQWMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0dBQ2xELENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgbGV0IGV4dGVuZGVkT3B0aW9ucyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBwcm90b0FjY2Vzc0NvbnRyb2w6IHRoaXMucHJvdG9BY2Nlc3NDb250cm9sXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBwYXJ0aWFsLFxuICAgICAgY29udGV4dCxcbiAgICAgIGV4dGVuZGVkT3B0aW9uc1xuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKFxuICAgICAgICBwYXJ0aWFsLFxuICAgICAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLFxuICAgICAgICBlbnZcbiAgICAgICk7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgZXh0ZW5kZWRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHBhcnRpYWwgJyArXG4gICAgICAgICAgb3B0aW9ucy5uYW1lICtcbiAgICAgICAgICAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIGxldCBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbihvYmosIG5hbWUsIGxvYykge1xuICAgICAgaWYgKCFvYmogfHwgIShuYW1lIGluIG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignXCInICsgbmFtZSArICdcIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqLCB7XG4gICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5KG9iaiwgbmFtZSk7XG4gICAgfSxcbiAgICBsb29rdXBQcm9wZXJ0eTogZnVuY3Rpb24ocGFyZW50LCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uKGRlcHRocywgbmFtZSkge1xuICAgICAgY29uc3QgbGVuID0gZGVwdGhzLmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGRlcHRoc1tpXSAmJiBjb250YWluZXIubG9va3VwUHJvcGVydHkoZGVwdGhzW2ldLCBuYW1lKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uKGkpIHtcbiAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLFxuICAgICAgICBmbiA9IHRoaXMuZm4oaSk7XG4gICAgICBpZiAoZGF0YSB8fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgaSxcbiAgICAgICAgICBmbixcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRlY2xhcmVkQmxvY2tQYXJhbXMsXG4gICAgICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICAgICAgZGVwdGhzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2VJZk5lZWRlZDogZnVuY3Rpb24ocGFyYW0sIGNvbW1vbikge1xuICAgICAgbGV0IG9iaiA9IHBhcmFtIHx8IGNvbW1vbjtcblxuICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykge1xuICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7XG4gICAgICAgIGRlcHRocyA9XG4gICAgICAgICAgY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXVxuICAgICAgICAgICAgPyBbY29udGV4dF0uY29uY2F0KG9wdGlvbnMuZGVwdGhzKVxuICAgICAgICAgICAgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgJycgK1xuICAgICAgICB0ZW1wbGF0ZVNwZWMubWFpbihcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnMoXG4gICAgICB0ZW1wbGF0ZVNwZWMubWFpbixcbiAgICAgIG1haW4sXG4gICAgICBjb250YWluZXIsXG4gICAgICBvcHRpb25zLmRlcHRocyB8fCBbXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGxldCBtZXJnZWRIZWxwZXJzID0gVXRpbHMuZXh0ZW5kKHt9LCBlbnYuaGVscGVycywgb3B0aW9ucy5oZWxwZXJzKTtcbiAgICAgIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IoXG4gICAgICBwcm9nLFxuICAgICAgcHJvcHMsXG4gICAgICBjb250YWluZXIsXG4gICAgICBkZXB0aHMgJiYgZGVwdGhzWzBdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpO1xuICB9XG4gIHJldHVybiBwcm9nO1xufVxuXG5mdW5jdGlvbiB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcikge1xuICBPYmplY3Qua2V5cyhtZXJnZWRIZWxwZXJzKS5mb3JFYWNoKGhlbHBlck5hbWUgPT4ge1xuICAgIGxldCBoZWxwZXIgPSBtZXJnZWRIZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV0gPSBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFzc0xvb2t1cFByb3BlcnR5T3B0aW9uKGhlbHBlciwgY29udGFpbmVyKSB7XG4gIGNvbnN0IGxvb2t1cFByb3BlcnR5ID0gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5O1xuICByZXR1cm4gd3JhcEhlbHBlcihoZWxwZXIsIG9wdGlvbnMgPT4ge1xuICAgIHJldHVybiBVdGlscy5leHRlbmQoeyBsb29rdXBQcm9wZXJ0eSB9LCBvcHRpb25zKTtcbiAgfSk7XG59XG4iXX0=\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-box[data-v-518c0816]{width:320px;box-sizing:border-box}.login-box__wrapper[data-v-518c0816]{display:flex;flex-direction:column;gap:calc(2*var(--default-grid-baseline))}.login-box__alternative-logins[data-v-518c0816]{display:flex;flex-direction:column;gap:.75rem}.fade-enter-active[data-v-518c0816],.fade-leave-active[data-v-518c0816]{transition:opacity .3s}.fade-enter[data-v-518c0816],.fade-leave-to[data-v-518c0816]{opacity:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/views/Login.vue\"],\"names\":[],\"mappings\":\"AACA,4BAEC,WAAA,CACA,qBAAA,CAEA,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CAGD,gDACC,YAAA,CACA,qBAAA,CACA,UAAA,CAIF,wEACC,sBAAA,CAGD,6DACC,SAAA\",\"sourcesContent\":[\"\\n.login-box {\\n\\t// Same size as dashboard panels\\n\\twidth: 320px;\\n\\tbox-sizing: border-box;\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(2 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__alternative-logins {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: 0.75rem;\\n\\t}\\n}\\n\\n.fade-enter-active, .fade-leave-active {\\n\\ttransition: opacity .3s;\\n}\\n\\n.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {\\n\\topacity: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.button-vue[data-v-bbf83d00]{margin-top:.5rem}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginButton.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA\",\"sourcesContent\":[\"\\n.button-vue {\\n\\tmargin-top: .5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","// Backbone.js 1.6.1\n\n// (c) 2010-2024 Jeremy Ashkenas and DocumentCloud\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global;\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, root.jQuery || root.Zepto || root.ender || root.$);\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.6.1';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // A private global variable to share between listeners and listenees.\n var _listening;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n this._events = eventsApi(onApi, this._events || {}, name, callback, {\n context: context,\n ctx: this,\n listening: _listening\n });\n\n if (_listening) {\n var listeners = this._listeners || (this._listeners = {});\n listeners[_listening.id] = _listening;\n // Allow the listening to use a counter, instead of tracking\n // callbacks for library interop\n _listening.interop = false;\n }\n\n return this;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = _listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n this._listenId || (this._listenId = _.uniqueId('l'));\n listening = _listening = listeningTo[id] = new Listening(this, obj);\n }\n\n // Bind callbacks on obj.\n var error = tryCatchOn(obj, name, callback, this);\n _listening = void 0;\n\n if (error) throw error;\n // If the target obj is not Backbone.Events, track events manually.\n if (listening.interop) listening.on(name, callback);\n\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // An try-catch guarded #on function, to prevent poisoning the global\n // `_listening` variable.\n var tryCatchOn = function(obj, name, callback, context) {\n try {\n obj.on(name, callback, context);\n } catch (e) {\n return e;\n }\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n if (listening.interop) listening.off(name, callback);\n }\n if (_.isEmpty(listeningTo)) this._listeningTo = void 0;\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var context = options.context, listeners = options.listeners;\n var i = 0, names;\n\n // Delete all event listeners and \"drop\" events.\n if (!name && !context && !callback) {\n for (names = _.keys(listeners); i < names.length; i++) {\n listeners[names[i]].cleanup();\n }\n return;\n }\n\n names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Find any remaining events.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n var listening = handler.listening;\n if (listening) listening.off(name, callback);\n }\n }\n\n // Replace events if there are any remaining. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // A listening class that tracks and cleans up memory bindings\n // when all callbacks have been offed.\n var Listening = function(listener, obj) {\n this.id = listener._listenId;\n this.listener = listener;\n this.obj = obj;\n this.interop = true;\n this.count = 0;\n this._events = void 0;\n };\n\n Listening.prototype.on = Events.on;\n\n // Offs a callback (or several).\n // Uses an optimized counter if the listenee uses Backbone.Events.\n // Otherwise, falls back to manual tracking to support events\n // library interop.\n Listening.prototype.off = function(name, callback) {\n var cleanup;\n if (this.interop) {\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: void 0,\n listeners: void 0\n });\n cleanup = !this._events;\n } else {\n this.count--;\n cleanup = this.count === 0;\n }\n if (cleanup) this.cleanup();\n };\n\n // Cleans up memory bindings between the listener and the listenee.\n Listening.prototype.cleanup = function() {\n delete this.listener._listeningTo[this.obj._listenId];\n if (!this.interop) delete this.obj._listeners[this.id];\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n\n // Just _.defaults would work fine, but the additional _.extends\n // is in there for historical reasons. See #3843.\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Model.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) {\n var prevId = this.id;\n this.id = this.get(this.idAttribute);\n if (this.id !== prevId) {\n this.trigger('changeId', this, prevId, options);\n }\n }\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n var hasChanged;\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n hasChanged = true;\n }\n return hasChanged ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Collection.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = comparator.bind(this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) {\n m.off('error', collection._forwardPristineError, collection);\n collection.add(m, callbackOpts);\n }\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n // In case of wait:true, our collection is not listening to any\n // of the model's events yet, so it will not forward the error\n // event. In this special case, we need to listen for it\n // separately and handle the event just once.\n // (The reason we don't need to do this for the sync event is\n // in the success handler above: we add the model first, which\n // causes the collection to listen, and then invoke the callback\n // that triggers the event.)\n if (wait) {\n model.once('error', this._forwardPristineError, this);\n }\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs, idAttribute) {\n return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];\n },\n\n // Get an iterator of all models in this collection.\n values: function() {\n return new CollectionIterator(this, ITERATOR_VALUES);\n },\n\n // Get an iterator of all model IDs in this collection.\n keys: function() {\n return new CollectionIterator(this, ITERATOR_KEYS);\n },\n\n // Get an iterator of all [ID, model] tuples in this collection.\n entries: function() {\n return new CollectionIterator(this, ITERATOR_KEYSVALUES);\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n\n var model;\n if (this.model.prototype) {\n model = new this.model(attrs, options);\n } else {\n // ES class methods didn't have prototype\n model = this.model(attrs, options);\n }\n\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n if (models.length > 0 && !options.silent) delete options.index;\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes, model.idAttribute);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'changeId') {\n var prevId = this.modelId(model.previousAttributes(), model.idAttribute);\n var id = this.modelId(model.attributes, model.idAttribute);\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n this.trigger.apply(this, arguments);\n },\n\n // Internal callback method used in `create`. It serves as a\n // stand-in for the `_onModelEvent` method, which is not yet bound\n // during the `wait` period of the `create` call. We still want to\n // forward any `'error'` event at the end of the `wait` period,\n // hence a customized callback.\n _forwardPristineError: function(model, collection, options) {\n // Prevent double forward if the model was already in the\n // collection before the call to `create`.\n if (this.has(model)) return;\n this._onModelEvent('error', model, collection, options);\n }\n });\n\n // Defining an @@iterator method implements JavaScript's Iterable protocol.\n // In modern ES2015 browsers, this value is found at Symbol.iterator.\n /* global Symbol */\n var $$iterator = typeof Symbol === 'function' && Symbol.iterator;\n if ($$iterator) {\n Collection.prototype[$$iterator] = Collection.prototype.values;\n }\n\n // CollectionIterator\n // ------------------\n\n // A CollectionIterator implements JavaScript's Iterator protocol, allowing the\n // use of `for of` loops in modern browsers and interoperation between\n // Backbone.Collection and other JavaScript functions and third-party libraries\n // which can operate on Iterables.\n var CollectionIterator = function(collection, kind) {\n this._collection = collection;\n this._kind = kind;\n this._index = 0;\n };\n\n // This \"enum\" defines the three possible kinds of values which can be emitted\n // by a CollectionIterator that correspond to the values(), keys() and entries()\n // methods on Collection, respectively.\n var ITERATOR_VALUES = 1;\n var ITERATOR_KEYS = 2;\n var ITERATOR_KEYSVALUES = 3;\n\n // All Iterators should themselves be Iterable.\n if ($$iterator) {\n CollectionIterator.prototype[$$iterator] = function() {\n return this;\n };\n }\n\n CollectionIterator.prototype.next = function() {\n if (this._collection) {\n\n // Only continue iterating if the iterated collection is long enough.\n if (this._index < this._collection.length) {\n var model = this._collection.at(this._index);\n this._index++;\n\n // Construct a value depending on what kind of values should be iterated.\n var value;\n if (this._kind === ITERATOR_VALUES) {\n value = model;\n } else {\n var id = this._collection.modelId(model.attributes, model.idAttribute);\n if (this._kind === ITERATOR_KEYS) {\n value = id;\n } else { // ITERATOR_KEYSVALUES\n value = [id, model];\n }\n }\n return {value: value, done: false};\n }\n\n // Once exhausted, remove the reference to the collection so future\n // calls to the next method always return done.\n this._collection = void 0;\n }\n\n return {value: void 0, done: true};\n };\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n this.preinitialize.apply(this, arguments);\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the View\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], method.bind(this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(base, length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return base[method](this[attribute]);\n };\n case 2: return function(value) {\n return base[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return base[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return base[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return base[method].apply(base, args);\n };\n }\n };\n\n var addUnderscoreMethods = function(Class, base, methods, attribute) {\n _.each(methods, function(length, method) {\n if (base[method]) Class.prototype[method] = addMethod(base, length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n\n _.each([\n [Collection, collectionMethods, 'models'],\n [Model, modelMethods, 'attributes']\n ], function(config) {\n var Base = config[0],\n methods = config[1],\n attribute = config[2];\n\n Base.mixin = function(obj) {\n var mappings = _.reduce(_.functions(obj), function(memo, name) {\n memo[name] = 0;\n return memo;\n }, {});\n addUnderscoreMethods(Base, obj, mappings, attribute);\n };\n\n addUnderscoreMethods(Base, _, methods, attribute);\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n this.preinitialize.apply(this, arguments);\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // preinitialize is an empty function by default. You can override it with a function\n // or object. preinitialize will run before any instantiation logic is run in the Router.\n preinitialize: function(){},\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = this.checkUrl.bind(this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._trailingSlash = this.options.trailingSlash;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) {\n if (!this.matchRoot()) return this.notfound();\n return false;\n }\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return this.notfound();\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n }) || this.notfound();\n },\n\n // When no route could be matched, this method is called internally to\n // trigger the `'notfound'` event. It returns `false` so that it can be used\n // in tail position.\n notfound: function() {\n this.trigger('notfound');\n return false;\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Strip trailing slash on the root unless _trailingSlash is true\n var rootPath = this.root;\n if (!this._trailingSlash && (fragment === '' || fragment.charAt(0) === '?')) {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the fragment of the query and hash for matching.\n fragment = fragment.replace(pathStripper, '');\n\n // Decode for matching.\n var decodedFragment = this.decodeFragment(fragment);\n\n if (this.fragment === decodedFragment) return;\n this.fragment = decodedFragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n // Provide useful information when things go wrong. This method is not meant\n // to be used directly; it merely provides the necessary introspection for the\n // external `debugInfo` function.\n Backbone._debug = function() {\n return {root: root, _: _};\n };\n\n return Backbone;\n});\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.login-form[data-v-f91ba7fe]{text-align:start;font-size:1rem;margin:0}.login-form__fieldset[data-v-f91ba7fe]{width:100%;display:flex;flex-direction:column;gap:.5rem}.login-form__headline[data-v-f91ba7fe]{text-align:center;overflow-wrap:anywhere}.login-form[data-v-f91ba7fe] input:invalid:not(:user-invalid){border-color:var(--color-border-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/LoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,6BACC,gBAAA,CACA,cAAA,CACA,QAAA,CAEA,uCACC,UAAA,CACA,YAAA,CACA,qBAAA,CACA,SAAA,CAGD,uCACC,iBAAA,CACA,sBAAA,CAID,8DACC,uDAAA\",\"sourcesContent\":[\"\\n.login-form {\\n\\ttext-align: start;\\n\\tfont-size: 1rem;\\n\\tmargin: 0;\\n\\n\\t&__fieldset {\\n\\t\\twidth: 100%;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: .5rem;\\n\\t}\\n\\n\\t&__headline {\\n\\t\\ttext-align: center;\\n\\t\\toverflow-wrap: anywhere;\\n\\t}\\n\\n\\t// Only show the error state if the user interacted with the login box\\n\\t:deep(input:invalid:not(:user-invalid)) {\\n\\t\\tborder-color: var(--color-border-maxcontrast) !important;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n var newContext = [];\n var iterator = context[Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbkUsWUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFlBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUM1QyxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBjb250ZXh0W1N5bWJvbC5pdGVyYXRvcl0pIHtcbiAgICAgICAgY29uc3QgbmV3Q29udGV4dCA9IFtdO1xuICAgICAgICBjb25zdCBpdGVyYXRvciA9IGNvbnRleHRbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgICBmb3IgKGxldCBpdCA9IGl0ZXJhdG9yLm5leHQoKTsgIWl0LmRvbmU7IGl0ID0gaXRlcmF0b3IubmV4dCgpKSB7XG4gICAgICAgICAgbmV3Q29udGV4dC5wdXNoKGl0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0ID0gbmV3Q29udGV4dDtcbiAgICAgICAgZm9yIChsZXQgaiA9IGNvbnRleHQubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihpLCBpLCBpID09PSBjb250ZXh0Lmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMoY29udGV4dCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAvLyBhbiBpdGVybWVkaWF0ZSBrZXlzIGFycmF5LlxuICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIHJldCA9IGludmVyc2UodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.password-less-login-form[data-v-0b57a680]{display:flex;flex-direction:column;gap:.5rem;margin:0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/PasswordLessLoginForm.vue\"],\"names\":[],\"mappings\":\"AACA,2CACC,YAAA,CACA,qBAAA,CACA,SAAA,CACA,QAAA\",\"sourcesContent\":[\"\\n.password-less-login-form {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\tgap: 0.5rem;\\n\\tmargin: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n var defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n _logger2['default'].log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMvQyxXQUFXOzs7O0FBRTlCLElBQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEMsU0FBUyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUU7QUFDdkQsTUFBSSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELHdCQUFzQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM5Qyx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuRCx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuRCx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQzs7QUFFbkQsTUFBSSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUVuRCwwQkFBd0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRTlDLFNBQU87QUFDTCxjQUFVLEVBQUU7QUFDVixlQUFTLEVBQUUsNkNBQ1Qsd0JBQXdCLEVBQ3hCLGNBQWMsQ0FBQyxzQkFBc0IsQ0FDdEM7QUFDRCxrQkFBWSxFQUFFLGNBQWMsQ0FBQyw2QkFBNkI7S0FDM0Q7QUFDRCxXQUFPLEVBQUU7QUFDUCxlQUFTLEVBQUUsNkNBQ1Qsc0JBQXNCLEVBQ3RCLGNBQWMsQ0FBQyxtQkFBbUIsQ0FDbkM7QUFDRCxrQkFBWSxFQUFFLGNBQWMsQ0FBQywwQkFBMEI7S0FDeEQ7R0FDRixDQUFDO0NBQ0g7O0FBRU0sU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRTtBQUN4RSxNQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtBQUNoQyxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDakUsTUFBTTtBQUNMLFdBQU8sY0FBYyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztHQUNwRTtDQUNGOztBQUVELFNBQVMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLFlBQVksRUFBRTtBQUMvRCxNQUFJLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLEVBQUU7QUFDbkUsV0FBTyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO0dBQ25FO0FBQ0QsTUFBSSx5QkFBeUIsQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFO0FBQ3hELFdBQU8seUJBQXlCLENBQUMsWUFBWSxDQUFDO0dBQy9DO0FBQ0QsZ0NBQThCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDN0MsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFRCxTQUFTLDhCQUE4QixDQUFDLFlBQVksRUFBRTtBQUNwRCxNQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRTtBQUMzQyxvQkFBZ0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEMsd0JBQU8sR0FBRyxDQUNSLE9BQU8sRUFDUCxpRUFBK0QsWUFBWSxvSUFDSCxvSEFDMkMsQ0FDcEgsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxxQkFBcUIsR0FBRztBQUN0QyxRQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsWUFBWSxFQUFJO0FBQ3BELFdBQU8sZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7R0FDdkMsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoicHJvdG8tYWNjZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlTmV3TG9va3VwT2JqZWN0IH0gZnJvbSAnLi9jcmVhdGUtbmV3LWxvb2t1cC1vYmplY3QnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuXG5jb25zdCBsb2dnZWRQcm9wZXJ0aWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChydW50aW1lT3B0aW9ucykge1xuICBsZXQgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ2NvbnN0cnVjdG9yJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVHZXR0ZXJfXyddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lU2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2xvb2t1cEdldHRlcl9fJ10gPSBmYWxzZTtcblxuICBsZXQgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvXG4gIGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdFsnX19wcm90b19fJ10gPSBmYWxzZTtcblxuICByZXR1cm4ge1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHdoaXRlbGlzdDogY3JlYXRlTmV3TG9va3VwT2JqZWN0KFxuICAgICAgICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b1Byb3BlcnRpZXNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9Qcm9wZXJ0aWVzQnlEZWZhdWx0XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdCxcbiAgICAgICAgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvTWV0aG9kc1xuICAgICAgKSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcnVudGltZU9wdGlvbnMuYWxsb3dQcm90b01ldGhvZHNCeURlZmF1bHRcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN1bHRJc0FsbG93ZWQocmVzdWx0LCBwcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkge1xuICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2wubWV0aG9kcywgcHJvcGVydHlOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLnByb3BlcnRpZXMsIHByb3BlcnR5TmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZSwgcHJvcGVydHlOYW1lKSB7XG4gIGlmIChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLndoaXRlbGlzdFtwcm9wZXJ0eU5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLmRlZmF1bHRWYWx1ZTtcbiAgfVxuICBsb2dVbmV4cGVjZWRQcm9wZXJ0eUFjY2Vzc09uY2UocHJvcGVydHlOYW1lKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsb2dVbmV4cGVjZWRQcm9wZXJ0eUFjY2Vzc09uY2UocHJvcGVydHlOYW1lKSB7XG4gIGlmIChsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gIT09IHRydWUpIHtcbiAgICBsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gPSB0cnVlO1xuICAgIGxvZ2dlci5sb2coXG4gICAgICAnZXJyb3InLFxuICAgICAgYEhhbmRsZWJhcnM6IEFjY2VzcyBoYXMgYmVlbiBkZW5pZWQgdG8gcmVzb2x2ZSB0aGUgcHJvcGVydHkgXCIke3Byb3BlcnR5TmFtZX1cIiBiZWNhdXNlIGl0IGlzIG5vdCBhbiBcIm93biBwcm9wZXJ0eVwiIG9mIGl0cyBwYXJlbnQuXFxuYCArXG4gICAgICAgIGBZb3UgY2FuIGFkZCBhIHJ1bnRpbWUgb3B0aW9uIHRvIGRpc2FibGUgdGhlIGNoZWNrIG9yIHRoaXMgd2FybmluZzpcXG5gICtcbiAgICAgICAgYFNlZSBodHRwczovL2hhbmRsZWJhcnNqcy5jb20vYXBpLXJlZmVyZW5jZS9ydW50aW1lLW9wdGlvbnMuaHRtbCNvcHRpb25zLXRvLWNvbnRyb2wtcHJvdG90eXBlLWFjY2VzcyBmb3IgZGV0YWlsc2BcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldExvZ2dlZFByb3BlcnRpZXMoKSB7XG4gIE9iamVjdC5rZXlzKGxvZ2dlZFByb3BlcnRpZXMpLmZvckVhY2gocHJvcGVydHlOYW1lID0+IHtcbiAgICBkZWxldGUgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","/*\n * vim: expandtab shiftwidth=4 softtabstop=4\n */\n\nconst dav = {}\n\ndav._XML_CHAR_MAP = {\n '<': '<',\n '>': '>',\n '&': '&',\n '\"': '"',\n \"'\": '''\n};\n\ndav._escapeXml = function(s) {\n return s.replace(/[<>&\"']/g, function (ch) {\n return dav._XML_CHAR_MAP[ch];\n });\n};\n\ndav.Client = function(options) {\n var i;\n for(i in options) {\n this[i] = options[i];\n }\n\n};\n\ndav.Client.prototype = {\n\n baseUrl : null,\n\n userName : null,\n\n password : null,\n\n\n xmlNamespaces : {\n 'DAV:' : 'd'\n },\n\n /**\n * Generates a propFind request.\n *\n * @param {string} url Url to do the propfind request on\n * @param {Array} properties List of properties to retrieve.\n * @param {string} depth \"0\", \"1\" or \"infinity\"\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propFind : function(url, properties, depth, headers) {\n\n if(typeof depth === \"undefined\") {\n depth = '0';\n }\n\n // depth header must be a string, in case a number was passed in\n depth = '' + depth;\n\n headers = headers || {};\n\n headers['Depth'] = depth;\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '\\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(properties[ii]);\n if (this.xmlNamespaces[property.namespace]) {\n body+=' <' + this.xmlNamespaces[property.namespace] + ':' + property.name + ' />\\n';\n } else {\n body+=' \\n';\n }\n\n }\n body+=' \\n';\n body+='';\n\n return this.request('PROPFIND', url, headers, body).then(\n function(result) {\n\n if (depth === '0') {\n return {\n status: result.status,\n body: result.body[0],\n xhr: result.xhr\n };\n } else {\n return {\n status: result.status,\n body: result.body,\n xhr: result.xhr\n };\n }\n\n }.bind(this)\n );\n\n },\n\n /**\n * Renders a \"d:set\" block for the given properties.\n *\n * @param {Object.} properties\n * @return {String} XML \"\" block\n */\n _renderPropSet: function(properties) {\n var body = ' \\n' +\n ' \\n';\n\n for(var ii in properties) {\n if (!properties.hasOwnProperty(ii)) {\n continue;\n }\n\n var property = this.parseClarkNotation(ii);\n var propName;\n var propValue = properties[ii];\n if (this.xmlNamespaces[property.namespace]) {\n propName = this.xmlNamespaces[property.namespace] + ':' + property.name;\n } else {\n propName = 'x:' + property.name + ' xmlns:x=\"' + property.namespace + '\"';\n }\n\n // FIXME: hard-coded for now until we allow properties to\n // specify whether to be escaped or not\n if (propName !== 'd:resourcetype') {\n propValue = dav._escapeXml(propValue);\n }\n body += ' <' + propName + '>' + propValue + '\\n';\n }\n body +=' \\n';\n body +=' \\n';\n return body;\n },\n\n /**\n * Generates a propPatch request.\n *\n * @param {string} url Url to do the proppatch request on\n * @param {Object.} properties List of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n propPatch : function(url, properties, headers) {\n headers = headers || {};\n\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n var body =\n '\\n' +\n '} [properties] list of properties to store.\n * @param {Object} [headers] headers\n * @return {Promise}\n */\n mkcol : function(url, properties, headers) {\n var body = '';\n headers = headers || {};\n headers['Content-Type'] = 'application/xml; charset=utf-8';\n\n if (properties) {\n body =\n '\\n' +\n ' 0) {\n var subNodes = [];\n // filter out text nodes\n for (var j = 0; j < propNode.childNodes.length; j++) {\n var node = propNode.childNodes[j];\n if (node.nodeType === 1) {\n subNodes.push(node);\n }\n }\n if (subNodes.length) {\n content = subNodes;\n }\n }\n\n return content || propNode.textContent || propNode.text || '';\n },\n\n /**\n * Parses a multi-status response body.\n *\n * @param {string} xmlBody\n * @param {Array}\n */\n parseMultiStatus : function(xmlBody) {\n\n var parser = new DOMParser();\n var doc = parser.parseFromString(xmlBody, \"application/xml\");\n\n var resolver = function(foo) {\n var ii;\n for(ii in this.xmlNamespaces) {\n if (this.xmlNamespaces[ii] === foo) {\n return ii;\n }\n }\n }.bind(this);\n\n var responseIterator = doc.evaluate('/d:multistatus/d:response', doc, resolver, XPathResult.ANY_TYPE, null);\n\n var result = [];\n var responseNode = responseIterator.iterateNext();\n\n while(responseNode) {\n\n var response = {\n href : null,\n propStat : []\n };\n\n response.href = doc.evaluate('string(d:href)', responseNode, resolver, XPathResult.ANY_TYPE, null).stringValue;\n\n var propStatIterator = doc.evaluate('d:propstat', responseNode, resolver, XPathResult.ANY_TYPE, null);\n var propStatNode = propStatIterator.iterateNext();\n\n while(propStatNode) {\n var propStat = {\n status : doc.evaluate('string(d:status)', propStatNode, resolver, XPathResult.ANY_TYPE, null).stringValue,\n properties : {},\n };\n\n var propIterator = doc.evaluate('d:prop/*', propStatNode, resolver, XPathResult.ANY_TYPE, null);\n\n var propNode = propIterator.iterateNext();\n while(propNode) {\n var content = this._parsePropNode(propNode);\n propStat.properties['{' + propNode.namespaceURI + '}' + propNode.localName] = content;\n propNode = propIterator.iterateNext();\n\n }\n response.propStat.push(propStat);\n propStatNode = propStatIterator.iterateNext();\n\n\n }\n\n result.push(response);\n responseNode = responseIterator.iterateNext();\n\n }\n\n return result;\n\n },\n\n /**\n * Takes a relative url, and maps it to an absolute url, using the baseUrl\n *\n * @param {string} url\n * @return {string}\n */\n resolveUrl : function(url) {\n\n // Note: this is rudamentary.. not sure yet if it handles every case.\n if (/^https?:\\/\\//i.test(url)) {\n // absolute\n return url;\n }\n\n var baseParts = this.parseUrl(this.baseUrl);\n if (url.charAt('/')) {\n // Url starts with a slash\n return baseParts.root + url;\n }\n\n // Url does not start with a slash, we need grab the base url right up until the last slash.\n var newUrl = baseParts.root + '/';\n if (baseParts.path.lastIndexOf('/')!==-1) {\n newUrl = newUrl = baseParts.path.subString(0, baseParts.path.lastIndexOf('/')) + '/';\n }\n newUrl+=url;\n return url;\n\n },\n\n /**\n * Parses a url and returns its individual components.\n *\n * @param {String} url\n * @return {Object}\n */\n parseUrl : function(url) {\n\n var parts = url.match(/^(?:([A-Za-z]+):)?(\\/{0,3})([0-9.\\-A-Za-z]+)(?::(\\d+))?(?:\\/([^?#]*))?(?:\\?([^#]*))?(?:#(.*))?$/);\n var result = {\n url : parts[0],\n scheme : parts[1],\n host : parts[3],\n port : parts[4],\n path : parts[5],\n query : parts[6],\n fragment : parts[7],\n };\n result.root =\n result.scheme + '://' +\n result.host +\n (result.port ? ':' + result.port : '');\n\n return result;\n\n },\n\n parseClarkNotation : function(propertyName) {\n\n var result = propertyName.match(/^{([^}]+)}(.*)$/);\n if (!result) {\n return;\n }\n\n return {\n name : result[2],\n namespace : result[1]\n };\n\n }\n\n};\n\nmodule.exports = {\n dav,\n Client: dav.Client,\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `\nfieldset[data-v-2c0ecaf9] {\n\ttext-align: center;\n}\ninput[type=submit][data-v-2c0ecaf9] {\n\tmargin-top: 20px;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./core/src/components/login/UpdatePassword.vue\"],\"names\":[],\"mappings\":\";AAmIA;CACA,kBAAA;AACA;AAEA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.8';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy44JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","/* global globalThis */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function () {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function () {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n var $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOzs7QUFHbEMsR0FBQyxZQUFXO0FBQ1YsUUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsT0FBTztBQUMzQyxVQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxZQUFXO0FBQ3hELGFBQU8sSUFBSSxDQUFDO0tBQ2IsQ0FBQyxDQUFDO0FBQ0gsYUFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFDakMsV0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztHQUNuQyxDQUFBLEVBQUcsQ0FBQzs7QUFFTCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDOzs7QUFHMUMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDeEMsZ0JBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQ3JDO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGdsb2JhbFRoaXMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2dsb2JhbHRoaXNcbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybjtcbiAgICBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oJ19fbWFnaWNfXycsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSk7XG4gICAgX19tYWdpY19fLmdsb2JhbFRoaXMgPSBfX21hZ2ljX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5fX21hZ2ljX187XG4gIH0pKCk7XG5cbiAgY29uc3QgJEhhbmRsZWJhcnMgPSBnbG9iYWxUaGlzLkhhbmRsZWJhcnM7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKGdsb2JhbFRoaXMuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgZ2xvYmFsVGhpcy5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufVxuIl19\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginButton.vue?vue&type=template&id=bbf83d00&scoped=true\"\nimport script from \"./LoginButton.vue?vue&type=script&lang=js\"\nexport * from \"./LoginButton.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginButton.vue?vue&type=style&index=0&id=bbf83d00&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bbf83d00\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('NcButton',{attrs:{\"variant\":\"primary\",\"type\":\"submit\",\"wide\":true,\"disabled\":_vm.loading},on:{\"click\":function($event){return _vm.$emit('click')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('div',{staticClass:\"submit-wrapper__icon icon-loading-small-dark\"}):_c('ArrowRight',{staticClass:\"submit-wrapper__icon\"})]},proxy:true}])},[_vm._v(\"\\n\\t\"+_vm._s(!_vm.loading ? _vm.value : _vm.valueLoading)+\"\\n\\t\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\tcomputed: {\n\t\tuserNameInputLengthIs255() {\n\t\t\treturn this.user.length >= 255\n\t\t},\n\t\tuserInputHelperText() {\n\t\t\tif (this.userNameInputLengthIs255) {\n\t\t\t\treturn t('core', 'Email length is at max (255)')\n\t\t\t}\n\t\t\treturn undefined\n\t\t},\n\t},\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./LoginForm.vue?vue&type=template&id=f91ba7fe&scoped=true\"\nimport script from \"./LoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./LoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./LoginForm.vue?vue&type=style&index=0&id=f91ba7fe&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f91ba7fe\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{ref:\"loginForm\",staticClass:\"login-form\",attrs:{\"method\":\"post\",\"name\":\"login\",\"action\":_vm.loginActionUrl},on:{\"submit\":_vm.submit}},[_c('fieldset',{staticClass:\"login-form__fieldset\",attrs:{\"data-login-form\":\"\"}},[(_vm.apacheAuthFailed)?_c('NcNoteCard',{attrs:{\"title\":_vm.t('core', 'Server side authentication failed!'),\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.csrfCheckFailed)?_c('NcNoteCard',{attrs:{\"heading\":_vm.t('core', 'Session error'),\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'It appears your session token has expired, please refresh the page and try again.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.messages.length > 0)?_c('NcNoteCard',_vm._l((_vm.messages),function(message,index){return _c('div',{key:index},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(message)),_c('br')])}),0):_vm._e(),_vm._v(\" \"),(_vm.internalException)?_c('NcNoteCard',{class:_vm.t('core', 'An internal error occurred.'),attrs:{\"type\":\"warning\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Please try again or contact your administrator.'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"hidden\",attrs:{\"id\":\"message\"}},[_c('img',{staticClass:\"float-spinner\",attrs:{\"alt\":\"\",\"src\":_vm.loadingIcon}}),_vm._v(\" \"),_c('span',{attrs:{\"id\":\"messageText\"}}),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})]),_vm._v(\" \"),_c('h2',{staticClass:\"login-form__headline\",attrs:{\"data-login-form-headline\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.headlineText)+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('NcTextField',{ref:\"user\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"user\",\"label\":_vm.loginText,\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"none\",\"spellchecking\":false,\"autocomplete\":_vm.autoCompleteAllowed ? 'username' : 'off',\"required\":\"\",\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"data-login-form-input-user\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('NcPasswordField',{ref:\"password\",class:{ shake: _vm.invalidPassword },attrs:{\"id\":\"password\",\"name\":\"password\",\"spellchecking\":false,\"autocapitalize\":\"none\",\"autocomplete\":_vm.autoCompleteAllowed ? 'current-password' : 'off',\"label\":_vm.t('core', 'Password'),\"helper-text\":_vm.errorLabel,\"error\":_vm.isError,\"visible\":_vm.visible,\"data-login-form-input-password\":\"\",\"required\":\"\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_vm._v(\" \"),(_vm.remembermeAllowed)?_c('NcCheckboxRadioSwitch',{ref:\"rememberme\",attrs:{\"id\":\"rememberme\",\"name\":\"rememberme\",\"value\":\"1\",\"data-login-form-input-rememberme\":\"\"},model:{value:(_vm.rememberme),callback:function ($$v) {_vm.rememberme=$$v},expression:\"rememberme\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('core', 'Remember me'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"data-login-form-submit\":\"\",\"loading\":_vm.loading}}),_vm._v(\" \"),(_vm.redirectUrl)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"redirect_url\"},domProps:{\"value\":_vm.redirectUrl}}):_vm._e(),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone\"},domProps:{\"value\":_vm.timezone}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"timezone_offset\"},domProps:{\"value\":_vm.timezoneOffset}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"requesttoken\"},domProps:{\"value\":_vm.requestToken}}),_vm._v(\" \"),(_vm.directLogin)?_c('input',{attrs:{\"type\":\"hidden\",\"name\":\"direct\",\"value\":\"1\"}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * Determine if the browser is capable of Webauthn\n */\nexport function browserSupportsWebAuthn() {\n return _browserSupportsWebAuthnInternals.stubThis(globalThis?.PublicKeyCredential !== undefined &&\n typeof globalThis.PublicKeyCredential === 'function');\n}\n/**\n * Make it possible to stub the return value during testing\n * @ignore Don't include this in docs output\n */\nexport const _browserSupportsWebAuthnInternals = {\n stubThis: (value) => value,\n};\n","/**\n * A custom Error used to return a more nuanced error detailing _why_ one of the eight documented\n * errors in the spec was raised after calling `navigator.credentials.create()` or\n * `navigator.credentials.get()`:\n *\n * - `AbortError`\n * - `ConstraintError`\n * - `InvalidStateError`\n * - `NotAllowedError`\n * - `NotSupportedError`\n * - `SecurityError`\n * - `TypeError`\n * - `UnknownError`\n *\n * Error messages were determined through investigation of the spec to determine under which\n * scenarios a given error would be raised.\n */\nexport class WebAuthnError extends Error {\n constructor({ message, code, cause, name, }) {\n // @ts-ignore: help Rollup understand that `cause` is okay to set\n super(message, { cause });\n Object.defineProperty(this, \"code\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.name = name ?? cause.name;\n this.code = code;\n }\n}\n","class BaseWebAuthnAbortService {\n constructor() {\n Object.defineProperty(this, \"controller\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n createNewAbortSignal() {\n // Abort any existing calls to navigator.credentials.create() or navigator.credentials.get()\n if (this.controller) {\n const abortError = new Error('Cancelling existing WebAuthn API call for new one');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n }\n const newController = new AbortController();\n this.controller = newController;\n return newController.signal;\n }\n cancelCeremony() {\n if (this.controller) {\n const abortError = new Error('Manually cancelling existing WebAuthn API call');\n abortError.name = 'AbortError';\n this.controller.abort(abortError);\n this.controller = undefined;\n }\n }\n}\n/**\n * A service singleton to help ensure that only a single WebAuthn ceremony is active at a time.\n *\n * Users of **@simplewebauthn/browser** shouldn't typically need to use this, but it can help e.g.\n * developers building projects that use client-side routing to better control the behavior of\n * their UX in response to router navigation events.\n */\nexport const WebAuthnAbortService = new BaseWebAuthnAbortService();\n","/**\n * Convert the given array buffer into a Base64URL-encoded string. Ideal for converting various\n * credential response ArrayBuffers to string for sending back to the server as JSON.\n *\n * Helper method to compliment `base64URLStringToBuffer`\n */\nexport function bufferToBase64URLString(buffer) {\n const bytes = new Uint8Array(buffer);\n let str = '';\n for (const charCode of bytes) {\n str += String.fromCharCode(charCode);\n }\n const base64String = btoa(str);\n return base64String.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=/g, '');\n}\n","/**\n * Convert from a Base64URL-encoded string to an Array Buffer. Best used when converting a\n * credential ID from a JSON string to an ArrayBuffer, like in allowCredentials or\n * excludeCredentials\n *\n * Helper method to compliment `bufferToBase64URLString`\n */\nexport function base64URLStringToBuffer(base64URLString) {\n // Convert from Base64URL to Base64\n const base64 = base64URLString.replace(/-/g, '+').replace(/_/g, '/');\n /**\n * Pad with '=' until it's a multiple of four\n * (4 - (85 % 4 = 1) = 3) % 4 = 3 padding\n * (4 - (86 % 4 = 2) = 2) % 4 = 2 padding\n * (4 - (87 % 4 = 3) = 1) % 4 = 1 padding\n * (4 - (88 % 4 = 0) = 4) % 4 = 0 padding\n */\n const padLength = (4 - (base64.length % 4)) % 4;\n const padded = base64.padEnd(base64.length + padLength, '=');\n // Convert to a binary string\n const binary = atob(padded);\n // Convert binary string to buffer\n const buffer = new ArrayBuffer(binary.length);\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return buffer;\n}\n","import { browserSupportsWebAuthn } from './browserSupportsWebAuthn.js';\n/**\n * Determine if the browser supports conditional UI, so that WebAuthn credentials can\n * be shown to the user in the browser's typical password autofill popup.\n */\nexport function browserSupportsWebAuthnAutofill() {\n if (!browserSupportsWebAuthn()) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n /**\n * I don't like the `as unknown` here but there's a `declare var PublicKeyCredential` in\n * TS' DOM lib that's making it difficult for me to just go `as PublicKeyCredentialFuture` as I\n * want. I think I'm fine with this for now since it's _supposed_ to be temporary, until TS types\n * have a chance to catch up.\n */\n const globalPublicKeyCredential = globalThis\n .PublicKeyCredential;\n if (globalPublicKeyCredential?.isConditionalMediationAvailable === undefined) {\n return _browserSupportsWebAuthnAutofillInternals.stubThis(new Promise((resolve) => resolve(false)));\n }\n return _browserSupportsWebAuthnAutofillInternals.stubThis(globalPublicKeyCredential.isConditionalMediationAvailable());\n}\n// Make it possible to stub the return value during testing\nexport const _browserSupportsWebAuthnAutofillInternals = {\n stubThis: (value) => value,\n};\n","import { base64URLStringToBuffer } from './base64URLStringToBuffer.js';\nexport function toPublicKeyCredentialDescriptor(descriptor) {\n const { id } = descriptor;\n return {\n ...descriptor,\n id: base64URLStringToBuffer(id),\n /**\n * `descriptor.transports` is an array of our `AuthenticatorTransportFuture` that includes newer\n * transports that TypeScript's DOM lib is ignorant of. Convince TS that our list of transports\n * are fine to pass to WebAuthn since browsers will recognize the new value.\n */\n transports: descriptor.transports,\n };\n}\n","const attachments = ['cross-platform', 'platform'];\n/**\n * If possible coerce a `string` value into a known `AuthenticatorAttachment`\n */\nexport function toAuthenticatorAttachment(attachment) {\n if (!attachment) {\n return;\n }\n if (attachments.indexOf(attachment) < 0) {\n return;\n }\n return attachment;\n}\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./LockOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LockOpen.vue?vue&type=template&id=d7513faa\"\nimport script from \"./LockOpen.vue?vue&type=script&lang=js\"\nexport * from \"./LockOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon lock-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M18,8A2,2 0 0,1 20,10V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V10A2,2 0 0,1 6,8H15V6A3,3 0 0,0 12,3A3,3 0 0,0 9,6H7A5,5 0 0,1 12,1A5,5 0 0,1 17,6V8H18M12,17A2,2 0 0,0 14,15A2,2 0 0,0 12,13A2,2 0 0,0 10,15A2,2 0 0,0 12,17Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\n/**\n *\n * @param user\n */\nfunction getLogger(user) {\n\tif (user === null) {\n\t\treturn getLoggerBuilder()\n\t\t\t.setApp('core')\n\t\t\t.build()\n\t}\n\treturn getLoggerBuilder()\n\t\t.setApp('core')\n\t\t.setUid(user.uid)\n\t\t.build()\n}\n\nexport default getLogger(getCurrentUser())\n\nexport const unifiedSearchLogger = getLoggerBuilder()\n\t.setApp('unified-search')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Axios from '@nextcloud/axios';\nimport { generateUrl } from '@nextcloud/router';\nimport { startAuthentication as startWebauthnAuthentication } from '@simplewebauthn/browser';\nimport logger from '../logger.js';\nexport class NoValidCredentials extends Error {\n}\n/**\n * Start webautn authentication\n * This loads the challenge, connects to the authenticator and returns the repose that needs to be sent to the server.\n *\n * @param loginName Name to login\n */\nexport async function startAuthentication(loginName) {\n const url = generateUrl('/login/webauthn/start');\n const { data } = await Axios.post(url, { loginName });\n if (!data.allowCredentials || data.allowCredentials.length === 0) {\n logger.error('No valid credentials returned for webauthn');\n throw new NoValidCredentials();\n }\n return await startWebauthnAuthentication({ optionsJSON: data });\n}\n/**\n * Verify webauthn authentication\n *\n * @param authData The authentication data to sent to the server\n */\nexport async function finishAuthentication(authData) {\n const url = generateUrl('/login/webauthn/finish');\n const { data } = await Axios.post(url, { data: JSON.stringify(authData) });\n return data;\n}\n","\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=script&lang=js\"","import { bufferToBase64URLString } from '../helpers/bufferToBase64URLString.js';\nimport { base64URLStringToBuffer } from '../helpers/base64URLStringToBuffer.js';\nimport { browserSupportsWebAuthn } from '../helpers/browserSupportsWebAuthn.js';\nimport { browserSupportsWebAuthnAutofill } from '../helpers/browserSupportsWebAuthnAutofill.js';\nimport { toPublicKeyCredentialDescriptor } from '../helpers/toPublicKeyCredentialDescriptor.js';\nimport { identifyAuthenticationError } from '../helpers/identifyAuthenticationError.js';\nimport { WebAuthnAbortService } from '../helpers/webAuthnAbortService.js';\nimport { toAuthenticatorAttachment } from '../helpers/toAuthenticatorAttachment.js';\n/**\n * Begin authenticator \"login\" via WebAuthn assertion\n *\n * @param optionsJSON Output from **@simplewebauthn/server**'s `generateAuthenticationOptions()`\n * @param useBrowserAutofill (Optional) Initialize conditional UI to enable logging in via browser autofill prompts. Defaults to `false`.\n * @param verifyBrowserAutofillInput (Optional) Ensure a suitable `` element is present when `useBrowserAutofill` is `true`. Defaults to `true`.\n */\nexport async function startAuthentication(options) {\n // @ts-ignore: Intentionally check for old call structure to warn about improper API call\n if (!options.optionsJSON && options.challenge) {\n console.warn('startAuthentication() was not called correctly. It will try to continue with the provided options, but this call should be refactored to use the expected call structure instead. See https://simplewebauthn.dev/docs/packages/browser#typeerror-cannot-read-properties-of-undefined-reading-challenge for more information.');\n // @ts-ignore: Reassign the options, passed in as a positional argument, to the expected variable\n options = { optionsJSON: options };\n }\n const { optionsJSON, useBrowserAutofill = false, verifyBrowserAutofillInput = true, } = options;\n if (!browserSupportsWebAuthn()) {\n throw new Error('WebAuthn is not supported in this browser');\n }\n // We need to avoid passing empty array to avoid blocking retrieval\n // of public key\n let allowCredentials;\n if (optionsJSON.allowCredentials?.length !== 0) {\n allowCredentials = optionsJSON.allowCredentials?.map(toPublicKeyCredentialDescriptor);\n }\n // We need to convert some values to Uint8Arrays before passing the credentials to the navigator\n const publicKey = {\n ...optionsJSON,\n challenge: base64URLStringToBuffer(optionsJSON.challenge),\n allowCredentials,\n };\n // Prepare options for `.get()`\n const getOptions = {};\n /**\n * Set up the page to prompt the user to select a credential for authentication via the browser's\n * input autofill mechanism.\n */\n if (useBrowserAutofill) {\n if (!(await browserSupportsWebAuthnAutofill())) {\n throw Error('Browser does not support WebAuthn autofill');\n }\n // Check for an with \"webauthn\" in its `autocomplete` attribute\n const eligibleInputs = document.querySelectorAll(\"input[autocomplete$='webauthn']\");\n // WebAuthn autofill requires at least one valid input\n if (eligibleInputs.length < 1 && verifyBrowserAutofillInput) {\n throw Error('No with \"webauthn\" as the only or last value in its `autocomplete` attribute was detected');\n }\n // `CredentialMediationRequirement` doesn't know about \"conditional\" yet as of\n // typescript@4.6.3\n getOptions.mediation = 'conditional';\n // Conditional UI requires an empty allow list\n publicKey.allowCredentials = [];\n }\n // Finalize options\n getOptions.publicKey = publicKey;\n // Set up the ability to cancel this request if the user attempts another\n getOptions.signal = WebAuthnAbortService.createNewAbortSignal();\n // Wait for the user to complete assertion\n let credential;\n try {\n credential = (await navigator.credentials.get(getOptions));\n }\n catch (err) {\n throw identifyAuthenticationError({ error: err, options: getOptions });\n }\n if (!credential) {\n throw new Error('Authentication was not completed');\n }\n const { id, rawId, response, type } = credential;\n let userHandle = undefined;\n if (response.userHandle) {\n userHandle = bufferToBase64URLString(response.userHandle);\n }\n // Convert values to base64 to make it easier to send back to the server\n return {\n id,\n rawId: bufferToBase64URLString(rawId),\n response: {\n authenticatorData: bufferToBase64URLString(response.authenticatorData),\n clientDataJSON: bufferToBase64URLString(response.clientDataJSON),\n signature: bufferToBase64URLString(response.signature),\n userHandle,\n },\n type,\n clientExtensionResults: credential.getClientExtensionResults(),\n authenticatorAttachment: toAuthenticatorAttachment(credential.authenticatorAttachment),\n };\n}\n","import { isValidDomain } from './isValidDomain.js';\nimport { WebAuthnError } from './webAuthnError.js';\n/**\n * Attempt to intuit _why_ an error was raised after calling `navigator.credentials.get()`\n */\nexport function identifyAuthenticationError({ error, options, }) {\n const { publicKey } = options;\n if (!publicKey) {\n throw Error('options was missing required publicKey property');\n }\n if (error.name === 'AbortError') {\n if (options.signal instanceof AbortSignal) {\n // https://www.w3.org/TR/webauthn-2/#sctn-createCredential (Step 16)\n return new WebAuthnError({\n message: 'Authentication ceremony was sent an abort signal',\n code: 'ERROR_CEREMONY_ABORTED',\n cause: error,\n });\n }\n }\n else if (error.name === 'NotAllowedError') {\n /**\n * Pass the error directly through. Platforms are overloading this error beyond what the spec\n * defines and we don't want to overwrite potentially useful error messages.\n */\n return new WebAuthnError({\n message: error.message,\n code: 'ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY',\n cause: error,\n });\n }\n else if (error.name === 'SecurityError') {\n const effectiveDomain = globalThis.location.hostname;\n if (!isValidDomain(effectiveDomain)) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 5)\n return new WebAuthnError({\n message: `${globalThis.location.hostname} is an invalid domain`,\n code: 'ERROR_INVALID_DOMAIN',\n cause: error,\n });\n }\n else if (publicKey.rpId !== effectiveDomain) {\n // https://www.w3.org/TR/webauthn-2/#sctn-discover-from-external-source (Step 6)\n return new WebAuthnError({\n message: `The RP ID \"${publicKey.rpId}\" is invalid for this domain`,\n code: 'ERROR_INVALID_RP_ID',\n cause: error,\n });\n }\n }\n else if (error.name === 'UnknownError') {\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 1)\n // https://www.w3.org/TR/webauthn-2/#sctn-op-get-assertion (Step 12)\n return new WebAuthnError({\n message: 'The authenticator was unable to process the specified options, or could not create a new assertion signature',\n code: 'ERROR_AUTHENTICATOR_GENERAL_ERROR',\n cause: error,\n });\n }\n return error;\n}\n","/**\n * A simple test to determine if a hostname is a properly-formatted domain name\n *\n * A \"valid domain\" is defined here: https://url.spec.whatwg.org/#valid-domain\n *\n * Regex sourced from here:\n * https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch08s15.html\n */\nexport function isValidDomain(hostname) {\n return (\n // Consider localhost valid as well since it's okay wrt Secure Contexts\n hostname === 'localhost' ||\n /^([a-z0-9]+(-[a-z0-9]+)*\\.)+[a-z]{2,}$/i.test(hostname));\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=0b57a680&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PasswordLessLoginForm.vue?vue&type=style&index=0&id=0b57a680&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./PasswordLessLoginForm.vue?vue&type=template&id=0b57a680&scoped=true\"\nimport script from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nexport * from \"./PasswordLessLoginForm.vue?vue&type=script&lang=js\"\nimport style0 from \"./PasswordLessLoginForm.vue?vue&type=style&index=0&id=0b57a680&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0b57a680\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return ((_vm.isHttps || _vm.isLocalhost) && _vm.supportsWebauthn)?_c('form',{ref:\"loginForm\",staticClass:\"password-less-login-form\",attrs:{\"aria-labelledby\":\"password-less-login-form-title\",\"method\":\"post\",\"name\":\"login\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',{attrs:{\"id\":\"password-less-login-form-title\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\")]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"required\":\"\",\"model-value\":_vm.user,\"autocomplete\":_vm.autoCompleteAllowed ? 'on' : 'off',\"error\":!_vm.validCredentials,\"label\":_vm.t('core', 'Login or email'),\"placeholder\":_vm.t('core', 'Login or email'),\"helper-text\":!_vm.validCredentials ? _vm.t('core', 'Your account is not setup for passwordless login.') : ''},on:{\"update:value\":_vm.changeUsername}}),_vm._v(\" \"),(_vm.validCredentials)?_c('LoginButton',{attrs:{\"loading\":_vm.loading},on:{\"click\":_vm.authenticate}}):_vm._e()],1):(!_vm.isHttps && !_vm.isLocalhost)?_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Your connection is not secure'),\"description\":_vm.t('core', 'Passwordless authentication is only available over a secure connection.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('LockOpenIcon')]},proxy:true}])}):_c('NcEmptyContent',{attrs:{\"name\":_vm.t('core', 'Browser not supported'),\"description\":_vm.t('core', 'Passwordless authentication is not supported in your browser.')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('InformationIcon')]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('form',{staticClass:\"reset-password-form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('h2',[_vm._v(_vm._s(_vm.t('core', 'Reset password')))]),_vm._v(\" \"),_c('NcTextField',{attrs:{\"id\":\"user\",\"name\":\"user\",\"maxlength\":255,\"autocapitalize\":\"off\",\"label\":_vm.t('core', 'Login or email'),\"error\":_vm.userNameInputLengthIs255,\"helper-text\":_vm.userInputHelperText,\"required\":\"\"},on:{\"change\":_vm.updateUsername},model:{value:(_vm.user),callback:function ($$v) {_vm.user=$$v},expression:\"user\"}}),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password')}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){return _vm.$emit('abort')}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Back to login'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.message === 'send-success')?_c('NcNoteCard',{attrs:{\"type\":\"success\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'If this account exists, a password reset message has been sent to its email address. If you do not receive it, verify your email address and/or Login, check your spam/junk folders or ask your local administration for help.'))+\"\\n\\t\")]):(_vm.message === 'send-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Couldn\\'t send reset email. Please contact your administrator.'))+\"\\n\\t\")]):(_vm.message === 'reset-error')?_c('NcNoteCard',{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('core', 'Password cannot be changed. Please contact your administrator.'))+\"\\n\\t\")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ResetPassword.vue?vue&type=template&id=759a0fdd&scoped=true\"\nimport script from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nexport * from \"./ResetPassword.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ResetPassword.vue?vue&type=style&index=0&id=759a0fdd&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"759a0fdd\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UpdatePassword.vue?vue&type=template&id=2c0ecaf9&scoped=true\"\nimport script from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nexport * from \"./UpdatePassword.vue?vue&type=script&lang=js\"\nimport style0 from \"./UpdatePassword.vue?vue&type=style&index=0&id=2c0ecaf9&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2c0ecaf9\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.submit.apply(null, arguments)}}},[_c('fieldset',[_c('p',[_c('label',{staticClass:\"infield\",attrs:{\"for\":\"password\"}},[_vm._v(_vm._s(_vm.t('core', 'New password')))]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.password),expression:\"password\"}],attrs:{\"id\":\"password\",\"type\":\"password\",\"name\":\"password\",\"autocomplete\":\"new-password\",\"autocapitalize\":\"none\",\"spellcheck\":\"false\",\"required\":\"\",\"placeholder\":_vm.t('core', 'New password')},domProps:{\"value\":(_vm.password)},on:{\"input\":function($event){if($event.target.composing)return;_vm.password=$event.target.value}}})]),_vm._v(\" \"),(_vm.encrypted)?_c('div',{staticClass:\"update\"},[_c('p',[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Your files are encrypted. There will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.proceed),expression:\"proceed\"}],staticClass:\"checkbox\",attrs:{\"id\":\"encrypted-continue\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.proceed)?_vm._i(_vm.proceed,null)>-1:(_vm.proceed)},on:{\"change\":function($event){var $$a=_vm.proceed,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.proceed=$$a.concat([$$v]))}else{$$i>-1&&(_vm.proceed=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.proceed=$$c}}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":\"encrypted-continue\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'I know what I\\'m doing'))+\"\\n\\t\\t\\t\")])]):_vm._e(),_vm._v(\" \"),_c('LoginButton',{attrs:{\"loading\":_vm.loading,\"value\":_vm.t('core', 'Reset password'),\"value-loading\":_vm.t('core', 'Resetting password')}}),_vm._v(\" \"),(_vm.error && _vm.message)?_c('p',{class:{ warning: _vm.error }},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\\t\")]):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\nimport logger from '../logger.js'\n\n/**\n *\n * @param {string} url the URL to check\n * @return {boolean}\n */\nfunction isRelativeUrl(url) {\n\treturn !url.startsWith('https://') && !url.startsWith('http://')\n}\n\n/**\n * @param {string} url The URL to check\n * @return {boolean} true if the URL points to this nextcloud instance\n */\nfunction isNextcloudUrl(url) {\n\tconst nextcloudBaseUrl = window.location.protocol + '//' + window.location.host + getRootUrl()\n\t// if the URL is absolute and starts with the baseUrl+rootUrl\n\t// OR if the URL is relative and starts with rootUrl\n\treturn url.startsWith(nextcloudBaseUrl)\n\t\t|| (isRelativeUrl(url) && url.startsWith(getRootUrl()))\n}\n\n/**\n * Check if a user was logged in but is now logged-out.\n * If this is the case then the user will be forwarded to the login page.\n *\n * @return {Promise}\n */\nasync function checkLoginStatus() {\n\t// skip if no logged in user\n\tif (getCurrentUser() === null) {\n\t\treturn\n\t}\n\n\t// skip if already running\n\tif (checkLoginStatus.running === true) {\n\t\treturn\n\t}\n\n\t// only run one request in parallel\n\tcheckLoginStatus.running = true\n\n\ttry {\n\t\t// We need to check this as a 401 in the first place could also come from other reasons\n\t\tconst { status } = await window.fetch(generateUrl('/apps/files'))\n\t\tif (status === 401) {\n\t\t\tlogger.warn('User session was terminated, forwarding to login page.')\n\t\t\tawait wipeBrowserStorages()\n\t\t\twindow.location = generateUrl('/login?redirect_url={url}', {\n\t\t\t\turl: window.location.pathname + window.location.search + window.location.hash,\n\t\t\t})\n\t\t}\n\t} catch (error) {\n\t\tlogger.warn('Could not check login-state', { error })\n\t} finally {\n\t\tdelete checkLoginStatus.running\n\t}\n}\n\n/**\n * Clear all Browser storages connected to current origin.\n *\n * @return {Promise}\n */\nexport async function wipeBrowserStorages() {\n\ttry {\n\t\twindow.localStorage.clear()\n\t\twindow.sessionStorage.clear()\n\t\tconst indexedDBList = await window.indexedDB.databases()\n\t\tfor (const indexedDB of indexedDBList) {\n\t\t\tawait window.indexedDB.deleteDatabase(indexedDB.name)\n\t\t}\n\t\tlogger.debug('Browser storages cleared')\n\t} catch (error) {\n\t\tlogger.error('Could not clear browser storages', { error })\n\t}\n}\n\n/**\n * Intercept XMLHttpRequest and fetch API calls to add X-Requested-With header\n *\n * This is also done in @nextcloud/axios but not all requests pass through that\n */\nexport function interceptRequests() {\n\tXMLHttpRequest.prototype.open = (function(open) {\n\t\treturn function(method, url) {\n\t\t\topen.apply(this, arguments)\n\t\t\tif (isNextcloudUrl(url)) {\n\t\t\t\tif (!this.getResponseHeader('X-Requested-With')) {\n\t\t\t\t\tthis.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n\t\t\t\t}\n\t\t\t\tthis.addEventListener('loadend', function() {\n\t\t\t\t\tif (this.status === 401) {\n\t\t\t\t\t\tcheckLoginStatus()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t})(XMLHttpRequest.prototype.open)\n\n\twindow.fetch = (function(fetch) {\n\t\treturn async (resource, options) => {\n\t\t\t// fetch allows the `input` to be either a Request object or any stringifyable value\n\t\t\tif (!isNextcloudUrl(resource.url ?? resource.toString())) {\n\t\t\t\treturn await fetch(resource, options)\n\t\t\t}\n\t\t\tif (!options) {\n\t\t\t\toptions = {}\n\t\t\t}\n\t\t\tif (!options.headers) {\n\t\t\t\toptions.headers = new Headers()\n\t\t\t}\n\n\t\t\tif (options.headers instanceof Headers && !options.headers.has('X-Requested-With')) {\n\t\t\t\toptions.headers.append('X-Requested-With', 'XMLHttpRequest')\n\t\t\t} else if (options.headers instanceof Object && !options.headers['X-Requested-With']) {\n\t\t\t\toptions.headers['X-Requested-With'] = 'XMLHttpRequest'\n\t\t\t}\n\n\t\t\tconst response = await fetch(resource, options)\n\t\t\tif (response.status === 401) {\n\t\t\t\tcheckLoginStatus()\n\t\t\t}\n\t\t\treturn response\n\t\t}\n\t})(window.fetch)\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=518c0816&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=518c0816&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"518c0816\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"guest-box login-box\"},[(!_vm.hideLoginForm || _vm.directLogin)?[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[(!_vm.passwordlessLogin && !_vm.resetPassword && _vm.resetPasswordTarget === '')?_c('div',{staticClass:\"login-box__wrapper\"},[_c('LoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"direct-login\":_vm.directLogin,\"messages\":_vm.messages,\"errors\":_vm.errors,\"throttle-delay\":_vm.throttleDelay,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"rememberme-allowed\":_vm.remembermeAllowed,\"email-states\":_vm.emailStates},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),(_vm.hasPasswordless)?_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.passwordlessLogin = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Log in with a device'))+\"\\n\\t\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.canResetPassword && _vm.resetPasswordLink !== '')?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"href\":_vm.resetPasswordLink,\"variant\":\"tertiary-no-background\",\"wide\":\"\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):(_vm.canResetPassword && !_vm.resetPassword)?_c('NcButton',{attrs:{\"id\":\"lost-password\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){$event.preventDefault();_vm.resetPassword = true}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Forgot password?'))+\"\\n\\t\\t\\t\\t\")]):_vm._e()],1):(!_vm.loading && _vm.passwordlessLogin)?_c('div',{key:\"reset-pw-less\",staticClass:\"login-additional login-box__wrapper\"},[_c('PasswordLessLoginForm',{attrs:{\"username\":_vm.user,\"redirect-url\":_vm.redirectUrl,\"auto-complete-allowed\":_vm.autoCompleteAllowed,\"is-https\":_vm.isHttps,\"is-localhost\":_vm.isLocalhost},on:{\"update:username\":function($event){_vm.user=$event},\"submit\":function($event){_vm.loading = true}}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"variant\":\"tertiary\",\"aria-label\":_vm.t('core', 'Back to login form'),\"wide\":true},on:{\"click\":function($event){_vm.passwordlessLogin = false}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'Back'))+\"\\n\\t\\t\\t\\t\")])],1):(!_vm.loading && _vm.canResetPassword)?_c('div',{key:\"reset-can-reset\",staticClass:\"login-additional\"},[_c('div',{staticClass:\"lost-password-container\"},[(_vm.resetPassword)?_c('ResetPassword',{attrs:{\"username\":_vm.user,\"reset-password-link\":_vm.resetPasswordLink},on:{\"update:username\":function($event){_vm.user=$event},\"abort\":function($event){_vm.resetPassword = false}}}):_vm._e()],1)]):(_vm.resetPasswordTarget !== '')?_c('div',[_c('UpdatePassword',{attrs:{\"username\":_vm.user,\"reset-password-target\":_vm.resetPasswordTarget},on:{\"update:username\":function($event){_vm.user=$event},\"done\":_vm.passwordResetFinished}})],1):_vm._e()])]:[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('NcNoteCard',{attrs:{\"type\":\"info\",\"title\":_vm.t('core', 'Login form is disabled.')}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('core', 'The Nextcloud login form is disabled. Use another login option if available or contact your administration.'))+\"\\n\\t\\t\\t\")])],1)],_vm._v(\" \"),_c('div',{staticClass:\"login-box__alternative-logins\",attrs:{\"id\":\"alternative-logins\"}},_vm._l((_vm.alternativeLogins),function(alternativeLogin,index){return _c('NcButton',{key:index,class:[alternativeLogin.class],attrs:{\"variant\":\"secondary\",\"wide\":true,\"role\":\"link\",\"href\":alternativeLogin.href}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(alternativeLogin.name)+\"\\n\\t\\t\")])}),1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst isAdmin = !!window._oc_isadmin\n\n/**\n * Returns whether the current user is an administrator\n *\n * @return {boolean} true if the user is an admin, false otherwise\n * @since 9.0.0\n */\nexport const isUserAdmin = () => isAdmin\n","/*!\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @deprecated 16.0.0 Use OCP.AppConfig instead\n */\nexport const appConfig = window.oc_appconfig || {}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\nlet dynamicSlideToggleEnabled = false\n\nconst Apps = {\n\tenableDynamicSlideToggle() {\n\t\tdynamicSlideToggleEnabled = true\n\t},\n}\n\n/**\n * Shows the #app-sidebar and add .with-app-sidebar to subsequent siblings\n *\n * @param {object} [$el] sidebar element to show, defaults to $('#app-sidebar')\n */\nApps.showAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.removeClass('disappear').show()\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Shows the #app-sidebar and removes .with-app-sidebar from subsequent\n * siblings\n *\n * @param {object} [$el] sidebar element to hide, defaults to $('#app-sidebar')\n */\nApps.hideAppSidebar = function($el) {\n\tconst $appSidebar = $el || $('#app-sidebar')\n\t$appSidebar.hide().addClass('disappear')\n\t$('#app-content').trigger(new $.Event('appresized'))\n}\n\n/**\n * Provides a way to slide down a target area through a button and slide it\n * up if the user clicks somewhere else. Used for the news app settings and\n * add new field.\n *\n * Usage:\n * \n *
I'm sliding up
\n */\nexport function registerAppsSlideToggle() {\n\tlet buttons = $('[data-apps-slide-toggle]')\n\n\tif (buttons.length === 0) {\n\t\t$('#app-navigation').addClass('without-app-settings')\n\t}\n\n\t$(document).click(function(event) {\n\t\tif (dynamicSlideToggleEnabled) {\n\t\t\tbuttons = $('[data-apps-slide-toggle]')\n\t\t}\n\n\t\tbuttons.each(function(index, button) {\n\t\t\tconst areaSelector = $(button).data('apps-slide-toggle')\n\t\t\tconst area = $(areaSelector)\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction hideArea() {\n\t\t\t\tarea.slideUp(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('hide'))\n\t\t\t\t})\n\t\t\t\tarea.removeClass('opened')\n\t\t\t\t$(button).removeClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'false')\n\t\t\t}\n\n\t\t\t/**\n\t\t\t *\n\t\t\t */\n\t\t\tfunction showArea() {\n\t\t\t\tarea.slideDown(OC.menuSpeed * 4, function() {\n\t\t\t\t\tarea.trigger(new $.Event('show'))\n\t\t\t\t})\n\t\t\t\tarea.addClass('opened')\n\t\t\t\t$(button).addClass('opened')\n\t\t\t\t$(button).attr('aria-expanded', 'true')\n\t\t\t\tconst input = $(areaSelector + ' [autofocus]')\n\t\t\t\tif (input.length === 1) {\n\t\t\t\t\tinput.focus()\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do nothing if the area is animated\n\t\t\tif (!area.is(':animated')) {\n\t\t\t\t// button toggles the area\n\t\t\t\tif ($(button).is($(event.target).closest('[data-apps-slide-toggle]'))) {\n\t\t\t\t\tif (area.is(':visible')) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t} else {\n\t\t\t\t\t\tshowArea()\n\t\t\t\t\t}\n\n\t\t\t\t\t// all other areas that have not been clicked but are open\n\t\t\t\t\t// should be slid up\n\t\t\t\t} else {\n\t\t\t\t\tconst closest = $(event.target).closest(areaSelector)\n\t\t\t\t\tif (area.is(':visible') && closest[0] !== area[0]) {\n\t\t\t\t\t\thideArea()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t})\n}\n\nexport default Apps\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst appswebroots = (window._oc_appswebroots !== undefined) ? window._oc_appswebroots : false\n\nexport default appswebroots\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { dav } from 'davclient.js'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\nconst methodMap = {\n\tcreate: 'POST',\n\tupdate: 'PROPPATCH',\n\tpatch: 'PROPPATCH',\n\tdelete: 'DELETE',\n\tread: 'PROPFIND',\n}\n\n/**\n * Throw an error when a URL is needed, and none is supplied.\n */\nfunction urlError() {\n\tthrow new Error('A \"url\" property or function must be specified')\n}\n\n/**\n * Convert a single propfind result to JSON\n *\n * @param {object} result\n * @param {object} davProperties properties mapping\n */\nfunction parsePropFindResult(result, davProperties) {\n\tif (_.isArray(result)) {\n\t\treturn _.map(result, function(subResult) {\n\t\t\treturn parsePropFindResult(subResult, davProperties)\n\t\t})\n\t}\n\tconst props = {\n\t\thref: result.href,\n\t}\n\n\t_.each(result.propStat, function(propStat) {\n\t\tif (propStat.status !== 'HTTP/1.1 200 OK') {\n\t\t\treturn\n\t\t}\n\n\t\tfor (const key in propStat.properties) {\n\t\t\tlet propKey = key\n\t\t\tif (key in davProperties) {\n\t\t\t\tpropKey = davProperties[key]\n\t\t\t}\n\t\t\tprops[propKey] = propStat.properties[key]\n\t\t}\n\t})\n\n\tif (!props.id) {\n\t\t// parse id from href\n\t\tprops.id = parseIdFromLocation(props.href)\n\t}\n\n\treturn props\n}\n\n/**\n * Parse ID from location\n *\n * @param {string} url url\n * @return {string} id\n */\nfunction parseIdFromLocation(url) {\n\tconst queryPos = url.indexOf('?')\n\tif (queryPos > 0) {\n\t\turl = url.substr(0, queryPos)\n\t}\n\n\tconst parts = url.split('/')\n\tlet result\n\tdo {\n\t\tresult = parts[parts.length - 1]\n\t\tparts.pop()\n\t\t// note: first result can be empty when there is a trailing slash,\n\t\t// so we take the part before that\n\t} while (!result && parts.length > 0)\n\n\treturn result\n}\n\n/**\n *\n * @param {number} status\n */\nfunction isSuccessStatus(status) {\n\treturn status >= 200 && status <= 299\n}\n\n/**\n *\n * @param attrs\n * @param davProperties\n */\nfunction convertModelAttributesToDavProperties(attrs, davProperties) {\n\tconst props = {}\n\tlet key\n\tfor (key in attrs) {\n\t\tlet changedProp = davProperties[key]\n\t\tlet value = attrs[key]\n\t\tif (!changedProp) {\n\t\t\tlogger.warn('No matching DAV property for property \"' + key)\n\t\t\tchangedProp = key\n\t\t}\n\t\tif (_.isBoolean(value) || _.isNumber(value)) {\n\t\t\t// convert to string\n\t\t\tvalue = '' + value\n\t\t}\n\t\tprops[changedProp] = value\n\t}\n\treturn props\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callPropFind(client, options, model, headers) {\n\treturn client.propFind(\n\t\toptions.url,\n\t\t_.values(options.davProperties) || [],\n\t\toptions.depth,\n\t\theaders,\n\t).then(function(response) {\n\t\tif (isSuccessStatus(response.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\tconst propsMapping = _.invert(options.davProperties)\n\t\t\t\tconst results = parsePropFindResult(response.body, propsMapping)\n\t\t\t\tif (options.depth > 0) {\n\t\t\t\t\t// discard root entry\n\t\t\t\t\tresults.shift()\n\t\t\t\t}\n\n\t\t\t\toptions.success(results)\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(response)\n\t\t}\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callPropPatch(client, options, model, headers) {\n\treturn client.propPatch(\n\t\toptions.url,\n\t\tconvertModelAttributesToDavProperties(model.changed, options.davProperties),\n\t\theaders,\n\t).then(function(result) {\n\t\tif (isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.success)) {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return the updated model\n\t\t\t\toptions.success(model.toJSON())\n\t\t\t}\n\t\t} else if (_.isFunction(options.error)) {\n\t\t\toptions.error(result)\n\t\t}\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callMkCol(client, options, model, headers) {\n\t// call MKCOL without data, followed by PROPPATCH\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\tnull,\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tcallPropPatch(client, options, model, headers)\n\t})\n}\n\n/**\n *\n * @param client\n * @param options\n * @param model\n * @param headers\n */\nfunction callMethod(client, options, model, headers) {\n\theaders['Content-Type'] = 'application/json'\n\treturn client.request(\n\t\toptions.type,\n\t\toptions.url,\n\t\theaders,\n\t\toptions.data,\n\t).then(function(result) {\n\t\tif (!isSuccessStatus(result.status)) {\n\t\t\tif (_.isFunction(options.error)) {\n\t\t\t\toptions.error(result)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif (_.isFunction(options.success)) {\n\t\t\tif (options.type === 'PUT' || options.type === 'POST' || options.type === 'MKCOL') {\n\t\t\t\t// pass the object's own values because the server\n\t\t\t\t// does not return anything\n\t\t\t\tconst responseJson = result.body || model.toJSON()\n\t\t\t\tconst locationHeader = result.xhr.getResponseHeader('Content-Location')\n\t\t\t\tif (options.type === 'POST' && locationHeader) {\n\t\t\t\t\tresponseJson.id = parseIdFromLocation(locationHeader)\n\t\t\t\t}\n\t\t\t\toptions.success(responseJson)\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// if multi-status, parse\n\t\t\tif (result.status === 207) {\n\t\t\t\tconst propsMapping = _.invert(options.davProperties)\n\t\t\t\toptions.success(parsePropFindResult(result.body, propsMapping))\n\t\t\t} else {\n\t\t\t\toptions.success(result.body)\n\t\t\t}\n\t\t}\n\t})\n}\n\n/**\n *\n * @param options\n * @param model\n */\nexport function davCall(options, model) {\n\tconst client = new dav.Client({\n\t\tbaseUrl: options.url,\n\t\txmlNamespaces: _.extend({\n\t\t\t'DAV:': 'd',\n\t\t\t'http://owncloud.org/ns': 'oc',\n\t\t}, options.xmlNamespaces || {}),\n\t})\n\tclient.resolveUrl = function() {\n\t\treturn options.url\n\t}\n\tconst headers = _.extend({\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\trequesttoken: OC.requestToken,\n\t}, options.headers)\n\tif (options.type === 'PROPFIND') {\n\t\treturn callPropFind(client, options, model, headers)\n\t} else if (options.type === 'PROPPATCH') {\n\t\treturn callPropPatch(client, options, model, headers)\n\t} else if (options.type === 'MKCOL') {\n\t\treturn callMkCol(client, options, model, headers)\n\t} else {\n\t\treturn callMethod(client, options, model, headers)\n\t}\n}\n\n/**\n * DAV transport\n *\n * @param Backbone\n */\nexport function davSync(Backbone) {\n\treturn (method, model, options) => {\n\t\tconst params = { type: methodMap[method] || method }\n\t\tconst isCollection = (model instanceof Backbone.Collection)\n\n\t\tif (method === 'update') {\n\t\t// if a model has an inner collection, it must define an\n\t\t// attribute \"hasInnerCollection\" that evaluates to true\n\t\t\tif (model.hasInnerCollection) {\n\t\t\t// if the model itself is a Webdav collection, use MKCOL\n\t\t\t\tparams.type = 'MKCOL'\n\t\t\t} else if (model.usePUT || (model.collection && model.collection.usePUT)) {\n\t\t\t// use PUT instead of PROPPATCH\n\t\t\t\tparams.type = 'PUT'\n\t\t\t}\n\t\t}\n\n\t\t// Ensure that we have a URL.\n\t\tif (!options.url) {\n\t\t\tparams.url = _.result(model, 'url') || urlError()\n\t\t}\n\n\t\t// Ensure that we have the appropriate request data.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n\t\t\tparams.data = JSON.stringify(options.attrs || model.toJSON(options))\n\t\t}\n\n\t\t// Don't process data on a non-GET request.\n\t\tif (params.type !== 'PROPFIND') {\n\t\t\tparams.processData = false\n\t\t}\n\n\t\tif (params.type === 'PROPFIND' || params.type === 'PROPPATCH') {\n\t\t\tlet davProperties = model.davProperties\n\t\t\tif (!davProperties && model.model) {\n\t\t\t// use dav properties from model in case of collection\n\t\t\t\tdavProperties = model.model.prototype.davProperties\n\t\t\t}\n\t\t\tif (davProperties) {\n\t\t\t\tif (_.isFunction(davProperties)) {\n\t\t\t\t\tparams.davProperties = davProperties.call(model)\n\t\t\t\t} else {\n\t\t\t\t\tparams.davProperties = davProperties\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tparams.davProperties = _.extend(params.davProperties || {}, options.davProperties)\n\n\t\t\tif (_.isUndefined(options.depth)) {\n\t\t\t\tif (isCollection) {\n\t\t\t\t\toptions.depth = 1\n\t\t\t\t} else {\n\t\t\t\t\toptions.depth = 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Pass along `textStatus` and `errorThrown` from jQuery.\n\t\tconst error = options.error\n\t\toptions.error = function(xhr, textStatus, errorThrown) {\n\t\t\toptions.textStatus = textStatus\n\t\t\toptions.errorThrown = errorThrown\n\t\t\tif (error) {\n\t\t\t\terror.call(options.context, xhr, textStatus, errorThrown)\n\t\t\t}\n\t\t}\n\n\t\t// Make the request, allowing the user to override any Ajax options.\n\t\tconst xhr = options.xhr = Backbone.davCall(_.extend(params, options), model)\n\t\tmodel.trigger('request', model, xhr, options)\n\t\treturn xhr\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport VendorBackbone from 'backbone'\nimport { davCall, davSync } from './backbone-webdav.js'\n\nconst Backbone = VendorBackbone.noConflict()\n\n// Patch Backbone for DAV\nObject.assign(Backbone, {\n\tdavCall,\n\tdavSync: davSync(Backbone),\n})\n\nexport default Backbone\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst config = window._oc_config || {}\n\nexport default config\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\n/**\n *\n */\nexport function getCurrentUser() {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst base = window._oc_debug\n\nexport const debug = base\n","/**\n * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport IconMove from '@mdi/svg/svg/folder-move.svg?raw'\nimport IconCopy from '@mdi/svg/svg/folder-multiple-outline.svg?raw'\nimport { DialogBuilder, FilePickerType, getFilePickerBuilder } from '@nextcloud/dialogs'\nimport { t } from '@nextcloud/l10n'\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog'\nimport $ from 'jquery'\nimport { basename } from 'path'\nimport { defineAsyncComponent } from 'vue'\nimport logger from '../logger.js'\nimport OC from './index.js'\n\n/**\n * this class to ease the usage of jquery dialogs\n */\nconst Dialogs = {\n\t// dialog button types\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tYES_NO_BUTTONS: 70,\n\t/** @deprecated use `@nextcloud/dialogs` */\n\tOK_BUTTONS: 71,\n\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CHOOSE: 1,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_MOVE: 2,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY: 3,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_COPY_MOVE: 4,\n\t/** @deprecated use FilePickerType from `@nextcloud/dialogs` */\n\tFILEPICKER_TYPE_CUSTOM: 5,\n\n\t/**\n\t * displays alert dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\talert: function(text, title, callback, modal) {\n\t\tthis.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'alert',\n\t\t\tDialogs.OK_BUTTON,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\n\t/**\n\t * displays info dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK\n\t * @param {boolean} [modal] make the dialog modal\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tinfo: function(text, title, callback, modal) {\n\t\tthis.message(text, title, 'info', Dialogs.OK_BUTTON, callback, modal)\n\t},\n\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirm: function(text, title, callback, modal) {\n\t\treturn this.message(\n\t\t\ttext,\n\t\t\ttitle,\n\t\t\t'notice',\n\t\t\tDialogs.YES_NO_BUTTONS,\n\t\t\tcallback,\n\t\t\tmodal,\n\t\t)\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {(number|{type: number, confirm: string, cancel: string, confirmClasses: string})} buttons text content of buttons\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmDestructive: function(text, title, buttons = Dialogs.OK_BUTTONS, callback = () => {}) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(text)\n\t\t\t.setButtons(buttons === Dialogs.OK_BUTTONS\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\t\t\tvariant: 'error',\n\t\t\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: Dialogs._getLegacyButtons(buttons, callback))\n\t\t\t.build()\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays confirmation dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @return {Promise}\n\t *\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tconfirmHtml: function(text, title, callback) {\n\t\treturn (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText('')\n\t\t\t.setButtons([\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'No'),\n\t\t\t\t\tcallback: () => {},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback.clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t])\n\t\t\t.build()\n\t\t\t.setHTML(text)\n\t\t\t.show()\n\t\t\t.then(() => {\n\t\t\t\tif (!callback.clicked) {\n\t\t\t\t\tcallback(false)\n\t\t\t\t}\n\t\t\t})\n\t},\n\t/**\n\t * displays prompt dialog\n\t *\n\t * @param {string} text content of dialog\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses OK (true or false would be passed to callback respectively)\n\t * @param {boolean} [modal] make the dialog modal\n\t * @param {string} name name of the input field\n\t * @param {boolean} password whether the input should be a password input\n\t * @return {Promise}\n\t *\n\t * @deprecated Use NcDialog from `@nextcloud/vue` instead\n\t */\n\tprompt: function(text, title, callback, modal, name, password) {\n\t\treturn new Promise((resolve) => {\n\t\t\tspawnDialog(\n\t\t\t\tdefineAsyncComponent(() => import('../components/LegacyDialogPrompt.vue')),\n\t\t\t\t{\n\t\t\t\t\ttext,\n\t\t\t\t\tname: title,\n\t\t\t\t\tcallback,\n\t\t\t\t\tinputName: name,\n\t\t\t\t\tisPassword: !!password,\n\t\t\t\t},\n\t\t\t\t(...args) => {\n\t\t\t\t\tcallback(...args)\n\t\t\t\t\tresolve()\n\t\t\t\t},\n\t\t\t)\n\t\t})\n\t},\n\n\t/**\n\t * Legacy wrapper to the new Vue based filepicker from `@nextcloud/dialogs`\n\t *\n\t * Prefer to use the Vue filepicker directly instead.\n\t *\n\t * In order to pick several types of mime types they need to be passed as an\n\t * array of strings.\n\t *\n\t * When no mime type filter is given only files can be selected. In order to\n\t * be able to select both files and folders \"['*', 'httpd/unix-directory']\"\n\t * should be used instead.\n\t *\n\t * @param {string} title dialog title\n\t * @param {Function} callback which will be triggered when user presses Choose\n\t * @param {boolean} [multiselect] whether it should be possible to select multiple files\n\t * @param {string[]} [mimetype] mimetype to filter by - directories will always be included\n\t * @param {boolean} [_modal] do not use\n\t * @param {string} [type] Type of file picker : Choose, copy, move, copy and move\n\t * @param {string} [path] path to the folder that the the file can be picket from\n\t * @param {object} [options] additonal options that need to be set\n\t * @param {Function} [options.filter] filter function for advanced filtering\n\t * @param {boolean} [options.allowDirectoryChooser] Allow to select directories\n\t * @deprecated since 27.1.0 use the filepicker from `@nextcloud/dialogs` instead\n\t */\n\t// eslint-disable-next-line no-unused-vars\n\tfilepicker(title, callback, multiselect = false, mimetype = undefined, _modal = undefined, type = FilePickerType.Choose, path = undefined, options = undefined) {\n\t\t/**\n\t\t * Create legacy callback wrapper to support old filepicker syntax\n\t\t *\n\t\t * @param fn The original callback\n\t\t * @param type The file picker type which was used to pick the file(s)\n\t\t */\n\t\tconst legacyCallback = (fn, type) => {\n\t\t\tconst getPath = (node) => {\n\t\t\t\tconst root = node?.root || ''\n\t\t\t\tlet path = node?.path || ''\n\t\t\t\t// TODO: Fix this in @nextcloud/files\n\t\t\t\tif (path.startsWith(root)) {\n\t\t\t\t\tpath = path.slice(root.length) || '/'\n\t\t\t\t}\n\t\t\t\treturn path\n\t\t\t}\n\n\t\t\tif (multiselect) {\n\t\t\t\treturn (nodes) => fn(nodes.map(getPath), type)\n\t\t\t} else {\n\t\t\t\treturn (nodes) => fn(getPath(nodes[0]), type)\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Coverting a Node into a legacy file info to support the OC.dialogs.filepicker filter function\n\t\t *\n\t\t * @param node The node to convert\n\t\t */\n\t\tconst nodeToLegacyFile = (node) => ({\n\t\t\tid: node.fileid || null,\n\t\t\tpath: node.path,\n\t\t\tmimetype: node.mime || null,\n\t\t\tmtime: node.mtime?.getTime() || null,\n\t\t\tpermissions: node.permissions,\n\t\t\tname: node.attributes?.displayName || node.basename,\n\t\t\tetag: node.attributes?.etag || null,\n\t\t\thasPreview: node.attributes?.hasPreview || null,\n\t\t\tmountType: node.attributes?.mountType || null,\n\t\t\tquotaAvailableBytes: node.attributes?.quotaAvailableBytes || null,\n\t\t\ticon: null,\n\t\t\tsharePermissions: null,\n\t\t})\n\n\t\tconst builder = getFilePickerBuilder(title)\n\n\t\t// Setup buttons\n\t\tif (type === this.FILEPICKER_TYPE_CUSTOM) {\n\t\t\t(options.buttons || []).forEach((button) => {\n\t\t\t\tbuilder.addButton({\n\t\t\t\t\tcallback: legacyCallback(callback, button.type),\n\t\t\t\t\tlabel: button.text,\n\t\t\t\t\tvariant: button.defaultButton ? 'primary' : 'secondary',\n\t\t\t\t})\n\t\t\t})\n\t\t} else {\n\t\t\tbuilder.setButtonFactory((nodes, path) => {\n\t\t\t\tconst buttons = []\n\t\t\t\tconst [node] = nodes\n\t\t\t\tconst target = node?.displayname || node?.basename || basename(path)\n\n\t\t\t\tif (type === FilePickerType.Choose) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Choose),\n\t\t\t\t\t\tlabel: node && !this.multiSelect ? t('core', 'Choose {file}', { file: target }) : t('core', 'Choose'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.CopyMove || type === FilePickerType.Copy) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Copy),\n\t\t\t\t\t\tlabel: target ? t('core', 'Copy to {target}', { target }) : t('core', 'Copy'),\n\t\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\t\ticon: IconCopy,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (type === FilePickerType.Move || type === FilePickerType.CopyMove) {\n\t\t\t\t\tbuttons.push({\n\t\t\t\t\t\tcallback: legacyCallback(callback, FilePickerType.Move),\n\t\t\t\t\t\tlabel: target ? t('core', 'Move to {target}', { target }) : t('core', 'Move'),\n\t\t\t\t\t\tvariant: type === FilePickerType.Move ? 'primary' : 'secondary',\n\t\t\t\t\t\ticon: IconMove,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn buttons\n\t\t\t})\n\t\t}\n\n\t\tif (mimetype) {\n\t\t\tbuilder.setMimeTypeFilter(typeof mimetype === 'string' ? [mimetype] : (mimetype || []))\n\t\t}\n\t\tif (typeof options?.filter === 'function') {\n\t\t\tbuilder.setFilter((node) => options.filter(nodeToLegacyFile(node)))\n\t\t}\n\t\tbuilder.allowDirectories(options?.allowDirectoryChooser === true || mimetype?.includes('httpd/unix-directory') || false)\n\t\t\t.setMultiSelect(multiselect)\n\t\t\t.startAt(path)\n\t\t\t.build()\n\t\t\t.pick()\n\t},\n\n\t/**\n\t * Displays raw dialog\n\t * You better use a wrapper instead ...\n\t *\n\t * @param content\n\t * @param title\n\t * @param dialogType\n\t * @param buttons\n\t * @param callback\n\t * @param modal\n\t * @param allowHtml\n\t * @deprecated 30.0.0 Use `@nextcloud/dialogs` instead or build your own with `@nextcloud/vue` NcDialog\n\t */\n\tmessage: function(content, title, dialogType, buttons, callback = () => {}, modal, allowHtml) {\n\t\tconst builder = (new DialogBuilder())\n\t\t\t.setName(title)\n\t\t\t.setText(allowHtml ? '' : content)\n\t\t\t.setButtons(Dialogs._getLegacyButtons(buttons, callback))\n\n\t\tswitch (dialogType) {\n\t\t\tcase 'alert':\n\t\t\t\tbuilder.setSeverity('warning')\n\t\t\t\tbreak\n\t\t\tcase 'notice':\n\t\t\t\tbuilder.setSeverity('info')\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t}\n\n\t\tconst dialog = builder.build()\n\n\t\tif (allowHtml) {\n\t\t\tdialog.setHTML(content)\n\t\t}\n\n\t\treturn dialog.show().then(() => {\n\t\t\tif (!callback._clicked) {\n\t\t\t\tcallback(false)\n\t\t\t}\n\t\t})\n\t},\n\n\t/**\n\t * Helper for legacy API\n\t *\n\t * @param buttons\n\t * @param callback\n\t * @deprecated\n\t */\n\t_getLegacyButtons(buttons, callback) {\n\t\tconst buttonList = []\n\n\t\tswitch (typeof buttons === 'object' ? buttons.type : buttons) {\n\t\t\tcase Dialogs.YES_NO_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.cancel ?? t('core', 'No'),\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(false)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'Yes'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tcase Dialogs.OK_BUTTONS:\n\t\t\t\tbuttonList.push({\n\t\t\t\t\tlabel: buttons?.confirm ?? t('core', 'OK'),\n\t\t\t\t\tvariant: 'primary',\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tcallback._clicked = true\n\t\t\t\t\t\tcallback(true)\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tlogger.error('Invalid call to OC.dialogs')\n\t\t\t\tbreak\n\t\t}\n\t\treturn buttonList\n\t},\n\n\t_fileexistsshown: false,\n\t/**\n\t * Displays file exists dialog\n\t *\n\t * @param {object} data upload object\n\t * @param {object} original file with name, size and mtime\n\t * @param {object} replacement file with name, size and mtime\n\t * @param {object} controller with onCancel, onSkip, onReplace and onRename methods\n\t * @return {Promise} jquery promise that resolves after the dialog template was loaded\n\t *\n\t * @deprecated 29.0.0 Use openConflictPicker from the @nextcloud/upload package instead\n\t */\n\tfileexists: function(data, original, replacement, controller) {\n\t\tconst self = this\n\t\tconst dialogDeferred = new $.Deferred()\n\n\t\tconst getCroppedPreview = function(file) {\n\t\t\tconst deferred = new $.Deferred()\n\t\t\t// Only process image files.\n\t\t\tconst type = file.type && file.type.split('/').shift()\n\t\t\tif (window.FileReader && type === 'image') {\n\t\t\t\tconst reader = new FileReader()\n\t\t\t\treader.onload = function(e) {\n\t\t\t\t\tconst blob = new Blob([e.target.result])\n\t\t\t\t\twindow.URL = window.URL || window.webkitURL\n\t\t\t\t\tconst originalUrl = window.URL.createObjectURL(blob)\n\t\t\t\t\tconst image = new Image()\n\t\t\t\t\timage.src = originalUrl\n\t\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tconst url = crop(image)\n\t\t\t\t\t\tdeferred.resolve(url)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treader.readAsArrayBuffer(file)\n\t\t\t} else {\n\t\t\t\tdeferred.reject()\n\t\t\t}\n\t\t\treturn deferred\n\t\t}\n\n\t\t/**\n\t\t * @param img\n\t\t */\n\t\tfunction crop(img) {\n\t\t\tconst canvas = document.createElement('canvas')\n\t\t\tconst targetSize = 96\n\t\t\tconst width = img.width\n\t\t\tconst height = img.height\n\t\t\tlet x\n\t\t\tlet y\n\n\t\t\t// Calculate the width and height, constraining the proportions\n\t\t\tif (width > height) {\n\t\t\t\ty = 0\n\t\t\t\tx = (width - height) / 2\n\t\t\t} else {\n\t\t\t\ty = (height - width) / 2\n\t\t\t\tx = 0\n\t\t\t}\n\t\t\tconst size = Math.min(width, height)\n\n\t\t\t// Set canvas size to the cropped area\n\t\t\tcanvas.width = size\n\t\t\tcanvas.height = size\n\t\t\tconst ctx = canvas.getContext('2d')\n\t\t\tctx.drawImage(img, x, y, size, size, 0, 0, size, size)\n\n\t\t\t// Resize the canvas to match the destination (right size uses 96px)\n\t\t\tresampleHermite(canvas, size, size, targetSize, targetSize)\n\n\t\t\treturn canvas.toDataURL('image/png', 0.7)\n\t\t}\n\n\t\t/**\n\t\t * Fast image resize/resample using Hermite filter with JavaScript.\n\t\t *\n\t\t * @author ViliusL\n\t\t *\n\t\t * @param {*} canvas\n\t\t * @param {number} W\n\t\t * @param {number} H\n\t\t * @param {number} W2\n\t\t * @param {number} H2\n\t\t */\n\t\tfunction resampleHermite(canvas, W, H, W2, H2) {\n\t\t\tW2 = Math.round(W2)\n\t\t\tH2 = Math.round(H2)\n\t\t\tconst img = canvas.getContext('2d').getImageData(0, 0, W, H)\n\t\t\tconst img2 = canvas.getContext('2d').getImageData(0, 0, W2, H2)\n\t\t\tconst data = img.data\n\t\t\tconst data2 = img2.data\n\t\t\tconst ratio_w = W / W2\n\t\t\tconst ratio_h = H / H2\n\t\t\tconst ratio_w_half = Math.ceil(ratio_w / 2)\n\t\t\tconst ratio_h_half = Math.ceil(ratio_h / 2)\n\n\t\t\tfor (let j = 0; j < H2; j++) {\n\t\t\t\tfor (let i = 0; i < W2; i++) {\n\t\t\t\t\tconst x2 = (i + j * W2) * 4\n\t\t\t\t\tlet weight = 0\n\t\t\t\t\tlet weights = 0\n\t\t\t\t\tlet weights_alpha = 0\n\t\t\t\t\tlet gx_r = 0\n\t\t\t\t\tlet gx_g = 0\n\t\t\t\t\tlet gx_b = 0\n\t\t\t\t\tlet gx_a = 0\n\t\t\t\t\tconst center_y = (j + 0.5) * ratio_h\n\t\t\t\t\tfor (let yy = Math.floor(j * ratio_h); yy < (j + 1) * ratio_h; yy++) {\n\t\t\t\t\t\tconst dy = Math.abs(center_y - (yy + 0.5)) / ratio_h_half\n\t\t\t\t\t\tconst center_x = (i + 0.5) * ratio_w\n\t\t\t\t\t\tconst w0 = dy * dy // pre-calc part of w\n\t\t\t\t\t\tfor (let xx = Math.floor(i * ratio_w); xx < (i + 1) * ratio_w; xx++) {\n\t\t\t\t\t\t\tlet dx = Math.abs(center_x - (xx + 0.5)) / ratio_w_half\n\t\t\t\t\t\t\tconst w = Math.sqrt(w0 + dx * dx)\n\t\t\t\t\t\t\tif (w >= -1 && w <= 1) {\n\t\t\t\t\t\t\t\t// hermite filter\n\t\t\t\t\t\t\t\tweight = 2 * w * w * w - 3 * w * w + 1\n\t\t\t\t\t\t\t\tif (weight > 0) {\n\t\t\t\t\t\t\t\t\tdx = 4 * (xx + yy * W)\n\t\t\t\t\t\t\t\t\t// alpha\n\t\t\t\t\t\t\t\t\tgx_a += weight * data[dx + 3]\n\t\t\t\t\t\t\t\t\tweights_alpha += weight\n\t\t\t\t\t\t\t\t\t// colors\n\t\t\t\t\t\t\t\t\tif (data[dx + 3] < 255) {\n\t\t\t\t\t\t\t\t\t\tweight = weight * data[dx + 3] / 250\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tgx_r += weight * data[dx]\n\t\t\t\t\t\t\t\t\tgx_g += weight * data[dx + 1]\n\t\t\t\t\t\t\t\t\tgx_b += weight * data[dx + 2]\n\t\t\t\t\t\t\t\t\tweights += weight\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata2[x2] = gx_r / weights\n\t\t\t\t\tdata2[x2 + 1] = gx_g / weights\n\t\t\t\t\tdata2[x2 + 2] = gx_b / weights\n\t\t\t\t\tdata2[x2 + 3] = gx_a / weights_alpha\n\t\t\t\t}\n\t\t\t}\n\t\t\tcanvas.getContext('2d').clearRect(0, 0, Math.max(W, W2), Math.max(H, H2))\n\t\t\tcanvas.width = W2\n\t\t\tcanvas.height = H2\n\t\t\tcanvas.getContext('2d').putImageData(img2, 0, 0)\n\t\t}\n\n\t\tconst addConflict = function($conflicts, original, replacement) {\n\t\t\tconst $conflict = $conflicts.find('.template').clone().removeClass('template').addClass('conflict')\n\t\t\tconst $originalDiv = $conflict.find('.original')\n\t\t\tconst $replacementDiv = $conflict.find('.replacement')\n\n\t\t\t$conflict.data('data', data)\n\n\t\t\t$conflict.find('.filename').text(original.name)\n\t\t\t$originalDiv.find('.size').text(OC.Util.humanFileSize(original.size))\n\t\t\t$originalDiv.find('.mtime').text(OC.Util.formatDate(original.mtime))\n\t\t\t// ie sucks\n\t\t\tif (replacement.size && replacement.lastModified) {\n\t\t\t\t$replacementDiv.find('.size').text(OC.Util.humanFileSize(replacement.size))\n\t\t\t\t$replacementDiv.find('.mtime').text(OC.Util.formatDate(replacement.lastModified))\n\t\t\t}\n\t\t\tlet path = original.directory + '/' + original.name\n\t\t\tconst urlSpec = {\n\t\t\t\tfile: path,\n\t\t\t\tx: 96,\n\t\t\t\ty: 96,\n\t\t\t\tc: original.etag,\n\t\t\t\tforceIcon: 0,\n\t\t\t}\n\t\t\tlet previewpath = Files.generatePreviewUrl(urlSpec)\n\t\t\t// Escaping single quotes\n\t\t\tpreviewpath = previewpath.replace(/'/g, '%27')\n\t\t\t$originalDiv.find('.icon').css({ 'background-image': \"url('\" + previewpath + \"')\" })\n\t\t\tgetCroppedPreview(replacement).then(function(path) {\n\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t}, function() {\n\t\t\t\tpath = OC.MimeType.getIconUrl(replacement.type)\n\t\t\t\t$replacementDiv.find('.icon').css('background-image', 'url(' + path + ')')\n\t\t\t})\n\t\t\t// connect checkboxes with labels\n\t\t\tconst checkboxId = $conflicts.find('.conflict').length\n\t\t\t$originalDiv.find('input:checkbox').attr('id', 'checkbox_original_' + checkboxId)\n\t\t\t$replacementDiv.find('input:checkbox').attr('id', 'checkbox_replacement_' + checkboxId)\n\n\t\t\t$conflicts.append($conflict)\n\n\t\t\t// set more recent mtime bold\n\t\t\t// ie sucks\n\t\t\tif (replacement.lastModified > original.mtime) {\n\t\t\t\t$replacementDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else if (replacement.lastModified < original.mtime) {\n\t\t\t\t$originalDiv.find('.mtime').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same mtime collection?\n\t\t\t}\n\n\t\t\t// set bigger size bold\n\t\t\tif (replacement.size && replacement.size > original.size) {\n\t\t\t\t$replacementDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else if (replacement.size && replacement.size < original.size) {\n\t\t\t\t$originalDiv.find('.size').css('font-weight', 'bold')\n\t\t\t} else {\n\t\t\t\t// TODO add to same size collection?\n\t\t\t}\n\n\t\t\t// TODO show skip action for files with same size and mtime in bottom row\n\n\t\t\t// always keep readonly files\n\n\t\t\tif (original.status === 'readonly') {\n\t\t\t\t$originalDiv\n\t\t\t\t\t.addClass('readonly')\n\t\t\t\t\t.find('input[type=\"checkbox\"]')\n\t\t\t\t\t.prop('checked', true)\n\t\t\t\t\t.prop('disabled', true)\n\t\t\t\t$originalDiv.find('.message')\n\t\t\t\t\t.text(t('core', 'read-only'))\n\t\t\t}\n\t\t}\n\n\t\tconst dialogName = 'oc-dialog-fileexists-content'\n\t\tconst dialogId = '#' + dialogName\n\t\tif (this._fileexistsshown) {\n\t\t\t// add conflict\n\n\t\t\tconst $conflicts = $(dialogId + ' .conflicts')\n\t\t\taddConflict($conflicts, original, replacement)\n\n\t\t\tconst count = $(dialogId + ' .conflict').length\n\t\t\tconst title = n(\n\t\t\t\t'core',\n\t\t\t\t'{count} file conflict',\n\t\t\t\t'{count} file conflicts',\n\t\t\t\tcount,\n\t\t\t\t{ count },\n\t\t\t)\n\t\t\t$(dialogId).parent().children('.oc-dialog-title').text(title)\n\n\t\t\t// recalculate dimensions\n\t\t\t$(window).trigger('resize')\n\t\t\tdialogDeferred.resolve()\n\t\t} else {\n\t\t\t// create dialog\n\t\t\tthis._fileexistsshown = true\n\t\t\t$.when(this._getFileExistsTemplate()).then(function($tmpl) {\n\t\t\t\tconst title = t('core', 'One file conflict')\n\t\t\t\tconst $dlg = $tmpl.octemplate({\n\t\t\t\t\tdialog_name: dialogName,\n\t\t\t\t\ttitle,\n\t\t\t\t\ttype: 'fileexists',\n\n\t\t\t\t\tallnewfiles: t('core', 'New Files'),\n\t\t\t\t\tallexistingfiles: t('core', 'Already existing files'),\n\n\t\t\t\t\twhy: t('core', 'Which files do you want to keep?'),\n\t\t\t\t\twhat: t('core', 'If you select both versions, the copied file will have a number added to its name.'),\n\t\t\t\t})\n\t\t\t\t$('body').append($dlg)\n\n\t\t\t\tif (original && replacement) {\n\t\t\t\t\tconst $conflicts = $dlg.find('.conflicts')\n\t\t\t\t\taddConflict($conflicts, original, replacement)\n\t\t\t\t}\n\n\t\t\t\tconst buttonlist = [{\n\t\t\t\t\ttext: t('core', 'Cancel'),\n\t\t\t\t\tclasses: 'cancel',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onCancel !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onCancel(data)\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttext: t('core', 'Continue'),\n\t\t\t\t\tclasses: 'continue',\n\t\t\t\t\tclick: function() {\n\t\t\t\t\t\tif (typeof controller.onContinue !== 'undefined') {\n\t\t\t\t\t\t\tcontroller.onContinue($(dialogId + ' .conflict'))\n\t\t\t\t\t\t}\n\t\t\t\t\t\t$(dialogId).ocdialog('close')\n\t\t\t\t\t},\n\t\t\t\t}]\n\n\t\t\t\t$(dialogId).ocdialog({\n\t\t\t\t\twidth: 500,\n\t\t\t\t\tcloseOnEscape: true,\n\t\t\t\t\tmodal: true,\n\t\t\t\t\tbuttons: buttonlist,\n\t\t\t\t\tcloseButton: null,\n\t\t\t\t\tclose: function() {\n\t\t\t\t\t\tself._fileexistsshown = false\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t$(this).ocdialog('destroy').remove()\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\t// ignore\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t})\n\n\t\t\t\t$(dialogId).css('height', 'auto')\n\n\t\t\t\tconst $primaryButton = $dlg.closest('.oc-dialog').find('button.continue')\n\t\t\t\t$primaryButton.prop('disabled', true)\n\n\t\t\t\t/**\n\t\t\t\t *\n\t\t\t\t */\n\t\t\t\tfunction updatePrimaryButton() {\n\t\t\t\t\tconst checkedCount = $dlg.find('.conflicts .checkbox:checked').length\n\t\t\t\t\t$primaryButton.prop('disabled', checkedCount === 0)\n\t\t\t\t}\n\n\t\t\t\t// add checkbox toggling actions\n\t\t\t\t$(dialogId).find('.allnewfiles').on('click', function() {\n\t\t\t\t\tconst $checkboxes = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.allexistingfiles').on('click', function() {\n\t\t\t\t\tconst $checkboxes = $(dialogId).find('.conflict .original:not(.readonly) input[type=\"checkbox\"]')\n\t\t\t\t\t$checkboxes.prop('checked', $(this).prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement,.original:not(.readonly)', function() {\n\t\t\t\t\tconst $checkbox = $(this).find('input[type=\"checkbox\"]')\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\t\t\t\t$(dialogId).find('.conflicts').on('click', '.replacement input[type=\"checkbox\"],.original:not(.readonly) input[type=\"checkbox\"]', function() {\n\t\t\t\t\tconst $checkbox = $(this)\n\t\t\t\t\t$checkbox.prop('checked', !$checkbox.prop('checked'))\n\t\t\t\t})\n\n\t\t\t\t// update counters\n\t\t\t\t$(dialogId).on('click', '.replacement,.allnewfiles', function() {\n\t\t\t\t\tconst count = $(dialogId).find('.conflict .replacement input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text(t('core', '({count} selected)', { count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allnewfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\t\t\t\t$(dialogId).on('click', '.original,.allexistingfiles', function() {\n\t\t\t\t\tconst count = $(dialogId).find('.conflict .original input[type=\"checkbox\"]:checked').length\n\t\t\t\t\tif (count === $(dialogId + ' .conflict').length) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', true)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text(t('core', '(all selected)'))\n\t\t\t\t\t} else if (count > 0) {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count')\n\t\t\t\t\t\t\t.text(t('core', '({count} selected)', { count }))\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles').prop('checked', false)\n\t\t\t\t\t\t$(dialogId).find('.allexistingfiles + .count').text('')\n\t\t\t\t\t}\n\t\t\t\t\tupdatePrimaryButton()\n\t\t\t\t})\n\n\t\t\t\tdialogDeferred.resolve()\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdialogDeferred.reject()\n\t\t\t\t\talert(t('core', 'Error loading file exists template'))\n\t\t\t\t})\n\t\t}\n\t\t// }\n\t\treturn dialogDeferred.promise()\n\t},\n\n\t_getFileExistsTemplate: function() {\n\t\tconst defer = $.Deferred()\n\t\tif (!this.$fileexistsTemplate) {\n\t\t\tconst self = this\n\t\t\t$.get(OC.filePath('core', 'templates/legacy', 'fileexists.html'), function(tmpl) {\n\t\t\t\tself.$fileexistsTemplate = $(tmpl)\n\t\t\t\tdefer.resolve(self.$fileexistsTemplate)\n\t\t\t})\n\t\t\t\t.fail(function() {\n\t\t\t\t\tdefer.reject()\n\t\t\t\t})\n\t\t} else {\n\t\t\tdefer.resolve(this.$fileexistsTemplate)\n\t\t}\n\t\treturn defer.promise()\n\t},\n}\n\nexport default Dialogs\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\n/**\n * Get the current CSRF token.\n */\nexport function getRequestToken() {\n return document.head.dataset.requesttoken;\n}\n/**\n * Set a new CSRF token (e.g. because of session refresh).\n * This also emits an event bus event for the updated token.\n *\n * @param token - The new token\n * @fires Error - If the passed token is not a potential valid token\n */\nexport function setRequestToken(token) {\n if (!token || typeof token !== 'string') {\n throw new Error('Invalid CSRF token given', { cause: { token } });\n }\n document.head.dataset.requesttoken = token;\n emit('csrf-token-update', { token });\n}\n/**\n * Fetch the request token from the API.\n * This does also set it on the current context, see `setRequestToken`.\n *\n * @fires Error - If the request failed\n */\nexport async function fetchRequestToken() {\n const url = generateUrl('/csrftoken');\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error('Could not fetch CSRF token from API', { cause: response });\n }\n const { token } = await response.json();\n setRequestToken(token);\n return token;\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2015 ownCloud, Inc.\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\nimport { getRequestToken } from './requesttoken.ts'\n\n/**\n * Create a new event source\n *\n * @param {string} src\n * @param {object} [data] to be send as GET\n *\n * @constructs OCEventSource\n */\nfunction OCEventSource(src, data) {\n\tlet dataStr = ''\n\tlet name\n\tlet joinChar\n\tthis.typelessListeners = []\n\tthis.closed = false\n\tthis.listeners = {}\n\tif (data) {\n\t\tfor (name in data) {\n\t\t\tdataStr += name + '=' + encodeURIComponent(data[name]) + '&'\n\t\t}\n\t}\n\tdataStr += 'requesttoken=' + encodeURIComponent(getRequestToken())\n\tif (!this.useFallBack && typeof EventSource !== 'undefined') {\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.source = new EventSource(src + joinChar + dataStr)\n\t\tthis.source.onmessage = function(e) {\n\t\t\tfor (let i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](JSON.parse(e.data))\n\t\t\t}\n\t\t}.bind(this)\n\t} else {\n\t\tconst iframeId = 'oc_eventsource_iframe_' + OCEventSource.iframeCount\n\t\tOCEventSource.fallBackSources[OCEventSource.iframeCount] = this\n\t\tthis.iframe = $('')\n\t\tthis.iframe.attr('id', iframeId)\n\t\tthis.iframe.hide()\n\n\t\tjoinChar = '&'\n\t\tif (src.indexOf('?') === -1) {\n\t\t\tjoinChar = '?'\n\t\t}\n\t\tthis.iframe.attr('src', src + joinChar + 'fallback=true&fallback_id=' + OCEventSource.iframeCount + '&' + dataStr)\n\t\t$('body').append(this.iframe)\n\t\tthis.useFallBack = true\n\t\tOCEventSource.iframeCount++\n\t}\n\t// add close listener\n\tthis.listen('__internal__', function(data) {\n\t\tif (data === 'close') {\n\t\t\tthis.close()\n\t\t}\n\t}.bind(this))\n}\nOCEventSource.fallBackSources = []\nOCEventSource.iframeCount = 0// number of fallback iframes\nOCEventSource.fallBackCallBack = function(id, type, data) {\n\tOCEventSource.fallBackSources[id].fallBackCallBack(type, data)\n}\nOCEventSource.prototype = {\n\ttypelessListeners: [],\n\tiframe: null,\n\tlisteners: {}, // only for fallback\n\tuseFallBack: false,\n\t/**\n\t * Fallback callback for browsers that don't have the\n\t * native EventSource object.\n\t *\n\t * Calls the registered listeners.\n\t *\n\t * @private\n\t * @param {string} type event type\n\t * @param {object} data received data\n\t */\n\tfallBackCallBack: function(type, data) {\n\t\tlet i\n\t\t// ignore messages that might appear after closing\n\t\tif (this.closed) {\n\t\t\treturn\n\t\t}\n\t\tif (type) {\n\t\t\tif (typeof this.listeners.done !== 'undefined') {\n\t\t\t\tfor (i = 0; i < this.listeners[type].length; i++) {\n\t\t\t\t\tthis.listeners[type][i](data)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor (i = 0; i < this.typelessListeners.length; i++) {\n\t\t\t\tthis.typelessListeners[i](data)\n\t\t\t}\n\t\t}\n\t},\n\tlastLength: 0, // for fallback\n\t/**\n\t * Listen to a given type of events.\n\t *\n\t * @param {string} type event type\n\t * @param {Function} callback event callback\n\t */\n\tlisten: function(type, callback) {\n\t\tif (callback && callback.call) {\n\t\t\tif (type) {\n\t\t\t\tif (this.useFallBack) {\n\t\t\t\t\tif (!this.listeners[type]) {\n\t\t\t\t\t\tthis.listeners[type] = []\n\t\t\t\t\t}\n\t\t\t\t\tthis.listeners[type].push(callback)\n\t\t\t\t} else {\n\t\t\t\t\tthis.source.addEventListener(type, function(e) {\n\t\t\t\t\t\tif (typeof e.data !== 'undefined') {\n\t\t\t\t\t\t\tcallback(JSON.parse(e.data))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcallback('')\n\t\t\t\t\t\t}\n\t\t\t\t\t}, false)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.typelessListeners.push(callback)\n\t\t\t}\n\t\t}\n\t},\n\t/**\n\t * Closes this event source.\n\t */\n\tclose: function() {\n\t\tthis.closed = true\n\t\tif (typeof this.source !== 'undefined') {\n\t\t\tthis.source.close()\n\t\t}\n\t},\n}\n\nexport default OCEventSource\n","/**\n * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors\n * SPDX-FileCopyrightText: 2014 ownCloud, Inc.\n * SPDX-FileCopyrightText: 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport {\n\tloadTranslations,\n\tregister,\n\ttranslate,\n\ttranslatePlural,\n\tunregister,\n} from '@nextcloud/l10n'\nimport Handlebars from 'handlebars'\n\n/**\n * L10N namespace with localization functions.\n *\n * @namespace OC.L10n\n * @deprecated 26.0.0 use https://www.npmjs.com/package/@nextcloud/l10n\n */\nconst L10n = {\n\n\t/**\n\t * Load an app's translation bundle if not loaded already.\n\t *\n\t * @deprecated 26.0.0 use `loadTranslations` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Function} callback callback to be called when\n\t * the translations are loaded\n\t * @return {Promise} promise\n\t */\n\tload: loadTranslations,\n\n\t/**\n\t * Register an app's translation bundle.\n\t *\n\t * @deprecated 26.0.0 use `register` from https://www.npmjs.com/package/@nextcloud/l10\n\t *\n\t * @param {string} appName name of the app\n\t * @param {Record} bundle bundle\n\t */\n\tregister,\n\n\t/**\n\t * @private\n\t * @deprecated 26.0.0 use `unregister` from https://www.npmjs.com/package/@nextcloud/l10n\n\t */\n\t_unregister: unregister,\n\n\t/**\n\t * Translate a string\n\t *\n\t * @deprecated 26.0.0 use `translate` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} text the string to translate\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {number} [count] number to replace %n with\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @param {boolean} [options.sanitize=true] enable/disable sanitization (by default enabled)\n\t * @return {string}\n\t */\n\ttranslate,\n\n\t/**\n\t * Translate a plural string\n\t *\n\t * @deprecated 26.0.0 use `translatePlural` from https://www.npmjs.com/package/@nextcloud/l10n\n\t *\n\t * @param {string} app the id of the app for which to translate the string\n\t * @param {string} textSingular the string to translate for exactly one object\n\t * @param {string} textPlural the string to translate for n objects\n\t * @param {number} count number to determine whether to use singular or plural\n\t * @param {object} [vars] map of placeholder key to value\n\t * @param {Array} [options] options array\n\t * @param {boolean} [options.escape=true] enable/disable auto escape of placeholders (by default enabled)\n\t * @return {string} Translated string\n\t */\n\ttranslatePlural,\n}\n\nexport default L10n\n\nHandlebars.registerHelper('t', function(app, text) {\n\treturn translate(app, text)\n})\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/** @typedef {import('jquery')} jQuery */\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport { menuSpeed } from './constants.js'\n\nexport let currentMenu = null\nexport let currentMenuToggle = null\n\n/**\n * For menu toggling\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n * @param {Function | undefined} toggle callback invoked everytime the menu is opened\n * @param {boolean} headerMenu is this a top right header menu?\n * @return {void}\n */\nexport function registerMenu($toggle, $menuEl, toggle, headerMenu) {\n\t$menuEl.addClass('menu')\n\tconst isClickableElement = $toggle.prop('tagName') === 'A' || $toggle.prop('tagName') === 'BUTTON'\n\n\t// On link and button, the enter key trigger a click event\n\t// Only use the click to avoid two fired events\n\t$toggle.on(isClickableElement ? 'click.menu' : 'click.menu keyup.menu', function(event) {\n\t\t// prevent the link event (append anchor to URL)\n\t\tevent.preventDefault()\n\n\t\t// allow enter key as a trigger\n\t\tif (event.key && event.key !== 'Enter') {\n\t\t\treturn\n\t\t}\n\n\t\tif ($menuEl.is(currentMenu)) {\n\t\t\thideMenus()\n\t\t\treturn\n\t\t} else if (currentMenu) {\n\t\t\t// another menu was open?\n\t\t\t// close it\n\t\t\thideMenus()\n\t\t}\n\n\t\tif (headerMenu === true) {\n\t\t\t$menuEl.parent().addClass('openedMenu')\n\t\t}\n\n\t\t// Set menu to expanded\n\t\t$toggle.attr('aria-expanded', true)\n\n\t\t$menuEl.slideToggle(menuSpeed, toggle)\n\t\tcurrentMenu = $menuEl\n\t\tcurrentMenuToggle = $toggle\n\t})\n}\n\n/**\n * Unregister a previously registered menu\n *\n * @param {jQuery} $toggle the toggle element\n * @param {jQuery} $menuEl the menu container element\n */\nexport function unregisterMenu($toggle, $menuEl) {\n\t// close menu if opened\n\tif ($menuEl.is(currentMenu)) {\n\t\thideMenus()\n\t}\n\t$toggle.off('click.menu').removeClass('menutoggle')\n\t$menuEl.removeClass('menu')\n}\n\n/**\n * Hides any open menus\n *\n * @param {Function} complete callback when the hiding animation is done\n */\nexport function hideMenus(complete) {\n\tif (currentMenu) {\n\t\tconst lastMenu = currentMenu\n\t\tcurrentMenu.trigger(new $.Event('beforeHide'))\n\t\tcurrentMenu.slideUp(menuSpeed, function() {\n\t\t\tlastMenu.trigger(new $.Event('afterHide'))\n\t\t\tif (complete) {\n\t\t\t\tcomplete.apply(this, arguments)\n\t\t\t}\n\t\t})\n\t}\n\n\t// Set menu to closed\n\t$('.menutoggle').attr('aria-expanded', false)\n\tif (currentMenuToggle) {\n\t\tcurrentMenuToggle.attr('aria-expanded', false)\n\t}\n\n\t$('.openedMenu').removeClass('openedMenu')\n\tcurrentMenu = null\n\tcurrentMenuToggle = null\n}\n\n/**\n * Shows a given element as menu\n *\n * @param {object} [$toggle] menu toggle\n * @param {object} $menuEl menu element\n * @param {Function} complete callback when the showing animation is done\n */\nexport function showMenu($toggle, $menuEl, complete) {\n\tif ($menuEl.is(currentMenu)) {\n\t\treturn\n\t}\n\thideMenus()\n\tcurrentMenu = $menuEl\n\tcurrentMenuToggle = $toggle\n\t$menuEl.trigger(new $.Event('beforeShow'))\n\t$menuEl.show()\n\t$menuEl.trigger(new $.Event('afterShow'))\n\t// no animation\n\tif (_.isFunction(complete)) {\n\t\tcomplete()\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const coreApps = ['', 'admin', 'log', 'core/search', 'core', '3rdparty']\nexport const menuSpeed = 50\nexport const PERMISSION_NONE = 0\nexport const PERMISSION_CREATE = 4\nexport const PERMISSION_READ = 1\nexport const PERMISSION_UPDATE = 2\nexport const PERMISSION_DELETE = 8\nexport const PERMISSION_SHARE = 16\nexport const PERMISSION_ALL = 31\nexport const TAG_FAVORITE = '_$!!$_'\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\n\nconst iconCache = new Map()\n\n/**\n * Return the url to icon of the given mimeType\n *\n * @param {string} mimeType The mimeType to get the icon for\n * @return {string} Url to the icon for mimeType\n */\nexport function getIconUrl(mimeType) {\n\tif (typeof mimeType === 'undefined') {\n\t\treturn undefined\n\t}\n\n\twhile (mimeType in window.OC.MimeTypeList.aliases) {\n\t\tmimeType = window.OC.MimeTypeList.aliases[mimeType]\n\t}\n\n\tif (!iconCache.has(mimeType)) {\n\t\tlet gotIcon = false\n\t\tlet path = ''\n\t\t// First try to get the correct icon from the current legacy-theme\n\t\tif (OC.theme.folder !== '' && Array.isArray(OC.MimeTypeList.themes[OC.theme.folder])) {\n\t\t\tpath = getRootUrl() + '/themes/' + window.OC.theme.folder + '/core/img/filetypes/'\n\t\t\tconst icon = getMimeTypeIcon(mimeType, window.OC.MimeTypeList.themes[OC.theme.folder])\n\t\t\tif (icon) {\n\t\t\t\tgotIcon = true\n\t\t\t\tpath += icon + '.svg'\n\t\t\t}\n\t\t}\n\n\t\t// theming is always enabled since Nextcloud 20 so we get it from that\n\t\tif (!gotIcon) {\n\t\t\tpath = generateUrl('/apps/theming/img/core/filetypes/' + getMimeTypeIcon(mimeType, window.OC.MimeTypeList.files) + '.svg')\n\t\t}\n\n\t\tpath += '?v=' + window.OCA.Theming.cacheBuster\n\t\t// Cache the result\n\t\ticonCache.set(mimeType, path)\n\t}\n\n\treturn iconCache.get(mimeType)\n}\n\n/**\n * Return the file icon we want to use for the given mimeType.\n * The file needs to be present in the supplied file list\n *\n * @param {string} mimeType The mimeType we want an icon for\n * @param {string[]} files The available icons in this theme\n * @return {string | null} The icon to use or null if there is no match\n */\nfunction getMimeTypeIcon(mimeType, files) {\n\tconst icon = mimeType.replace(new RegExp('/', 'g'), '-')\n\n\t// Generate path\n\tif (mimeType === 'dir' && files.includes('folder')) {\n\t\treturn 'folder'\n\t} else if (mimeType === 'dir-encrypted' && files.includes('folder-encrypted')) {\n\t\treturn 'folder-encrypted'\n\t} else if (mimeType === 'dir-shared' && files.includes('folder-shared')) {\n\t\treturn 'folder-shared'\n\t} else if (mimeType === 'dir-public' && files.includes('folder-public')) {\n\t\treturn 'folder-public'\n\t} else if ((mimeType === 'dir-external' || mimeType === 'dir-external-root') && files.includes('folder-external')) {\n\t\treturn 'folder-external'\n\t} else if (files.includes(icon)) {\n\t\treturn icon\n\t} else if (files.includes(icon.split('-')[0])) {\n\t\treturn icon.split('-')[0]\n\t} else if (files.includes('file')) {\n\t\treturn 'file'\n\t}\n\n\treturn null\n}\n\n/**\n * Clear the icon cache\n */\nexport function clearIconCache() {\n\ticonCache.clear()\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport $ from 'jquery'\n\n/**\n * A little class to manage a status field for a \"saving\" process.\n * It can be used to display a starting message (e.g. \"Saving...\") and then\n * replace it with a green success message or a red error message.\n *\n * @namespace OC.msg\n */\nexport default {\n\t/**\n\t * Displayes a \"Saving...\" message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t */\n\tstartSaving(selector) {\n\t\tthis.startAction(selector, t('core', 'Saving …'))\n\t},\n\n\t/**\n\t * Displayes a custom message in the given message placeholder\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text message to display (no HTML allowed)\n\t */\n\tstartAction(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.removeClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedSaving(selector, response) {\n\t\tthis.finishedAction(selector, response)\n\t},\n\n\t/**\n\t * Displayes an success/error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {object} response Response of the server\n\t * @param {object} response.data Data of the servers response\n\t * @param {string} response.data.message Plain text message to display (no HTML allowed)\n\t * @param {string} response.status is being used to decide whether the message\n\t * is displayed as an error/success\n\t */\n\tfinishedAction(selector, response) {\n\t\tif (response.status === 'success') {\n\t\t\tthis.finishedSuccess(selector, response.data.message)\n\t\t} else {\n\t\t\tthis.finishedError(selector, response.data.message)\n\t\t}\n\t},\n\n\t/**\n\t * Displayes an success message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text success message to display (no HTML allowed)\n\t */\n\tfinishedSuccess(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('success')\n\t\t\t.removeClass('error')\n\t\t\t.stop(true, true)\n\t\t\t.delay(3000)\n\t\t\t.fadeOut(900)\n\t\t\t.show()\n\t},\n\n\t/**\n\t * Displayes an error message in the given selector\n\t *\n\t * @param {object} selector Placeholder to display the message in\n\t * @param {string} message Plain text error message to display (no HTML allowed)\n\t */\n\tfinishedError(selector, message) {\n\t\t$(selector).text(message)\n\t\t\t.addClass('error')\n\t\t\t.removeClass('success')\n\t\t\t.show()\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showMessage, TOAST_DEFAULT_TIMEOUT, TOAST_PERMANENT_TIMEOUT } from '@nextcloud/dialogs'\nimport $ from 'jquery'\nimport _ from 'underscore'\nimport logger from '../logger.js'\n\n/** @typedef {import('jquery')} jQuery */\n\n/**\n * @todo Write documentation\n * @deprecated 17.0.0 use the `@nextcloud/dialogs` package instead\n * @namespace OC.Notification\n */\nexport default {\n\n\tupdatableNotification: null,\n\n\tgetDefaultNotificationFunction: null,\n\n\t/**\n\t * @param {Function} callback callback function\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tsetDefault(callback) {\n\t\tthis.getDefaultNotificationFunction = callback\n\t},\n\n\t/**\n\t * Hides a notification.\n\t *\n\t * If a row is given, only hide that one.\n\t * If no row is given, hide all notifications.\n\t *\n\t * @param {jQuery} [$row] notification row\n\t * @param {Function} [callback] callback\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\thide($row, callback) {\n\t\tif (_.isFunction($row)) {\n\t\t\t// first arg is the callback\n\t\t\tcallback = $row\n\t\t\t$row = undefined\n\t\t}\n\n\t\tif (!$row) {\n\t\t\tlogger.error('Missing argument $row in OC.Notification.hide() call, caller needs to be adjusted to only dismiss its own notification')\n\t\t\treturn\n\t\t}\n\n\t\t// remove the row directly\n\t\t$row.each(function() {\n\t\t\tif ($(this)[0].toastify) {\n\t\t\t\t$(this)[0].toastify.hideToast()\n\t\t\t} else {\n\t\t\t\tlogger.error('cannot hide toast because object is not set')\n\t\t\t}\n\t\t\tif (this === this.updatableNotification) {\n\t\t\t\tthis.updatableNotification = null\n\t\t\t}\n\t\t})\n\t\tif (callback) {\n\t\t\tcallback.call()\n\t\t}\n\t\tif (this.getDefaultNotificationFunction) {\n\t\t\tthis.getDefaultNotificationFunction()\n\t\t}\n\t},\n\n\t/**\n\t * Shows a notification as HTML without being sanitized before.\n\t * If you pass unsanitized user input this may lead to a XSS vulnerability.\n\t * Consider using show() instead of showHTML()\n\t *\n\t * @param {string} html Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowHtml(html, options) {\n\t\toptions = options || {}\n\t\toptions.isHTML = true\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(html, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Shows a sanitized notification\n\t *\n\t * @param {string} text Message to display\n\t * @param {object} [options] options\n\t * @param {string} [options.type] notification type\n\t * @param {number} [options.timeout] timeout value, defaults to 0 (permanent)\n\t * @return {jQuery} jQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshow(text, options) {\n\t\tconst escapeHTML = function(text) {\n\t\t\treturn text.toString()\n\t\t\t\t.split('&').join('&')\n\t\t\t\t.split('<').join('<')\n\t\t\t\t.split('>').join('>')\n\t\t\t\t.split('\"').join('"')\n\t\t\t\t.split('\\'').join(''')\n\t\t}\n\n\t\toptions = options || {}\n\t\toptions.timeout = (!options.timeout) ? TOAST_PERMANENT_TIMEOUT : options.timeout\n\t\tconst toast = showMessage(escapeHTML(text), options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Updates (replaces) a sanitized notification.\n\t *\n\t * @param {string} text Message to display\n\t * @return {jQuery} JQuery element for notification row\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowUpdate(text) {\n\t\tif (this.updatableNotification) {\n\t\t\tthis.updatableNotification.hideToast()\n\t\t}\n\t\tthis.updatableNotification = showMessage(text, { timeout: TOAST_PERMANENT_TIMEOUT })\n\t\tthis.updatableNotification.toastElement.toastify = this.updatableNotification\n\t\treturn $(this.updatableNotification.toastElement)\n\t},\n\n\t/**\n\t * Shows a notification that disappears after x seconds, default is\n\t * 7 seconds\n\t *\n\t * @param {string} text Message to show\n\t * @param {Array} [options] options array\n\t * @param {number} [options.timeout] timeout in seconds, if this is 0 it will show the message permanently\n\t * @param {boolean} [options.isHTML] an indicator for HTML notifications (true) or text (false)\n\t * @param {string} [options.type] notification type\n\t * @return {jQuery} the toast element\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tshowTemporary(text, options) {\n\t\toptions = options || {}\n\t\toptions.timeout = options.timeout || TOAST_DEFAULT_TIMEOUT\n\t\tconst toast = showMessage(text, options)\n\t\ttoast.toastElement.toastify = toast\n\t\treturn $(toast.toastElement)\n\t},\n\n\t/**\n\t * Returns whether a notification is hidden.\n\t *\n\t * @return {boolean}\n\t * @deprecated 17.0.0 use the `@nextcloud/dialogs` package\n\t */\n\tisHidden() {\n\t\treturn !$('#content').find('.toastify').length\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { confirmPassword, isPasswordConfirmationRequired } from '@nextcloud/password-confirmation'\n\n/**\n * @namespace OC.PasswordConfirmation\n */\nexport default {\n\n\t/**\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequiresPasswordConfirmation() {\n\t\treturn isPasswordConfirmationRequired()\n\t},\n\n\t/**\n\t * @param {Function} callback success callback function\n\t * @param {object} options options currently not used by confirmPassword\n\t * @param {Function} rejectCallback error callback function\n\t *\n\t * @deprecated 28.0.0 use methods from '@nextcloud/password-confirmation'\n\t */\n\trequirePasswordConfirmation(callback, options, rejectCallback) {\n\t\tconfirmPassword().then(callback, rejectCallback)\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\n\t/**\n\t * @type {Array.}\n\t */\n\t_plugins: {},\n\n\t/**\n\t * Register plugin\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @param {OC.Plugin} plugin plugin\n\t */\n\tregister(targetName, plugin) {\n\t\tlet plugins = this._plugins[targetName]\n\t\tif (!plugins) {\n\t\t\tplugins = this._plugins[targetName] = []\n\t\t}\n\t\tplugins.push(plugin)\n\t},\n\n\t/**\n\t * Returns all plugin registered to the given target\n\t * name / app name / class name.\n\t *\n\t * @param {string} targetName app name / class name to hook into\n\t * @return {Array.} array of plugins\n\t */\n\tgetPlugins(targetName) {\n\t\treturn this._plugins[targetName] || []\n\t},\n\n\t/**\n\t * Call attach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tattach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].attach) {\n\t\t\t\tplugins[i].attach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n\t/**\n\t * Call detach() on all plugins registered to the given target name.\n\t *\n\t * @param {string} targetName app name / class name\n\t * @param {object} targetObject to be extended\n\t * @param {object} [options] options\n\t */\n\tdetach(targetName, targetObject, options) {\n\t\tconst plugins = this.getPlugins(targetName)\n\t\tfor (let i = 0; i < plugins.length; i++) {\n\t\t\tif (plugins[i].detach) {\n\t\t\t\tplugins[i].detach(targetObject, options)\n\t\t\t}\n\t\t}\n\t},\n\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const theme = window._theme || {}\n","import { l as logger, F as FileType } from \"./chunks/folder-QTYeAiOH.mjs\";\nimport { a, b, N, c, P } from \"./chunks/folder-QTYeAiOH.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"path\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n DefaultType2[\"DEFAULT\"] = \"default\";\n DefaultType2[\"HIDDEN\"] = \"hidden\";\n return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get title() {\n return this._action.title;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n get execBatch() {\n return this._action.execBatch;\n }\n get hotkey() {\n return this._action.hotkey;\n }\n get order() {\n return this._action.order;\n }\n get parent() {\n return this._action.parent;\n }\n get default() {\n return this._action.default;\n }\n get destructive() {\n return this._action.destructive;\n }\n get inline() {\n return this._action.inline;\n }\n get renderInline() {\n return this._action.renderInline;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"title\" in action && typeof action.title !== \"function\") {\n throw new Error(\"Invalid title function\");\n }\n if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n throw new Error(\"Invalid execBatch function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n throw new Error(\"Invalid destructive flag\");\n }\n if (\"parent\" in action && typeof action.parent !== \"string\") {\n throw new Error(\"Invalid parent\");\n }\n if (action.default && !Object.values(DefaultType).includes(action.default)) {\n throw new Error(\"Invalid default\");\n }\n if (\"inline\" in action && typeof action.inline !== \"function\") {\n throw new Error(\"Invalid inline function\");\n }\n if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n throw new Error(\"Invalid renderInline function\");\n }\n if (\"hotkey\" in action && action.hotkey !== void 0) {\n if (typeof action.hotkey !== \"object\") {\n throw new Error(\"Invalid hotkey configuration\");\n }\n if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n throw new Error(\"Missing or invalid hotkey key\");\n }\n if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n throw new Error(\"Missing or invalid hotkey description\");\n }\n }\n }\n}\nconst registerFileAction = function(action) {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n if (window._nc_fileactions.find((search) => search.id === action.id)) {\n logger.error(`FileAction ${action.id} already registered`, { action });\n return;\n }\n window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n if (typeof window._nc_fileactions === \"undefined\") {\n window._nc_fileactions = [];\n logger.debug(\"FileActions initialized\");\n }\n return window._nc_fileactions;\n};\nclass FileListAction {\n _action;\n constructor(action) {\n this.validateAction(action);\n this._action = action;\n }\n get id() {\n return this._action.id;\n }\n get displayName() {\n return this._action.displayName;\n }\n get iconSvgInline() {\n return this._action.iconSvgInline;\n }\n get order() {\n return this._action.order;\n }\n get enabled() {\n return this._action.enabled;\n }\n get exec() {\n return this._action.exec;\n }\n validateAction(action) {\n if (!action.id || typeof action.id !== \"string\") {\n throw new Error(\"Invalid id\");\n }\n if (!action.displayName || typeof action.displayName !== \"function\") {\n throw new Error(\"Invalid displayName function\");\n }\n if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n throw new Error(\"Invalid iconSvgInline function\");\n }\n if (\"order\" in action && typeof action.order !== \"number\") {\n throw new Error(\"Invalid order\");\n }\n if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n throw new Error(\"Invalid enabled function\");\n }\n if (!action.exec || typeof action.exec !== \"function\") {\n throw new Error(\"Invalid exec function\");\n }\n }\n}\nconst registerFileListAction = (action) => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n return;\n }\n window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n if (typeof window._nc_filelistactions === \"undefined\") {\n window._nc_filelistactions = [];\n }\n return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n if (hasRequiredDebug) return debug_1;\n hasRequiredDebug = 1;\n const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n };\n debug_1 = debug;\n return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n if (hasRequiredConstants) return constants;\n hasRequiredConstants = 1;\n const SEMVER_SPEC_VERSION = \"2.0.0\";\n const MAX_LENGTH = 256;\n const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n 9007199254740991;\n const MAX_SAFE_COMPONENT_LENGTH = 16;\n const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n const RELEASE_TYPES = [\n \"major\",\n \"premajor\",\n \"minor\",\n \"preminor\",\n \"patch\",\n \"prepatch\",\n \"prerelease\"\n ];\n constants = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 1,\n FLAG_LOOSE: 2\n };\n return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n if (hasRequiredRe) return re.exports;\n hasRequiredRe = 1;\n (function(module, exports) {\n const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH\n } = requireConstants();\n const debug = requireDebug();\n exports = module.exports = {};\n const re2 = exports.re = [];\n const safeRe = exports.safeRe = [];\n const src = exports.src = [];\n const safeSrc = exports.safeSrc = [];\n const t = exports.t = {};\n let R = 0;\n const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n const safeRegexReplacements = [\n [\"\\\\s\", 1],\n [\"\\\\d\", MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n ];\n const makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n }\n return value;\n };\n const createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value);\n const index = R++;\n debug(name, index, value);\n t[name] = index;\n src[index] = value;\n safeSrc[index] = safe;\n re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n };\n createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n createToken(\"MAINVERSION\", `(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})\\\\.(${src[t.NUMERICIDENTIFIER]})`);\n createToken(\"MAINVERSIONLOOSE\", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);\n createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);\n createToken(\"PRERELEASE\", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`);\n createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);\n createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n createToken(\"BUILD\", `(?:\\\\+(${src[t.BUILDIDENTIFIER]}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`);\n createToken(\"FULLPLAIN\", `v?${src[t.MAINVERSION]}${src[t.PRERELEASE]}?${src[t.BUILD]}?`);\n createToken(\"FULL\", `^${src[t.FULLPLAIN]}$`);\n createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]}${src[t.PRERELEASELOOSE]}?${src[t.BUILD]}?`);\n createToken(\"LOOSE\", `^${src[t.LOOSEPLAIN]}$`);\n createToken(\"GTLT\", \"((?:<|>)?=?)\");\n createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n createToken(\"XRANGEIDENTIFIER\", `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:\\\\.(${src[t.XRANGEIDENTIFIER]})(?:${src[t.PRERELEASE]})?${src[t.BUILD]}?)?)?`);\n createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);\n createToken(\"XRANGE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`);\n createToken(\"XRANGELOOSE\", `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n createToken(\"COERCE\", `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`);\n createToken(\"COERCEFULL\", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\\\d])`);\n createToken(\"COERCERTL\", src[t.COERCE], true);\n createToken(\"COERCERTLFULL\", src[t.COERCEFULL], true);\n createToken(\"LONETILDE\", \"(?:~>?)\");\n createToken(\"TILDETRIM\", `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true);\n exports.tildeTrimReplace = \"$1~\";\n createToken(\"TILDE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`);\n createToken(\"TILDELOOSE\", `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"LONECARET\", \"(?:\\\\^)\");\n createToken(\"CARETTRIM\", `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true);\n exports.caretTrimReplace = \"$1^\";\n createToken(\"CARET\", `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`);\n createToken(\"CARETLOOSE\", `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`);\n createToken(\"COMPARATORLOOSE\", `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`);\n createToken(\"COMPARATOR\", `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`);\n createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true);\n exports.comparatorTrimReplace = \"$1$2$3\";\n createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t.XRANGEPLAIN]})\\\\s*$`);\n createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t.XRANGEPLAINLOOSE]})\\\\s*$`);\n createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n })(re, re.exports);\n return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n if (hasRequiredParseOptions) return parseOptions_1;\n hasRequiredParseOptions = 1;\n const looseOption = Object.freeze({ loose: true });\n const emptyOpts = Object.freeze({});\n const parseOptions = (options) => {\n if (!options) {\n return emptyOpts;\n }\n if (typeof options !== \"object\") {\n return looseOption;\n }\n return options;\n };\n parseOptions_1 = parseOptions;\n return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n if (hasRequiredIdentifiers) return identifiers;\n hasRequiredIdentifiers = 1;\n const numeric = /^[0-9]+$/;\n const compareIdentifiers = (a2, b2) => {\n if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n }\n const anum = numeric.test(a2);\n const bnum = numeric.test(b2);\n if (anum && bnum) {\n a2 = +a2;\n b2 = +b2;\n }\n return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n };\n const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n identifiers = {\n compareIdentifiers,\n rcompareIdentifiers\n };\n return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n if (hasRequiredSemver) return semver;\n hasRequiredSemver = 1;\n const debug = requireDebug();\n const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n const { safeRe: re2, t } = requireRe();\n const parseOptions = requireParseOptions();\n const { compareIdentifiers } = requireIdentifiers();\n class SemVer {\n constructor(version, options) {\n options = parseOptions(options);\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n return version;\n } else {\n version = version.version;\n }\n } else if (typeof version !== \"string\") {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n }\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n );\n }\n debug(\"SemVer\", version, options);\n this.options = options;\n this.loose = !!options.loose;\n this.includePrerelease = !!options.includePrerelease;\n const m = version.trim().match(options.loose ? re2[t.LOOSE] : re2[t.FULL]);\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`);\n }\n this.raw = version;\n this.major = +m[1];\n this.minor = +m[2];\n this.patch = +m[3];\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError(\"Invalid major version\");\n }\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError(\"Invalid minor version\");\n }\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError(\"Invalid patch version\");\n }\n if (!m[4]) {\n this.prerelease = [];\n } else {\n this.prerelease = m[4].split(\".\").map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id;\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num;\n }\n }\n return id;\n });\n }\n this.build = m[5] ? m[5].split(\".\") : [];\n this.format();\n }\n format() {\n this.version = `${this.major}.${this.minor}.${this.patch}`;\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join(\".\")}`;\n }\n return this.version;\n }\n toString() {\n return this.version;\n }\n compare(other) {\n debug(\"SemVer.compare\", this.version, this.options, other);\n if (!(other instanceof SemVer)) {\n if (typeof other === \"string\" && other === this.version) {\n return 0;\n }\n other = new SemVer(other, this.options);\n }\n if (other.version === this.version) {\n return 0;\n }\n return this.compareMain(other) || this.comparePre(other);\n }\n compareMain(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.major < other.major) {\n return -1;\n }\n if (this.major > other.major) {\n return 1;\n }\n if (this.minor < other.minor) {\n return -1;\n }\n if (this.minor > other.minor) {\n return 1;\n }\n if (this.patch < other.patch) {\n return -1;\n }\n if (this.patch > other.patch) {\n return 1;\n }\n return 0;\n }\n comparePre(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n if (this.prerelease.length && !other.prerelease.length) {\n return -1;\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1;\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0;\n }\n let i = 0;\n do {\n const a2 = this.prerelease[i];\n const b2 = other.prerelease[i];\n debug(\"prerelease compare\", i, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i);\n }\n compareBuild(other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options);\n }\n let i = 0;\n do {\n const a2 = this.build[i];\n const b2 = other.build[i];\n debug(\"build compare\", i, a2, b2);\n if (a2 === void 0 && b2 === void 0) {\n return 0;\n } else if (b2 === void 0) {\n return 1;\n } else if (a2 === void 0) {\n return -1;\n } else if (a2 === b2) {\n continue;\n } else {\n return compareIdentifiers(a2, b2);\n }\n } while (++i);\n }\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc(release, identifier, identifierBase) {\n if (release.startsWith(\"pre\")) {\n if (!identifier && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier is empty\");\n }\n if (identifier) {\n const match = `-${identifier}`.match(this.options.loose ? re2[t.PRERELEASELOOSE] : re2[t.PRERELEASE]);\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`);\n }\n }\n }\n switch (release) {\n case \"premajor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor = 0;\n this.major++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"preminor\":\n this.prerelease.length = 0;\n this.patch = 0;\n this.minor++;\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"prepatch\":\n this.prerelease.length = 0;\n this.inc(\"patch\", identifier, identifierBase);\n this.inc(\"pre\", identifier, identifierBase);\n break;\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case \"prerelease\":\n if (this.prerelease.length === 0) {\n this.inc(\"patch\", identifier, identifierBase);\n }\n this.inc(\"pre\", identifier, identifierBase);\n break;\n case \"release\":\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`);\n }\n this.prerelease.length = 0;\n break;\n case \"major\":\n if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n this.major++;\n }\n this.minor = 0;\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"minor\":\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++;\n }\n this.patch = 0;\n this.prerelease = [];\n break;\n case \"patch\":\n if (this.prerelease.length === 0) {\n this.patch++;\n }\n this.prerelease = [];\n break;\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case \"pre\": {\n const base = Number(identifierBase) ? 1 : 0;\n if (this.prerelease.length === 0) {\n this.prerelease = [base];\n } else {\n let i = this.prerelease.length;\n while (--i >= 0) {\n if (typeof this.prerelease[i] === \"number\") {\n this.prerelease[i]++;\n i = -2;\n }\n }\n if (i === -1) {\n if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n throw new Error(\"invalid increment argument: identifier already exists\");\n }\n this.prerelease.push(base);\n }\n }\n if (identifier) {\n let prerelease = [identifier, base];\n if (identifierBase === false) {\n prerelease = [identifier];\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease;\n }\n } else {\n this.prerelease = prerelease;\n }\n }\n break;\n }\n default:\n throw new Error(`invalid increment argument: ${release}`);\n }\n this.raw = this.format();\n if (this.build.length) {\n this.raw += `+${this.build.join(\".\")}`;\n }\n return this;\n }\n }\n semver = SemVer;\n return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n if (hasRequiredMajor) return major_1;\n hasRequiredMajor = 1;\n const SemVer = requireSemver();\n const major2 = (a2, loose) => new SemVer(a2, loose).major;\n major_1 = major2;\n return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n if (hasRequiredParse) return parse_1;\n hasRequiredParse = 1;\n const SemVer = requireSemver();\n const parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version;\n }\n try {\n return new SemVer(version, options);\n } catch (er) {\n if (!throwErrors) {\n return null;\n }\n throw er;\n }\n };\n parse_1 = parse;\n return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n if (hasRequiredValid) return valid_1;\n hasRequiredValid = 1;\n const parse = requireParse();\n const valid2 = (version, options) => {\n const v = parse(version, options);\n return v ? v.version : null;\n };\n valid_1 = valid2;\n return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n bus;\n constructor(bus2) {\n if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n console.warn(\"Proxying an event bus with an unknown or invalid version\");\n } else if (major(bus2.getVersion()) !== major(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.3\";\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}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n handlers = /* @__PURE__ */ new Map();\n getVersion() {\n return \"3.3.3\";\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}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\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 emit(name, ...event) {\n getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n id;\n order;\n constructor(id, order = 100) {\n super();\n this.id = id;\n this.order = order;\n }\n filter(nodes) {\n throw new Error(\"Not implemented\");\n }\n updateChips(chips) {\n this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n }\n filterUpdated() {\n this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n }\n}\nfunction registerFileListFilter(filter) {\n if (!window._nc_filelist_filters) {\n window._nc_filelist_filters = /* @__PURE__ */ new Map();\n }\n if (window._nc_filelist_filters.has(filter.id)) {\n throw new Error(`File list filter \"${filter.id}\" already registered`);\n }\n window._nc_filelist_filters.set(filter.id, filter);\n emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n window._nc_filelist_filters.delete(filterId);\n emit(\"files:filter:removed\", filterId);\n }\n}\nfunction getFileListFilters() {\n if (!window._nc_filelist_filters) {\n return [];\n }\n return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n _header;\n constructor(header) {\n this.validateHeader(header);\n this._header = header;\n }\n get id() {\n return this._header.id;\n }\n get order() {\n return this._header.order;\n }\n get enabled() {\n return this._header.enabled;\n }\n get render() {\n return this._header.render;\n }\n get updated() {\n return this._header.updated;\n }\n validateHeader(header) {\n if (!header.id || !header.render || !header.updated) {\n throw new Error(\"Invalid header: id, render and updated are required\");\n }\n if (typeof header.id !== \"string\") {\n throw new Error(\"Invalid id property\");\n }\n if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n throw new Error(\"Invalid enabled property\");\n }\n if (header.render && typeof header.render !== \"function\") {\n throw new Error(\"Invalid render property\");\n }\n if (header.updated && typeof header.updated !== \"function\") {\n throw new Error(\"Invalid updated property\");\n }\n }\n}\nconst registerFileListHeaders = function(header) {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n logger.error(`Header ${header.id} already registered`, { header });\n return;\n }\n window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n if (typeof window._nc_filelistheader === \"undefined\") {\n window._nc_filelistheader = [];\n logger.debug(\"FileListHeaders initialized\");\n }\n return window._nc_filelistheader;\n};\nclass Navigation extends TypedEventTarget {\n _views = [];\n _currentView = null;\n /**\n * Register a new view on the navigation\n * @param view The view to register\n * @throws `Error` is thrown if a view with the same id is already registered\n */\n register(view) {\n if (this._views.find((search) => search.id === view.id)) {\n throw new Error(`View id ${view.id} is already registered`);\n }\n this._views.push(view);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n /**\n * Remove a registered view\n * @param id The id of the view to remove\n */\n remove(id) {\n const index = this._views.findIndex((view) => view.id === id);\n if (index !== -1) {\n this._views.splice(index, 1);\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n }\n }\n /**\n * Set the currently active view\n * @fires UpdateActiveViewEvent\n * @param view New active view\n */\n setActive(view) {\n this._currentView = view;\n const event = new CustomEvent(\"updateActive\", { detail: view });\n this.dispatchTypedEvent(\"updateActive\", event);\n }\n /**\n * The currently active files view\n */\n get active() {\n return this._currentView;\n }\n /**\n * All registered views\n */\n get views() {\n return this._views;\n }\n}\nconst getNavigation = function() {\n if (typeof window._nc_navigation === \"undefined\") {\n window._nc_navigation = new Navigation();\n logger.debug(\"Navigation service initialized\");\n }\n return window._nc_navigation;\n};\nclass Column {\n _column;\n constructor(column) {\n isValidColumn(column);\n this._column = column;\n }\n get id() {\n return this._column.id;\n }\n get title() {\n return this._column.title;\n }\n get render() {\n return this._column.render;\n }\n get sort() {\n return this._column.sort;\n }\n get summary() {\n return this._column.summary;\n }\n}\nconst isValidColumn = function(column) {\n if (!column.id || typeof column.id !== \"string\") {\n throw new Error(\"A column id is required\");\n }\n if (!column.title || typeof column.title !== \"string\") {\n throw new Error(\"A column title is required\");\n }\n if (!column.render || typeof column.render !== \"function\") {\n throw new Error(\"A render function is required\");\n }\n if (column.sort && typeof column.sort !== \"function\") {\n throw new Error(\"Column sortFunction must be a function\");\n }\n if (column.summary && typeof column.summary !== \"function\") {\n throw new Error(\"Column summary must be a function\");\n }\n return true;\n};\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n if (hasRequiredSax) return sax$1;\n hasRequiredSax = 1;\n (function(exports) {\n (function(sax2) {\n sax2.parser = function(strict, opt) {\n return new SAXParser(strict, opt);\n };\n sax2.SAXParser = SAXParser;\n sax2.SAXStream = SAXStream;\n sax2.createStream = createStream;\n sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n var buffers = [\n \"comment\",\n \"sgmlDecl\",\n \"textNode\",\n \"tagName\",\n \"doctype\",\n \"procInstName\",\n \"procInstBody\",\n \"entity\",\n \"attribName\",\n \"attribValue\",\n \"cdata\",\n \"script\"\n ];\n sax2.EVENTS = [\n \"text\",\n \"processinginstruction\",\n \"sgmldeclaration\",\n \"doctype\",\n \"comment\",\n \"opentagstart\",\n \"attribute\",\n \"opentag\",\n \"closetag\",\n \"opencdata\",\n \"cdata\",\n \"closecdata\",\n \"error\",\n \"end\",\n \"ready\",\n \"script\",\n \"opennamespace\",\n \"closenamespace\"\n ];\n function SAXParser(strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt);\n }\n var parser = this;\n clearBuffers(parser);\n parser.q = parser.c = \"\";\n parser.bufferCheckPosition = sax2.MAX_BUFFER_LENGTH;\n parser.opt = opt || {};\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\";\n parser.tags = [];\n parser.closed = parser.closedRoot = parser.sawRoot = false;\n parser.tag = parser.error = null;\n parser.strict = !!strict;\n parser.noscript = !!(strict || parser.opt.noscript);\n parser.state = S.BEGIN;\n parser.strictEntities = parser.opt.strictEntities;\n parser.ENTITIES = parser.strictEntities ? Object.create(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n parser.attribList = [];\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS);\n }\n if (parser.opt.unquotedAttributeValues === void 0) {\n parser.opt.unquotedAttributeValues = !strict;\n }\n parser.trackPosition = parser.opt.position !== false;\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0;\n }\n emit2(parser, \"onready\");\n }\n if (!Object.create) {\n Object.create = function(o) {\n function F() {\n }\n F.prototype = o;\n var newf = new F();\n return newf;\n };\n }\n if (!Object.keys) {\n Object.keys = function(o) {\n var a2 = [];\n for (var i in o) if (o.hasOwnProperty(i)) a2.push(i);\n return a2;\n };\n }\n function checkBufferLength(parser) {\n var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n var maxActual = 0;\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length;\n if (len > maxAllowed) {\n switch (buffers[i]) {\n case \"textNode\":\n closeText(parser);\n break;\n case \"cdata\":\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n break;\n case \"script\":\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n break;\n default:\n error(parser, \"Max buffer length exceeded: \" + buffers[i]);\n }\n }\n maxActual = Math.max(maxActual, len);\n }\n var m = sax2.MAX_BUFFER_LENGTH - maxActual;\n parser.bufferCheckPosition = m + parser.position;\n }\n function clearBuffers(parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = \"\";\n }\n }\n function flushBuffers(parser) {\n closeText(parser);\n if (parser.cdata !== \"\") {\n emitNode(parser, \"oncdata\", parser.cdata);\n parser.cdata = \"\";\n }\n if (parser.script !== \"\") {\n emitNode(parser, \"onscript\", parser.script);\n parser.script = \"\";\n }\n }\n SAXParser.prototype = {\n end: function() {\n end(this);\n },\n write,\n resume: function() {\n this.error = null;\n return this;\n },\n close: function() {\n return this.write(null);\n },\n flush: function() {\n flushBuffers(this);\n }\n };\n var Stream;\n try {\n Stream = require(\"stream\").Stream;\n } catch (ex) {\n Stream = function() {\n };\n }\n if (!Stream) Stream = function() {\n };\n var streamWraps = sax2.EVENTS.filter(function(ev) {\n return ev !== \"error\" && ev !== \"end\";\n });\n function createStream(strict, opt) {\n return new SAXStream(strict, opt);\n }\n function SAXStream(strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt);\n }\n Stream.apply(this);\n this._parser = new SAXParser(strict, opt);\n this.writable = true;\n this.readable = true;\n var me = this;\n this._parser.onend = function() {\n me.emit(\"end\");\n };\n this._parser.onerror = function(er) {\n me.emit(\"error\", er);\n me._parser.error = null;\n };\n this._decoder = null;\n streamWraps.forEach(function(ev) {\n Object.defineProperty(me, \"on\" + ev, {\n get: function() {\n return me._parser[\"on\" + ev];\n },\n set: function(h) {\n if (!h) {\n me.removeAllListeners(ev);\n me._parser[\"on\" + ev] = h;\n return h;\n }\n me.on(ev, h);\n },\n enumerable: true,\n configurable: false\n });\n });\n }\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n });\n SAXStream.prototype.write = function(data) {\n if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require$$1.StringDecoder;\n this._decoder = new SD(\"utf8\");\n }\n data = this._decoder.write(data);\n }\n this._parser.write(data.toString());\n this.emit(\"data\", data);\n return true;\n };\n SAXStream.prototype.end = function(chunk) {\n if (chunk && chunk.length) {\n this.write(chunk);\n }\n this._parser.end();\n return true;\n };\n SAXStream.prototype.on = function(ev, handler) {\n var me = this;\n if (!me._parser[\"on\" + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser[\"on\" + ev] = function() {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n args.splice(0, 0, ev);\n me.emit.apply(me, args);\n };\n }\n return Stream.prototype.on.call(me, ev, handler);\n };\n var CDATA = \"[CDATA[\";\n var DOCTYPE = \"DOCTYPE\";\n var XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\n var XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n function isWhitespace(c2) {\n return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n }\n function isQuote(c2) {\n return c2 === '\"' || c2 === \"'\";\n }\n function isAttribEnd(c2) {\n return c2 === \">\" || isWhitespace(c2);\n }\n function isMatch(regex, c2) {\n return regex.test(c2);\n }\n function notMatch(regex, c2) {\n return !isMatch(regex, c2);\n }\n var S = 0;\n sax2.STATE = {\n BEGIN: S++,\n // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++,\n // leading whitespace\n TEXT: S++,\n // general stuff\n TEXT_ENTITY: S++,\n // & and such.\n OPEN_WAKA: S++,\n // <\n SGML_DECL: S++,\n // \n SCRIPT: S++,\n //